55423 发表于 2015-10-9 08:25:19

zabbix 自定义discovery

自定义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
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/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}' | grep "$1\>" | awk '{print $2}'`"
;;
*)
echo "Error input:"
;;
esac
exit 0

页: [1]
查看完整版本: zabbix 自定义discovery