自定义discovery

1.通过脚本获取系统数据

2.把数据处理成joson格式的,自动监控的项目信息

3.获取自动监控的项目的数据

3.修改 agentd.conf的配置文件

UserParameter=process.discovery,/usr/local/zabbix/scripts/check_process.sh   //自动检测的项目,即定义key值

UserParameter=process.resource[*],/usr/local/zabbix/scripts/process_monitor.sh $1 $2    //获取数据

4.测试

zabbix_get -s 192.168.36.130 -k process.discovery  //必须为jison格式

zabbix_get -s 192.168.36.130 -k process.resource[tsg,mem]

5.在zabbix中配置自动发现

discovery---create discovery(key process.discovery)---item(key process.resource[{{#TABLENAME}},cpu])


check_process.sh 主要获取监控的项目名称

#!/bin/bash
pro_name=`ps -e -o 'comm,pcpu,rsz' | awk '{print $1}' | sort -u | awk -F".exe" '{print $1}'`
COUNT=`echo "$pro_name" |wc -l`
INDEX=0
echo {'"data"':[
    echo "$pro_name" | while read LINE;
        do
                echo -n '{"{#HOMEDNAME}":"'$LINE'"}'
                INDEX=`expr $INDEX + 1`
                if [ $INDEX -lt $COUNT ]; then
                    echo ","
                fi
        done
    echo ]}


process_monitor.sh 根据项目名称获取检测的数据

#!/bin/bash
process=$1
name=$2
case $2 in
mem)
echo "`ps -e -o 'comm,pcpu,rsz' | awk '{a[$1]+=$3}END{for(key in a) print key,a[key]/1024}' | grep "$1\>" | awk '{print $2}'`"
;;
cpu)
echo "`ps -e -o 'comm,pcpu,rsz' | awk '{a[$1]+=$2}END{for(key in a) print key,a[key]}' | grep "$1\>" | awk '{print $2}'`"
;;
*)
echo "Error input:"
;;
esac
exit 0


在process_monitor.sh脚本中获取mem时,通过处理得到的是M,在配置zabbix时需要如下处理

wKiom1YXM9uQKbUqAAFQ_YD-8FY551.jpg


自定义lld,然后使用zabbix默认的key进行数据监控

lld获取discovery key 如:check_process.sh 主要获取监控的项目名称

wKiom1Ycwd-wFh0DAAFWZcTvxK8641.jpg