zabbix3.4 low level discovery功能

zabbix3.4 low level discovery功能

业务需求:由于公司业务比较多,需要监控java项目进程,故使用了ZABBIX LLD 功能

1.在zabbix客户端上面添加相应获取进程以及项目名称的脚本

[root@UX206-CSP1 script]# cat /usr/local/script/zabbix_lld.sh 
#!/bin/bash
#user: pb
#low-level discovery


java() 
{
        port=(`sudo ss -anlp | awk -F"[ :]+" '/java/ {print $5}'`)
        max_port=$[${#port[@]}-1]
        #echo $max_port
        printf '{
'
        printf '	"data":['
        for key in ${!port[@]}
                do
                        java_pid=`sudo ss -anlp | grep ${port[$key]} | awk -F"[ :]+" '/java/ {print $9}' | awk -F "[(",]+" '{print $3}'`
                        JAVA_NAME=`sudo ps -ef | grep $java_pid | grep -v grep | awk -F "/usr/local/" '{print $3}' | cut -d '/' -f1`
                        printf '
		{
'
                        #printf ""{$JAVA_NAME}":"${port[$key]}"}"
                        printf "			"{#JAVANAME}":"${JAVA_NAME}","
                        printf '
'
                        printf "			"{#JAVAPORT}":${port[$key]}"
                        printf '
		}'
                        if [ $key -ne $max_port ]
                        then
                                printf ","
                        fi
        done
        printf '
	]'
        printf '
}'
}

case "$1" in
discovery)
        java;;
esac

 由于脚本中用到了 ss -anlp命令,获取结果时,是用zabbix用户在获取,故需要给zabbix相应的权限

[root@UX206-CSP1 script]# grep "zabbix" /etc/sudoers
#User_Alias ZABBIX=zabbix
zabbix  ALL=(root)      NOPASSWD:/bin/,/usr/bin/,/usr/sbin/

 执行脚本得到的结果为

[root@UX206-CSP1 script]# sudo -u zabbix ./zabbix_lld.sh discovery
{
        "data":[
                {
                        "{#JAVANAME}":"CSPAccountService",
                        "{#JAVAPORT}":30558
                },
                {
                        "{#JAVANAME}":"CSPMerchantAuthService",
                        "{#JAVAPORT}":30559
                },
                {
                        "{#JAVANAME}":"CSPTransactionService",
                        "{#JAVAPORT}":30560
                }
        ]
}

 就是以一个json格式打印的结果

2.zabbix客户端配置文件

UnsafeUserParameters=1
UserParameter=java.status,/usr/local/script/zabbix_lld.sh discovery

 配置自定义的key为java.status,重启zabbix客户端

3.从zabbix server端来取对应的值是否正常

[root@hk-vsan1-zabbix ~]# /usr/local/zabbix/bin/zabbix_get -s 10.20.209.11 -p 10050 -k "java.status"
{
        "data":[
                {
                        "{#JAVANAME}":"CSPAccountService",
                        "{#JAVAPORT}":30558
                },
                {
                        "{#JAVANAME}":"CSPMerchantAuthService",
                        "{#JAVAPORT}":30559
                },
                {
                        "{#JAVANAME}":"CSPTransactionService",
                        "{#JAVAPORT}":30560
                }
        ]
}

 4.配置zabbix server

新建模板

添加组以及哪些主机在这个模板下面

添加自动发现规则

添加监控项原型

添加触发器原型

到此,zabbix server端已经添加完成,查看监控的客户端机器

原文地址:https://www.cnblogs.com/jcici/p/10233260.html