花蜻宽 发表于 2019-1-18 08:54:17

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

  在process_monitor.sh脚本中获取mem时,通过处理得到的是M,在配置zabbix时需要如下处理
http://s3.运维网.com/wyfs02/M02/74/3F/wKiom1YXM9uQKbUqAAFQ_YD-8FY551.jpg
  自定义lld,然后使用zabbix默认的key进行数据监控
  lld获取discovery key 如:check_process.sh 主要获取监控的项目名称
http://s3.运维网.com/wyfs02/M01/74/6D/wKiom1Ycwd-wFh0DAAFWZcTvxK8641.jpg



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