1. 程式人生 > >zabbix自定義腳本做監控及自制模板初探

zabbix自定義腳本做監控及自制模板初探

zabbix自定義模板 zabbix自定義監控項 zabbix自定義腳本 zabbix-agent配置

一、說明

zabbix監控支持自定義腳本以及自制模板來擴展監控,換句話說就是對業務自定義監控;因此通過撰寫腳本完成自定義監控十分有必要;這裏的腳本既可以用shell也可以用python等語言;
另外自定義了腳本主要目的是獲取業務相關的監控數據;還需要結合zabbix web GUI上的模板才能生效;本文的目的就是基於之前的zabbix相關部署操作之後的補充!

任務:
通過撰寫腳本獲取tcp 的各種狀態,添加tcp狀態模板,添加觸發器;添加圖形;完整實現腳本自定義監控的整個步聚流程!

二、agent端配置

創建目錄存放自定義腳本

[root@node2 ~]# mkdir -pv /etc/zabbix/bin
[root@node2 ~]# chown zabbix.zabbix /etc/zabbix/bin

腳本內容

[root@node2 ~]# cat /etc/zabbix/bin/tcp.sh 
#!/bin/bash
tcp_conn_status(){
   TCP_STAT=$1
   ss -ant |awk ‘NR>1 {++s[$1]} END {for(k in s) print k,s[k]}‘ > /tmp/tcp_conns.txt
   TCP_NUM=$(grep "$TCP_STAT" /tmp/tcp_conns.txt | cut -d ‘ ‘ -f2)
   if [ -z $TCP_NUM ];then
      TCP_NUM=0
   fi
   echo $TCP_NUM
}

main(){
    case $1 in
    tcp_status)
    tcp_conn_status $2;
    ;;
esac
}

main $1 $2

配置zabbix-agentd.conf
執行自定義腳本獲取數據時;需要打開對應選項

[root@node2 ~]# egrep -v "(^#|^$)" /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
EnableRemoteCommands=1                #遠程執行命令的選項
Server=172.16.3.152
ServerActive=172.16.3.152
Hostname=node2.san.com
Include=/etc/zabbix/zabbix_agentd.d/*.conf      
UnsafeUserParameters=1                        #設置為1 表示允許用戶算定義key(監控項)

修改/etc/sudoers
由於zabbix server獲取數據是通過自定義腳本基於agent 代理執行獲取,因此需要修改sudo的配置以便執行
/etc/sudoers中添加如下內容並註釋如下行

#Defaults    requiretty                               #不需要tty終端即可執行命令
zabbix  ALL=(root)      NOPASSWD: /usr/sbin/ss

自定義key配置文件

[root@node2 ~]# cat /etc/zabbix/zabbix_agentd.d/tcp_conns.conf 
UserParameter=tcp_status[*],/bin/bash /etc/zabbix/bin/tcp.sh $1 $2 $3

說明:此處的tcp_status就是監控key或叫監控項名 後面的$1 $2 $3是對應的參數;
重啟zabbix-agent服務
[root@node2 ~]# systemctl restart zabbix-agent
可以通過zabbix server端的zabbix_get測試是否能獲取自定義監控項的數據

[root@zabbix ~]# zabbix_get -s 172.16.3.216 -p 10050 -k "tcp_status[tcp_status,ESTAB]"
2

以上已經可以獲取172.16.3.216上的自定義監控項tcp ESTAB的數據(2);至此通過腳本自定義監控項agent端的配置已經完成;

三、自定義模板使用

在agent端完成腳本和自定義的監控項配置後,zabbix server web GUI上需要創建對應的模板;其他的主機可以套用模板以獲取自定義數據;
創建模板:
配置-->模塊-->創建模板-->模板名稱 "TCP_CONN_STATUS" -->放入 Template組-->添加 如圖:
技術分享圖片

添加itme監控項
配置-->模塊-->TCP_CONN_STATUS -->監控項 -->創建監控項-->名稱 "TCP_CONN_ESTAB" -->鍵值"tcp_status[tcp_status,ESTAB]" -->應用集"TCP_CONN_STATUS" -->添加
如圖:
技術分享圖片
通過以上步聚依次創建
TCP_CONN_FIN-WAIT-1、TCP_CONN_LAST-ACK、 TCP_CONN_LISTEN 、TCP_CONN_SYN-RECV、TCP_CONN_TIME-WAIT監控項 最終監控項如圖:
技術分享圖片

創建觸發器:
創建一個ESTAB大於500時的觸發器~
配置-->模塊-->TCP_CONN_STATUS -->觸發器-->創建觸發器-->名稱"Too Many Tcp ESTAB" -->嚴重性"警告"-->表達式 通過選擇ESTAB的項 最後獲取大於500 即"{TCP_CONN_STATUS:tcp_status[tcp_status,ESTAB].last()}>500"
如圖:
技術分享圖片

創建圖形:
配置-->模塊-->TCP_CONN_STATUS -->圖形 -->創建圖形 -->名稱 "TCP_CONN_STATUS_Graph" -->選擇之前的監控項 -->添加 如圖:
技術分享圖片

至此一個自定義的監控模板制作完成!

關聯主機
配置-->主機-->node2.san.com -->模板 -->鏈接的模板 "添加自定義模板 TCP_CONN_STATUS" -->更新 如圖:
技術分享圖片

驗證:
查看node.san.com主機監控項:
配置-->主機-->node2.san.com -->監控項 如圖:
技術分享圖片
查看生成的圖形:
監測-->圖形--> 如圖
技術分享圖片
以上的自制的模板也可以導出,以便後期分享與重復使用!
技術分享圖片
技術分享圖片

總結:

通過撰寫腳本自定義獲取tcp 連接狀態的監控;修改agent配置完成獲取自定義監控項數據;制作監控模板獲取自定義數據項,添加觸發器,添加圖形,並應用到主機上;完整展示了zabbix獲取數據展示數據的過程;希望讀者能通過本例實現舉一反三;對zabbix 監控以及自定義獲取數據有一個深刻認識!

zabbix自定義腳本做監控及自制模板初探