自定義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 根據項目名稱擷取檢測的資料
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時需要如下處理
