天天看點

超詳細zabbix 監控項,自定義觸發器,自定義報警

自定義監控項

什麼是監控項?

監控項:就是我們想要監控的名額,例如剩餘記憶體,磁盤空間,服務的狀态等等

每一個監控項,都有一個唯一的key,簡潔明了(相當于shell腳本的變量名)

隻需要安裝zabbix-agent,預設就支援大量的監控項,但是linux模闆并沒有使用所有監控項

Template OS Linux by Zabbix agent主要監控了cpu,記憶體,磁盤,網卡,安全,它們都屬于通用監控

應用集是監控項的分組

使用内置key監控nginx的狀态

超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警

(注意:添加監控項之前最好使用zabbix-get來測試取值)

#隻在zabbix-server上安裝
yum install zabbix-get -y
zabbix_get -s 127.0.0.1 -k proc.num[nginx]
#注釋
-s 被監控主機的ip位址
-p 端口
-k 指定監控項的key
           

在zabbix-agent主機上修改一下agent2系統配置檔案,不然在zabbix-server這個主機上使用不了zabbix-get

vim /usr/lib/systemd/system/zabbix-agent2.service
User=root
Group=root
           

使用自定義的監控項來監控NGINX

在zabbix-agent主機上修改agent配置檔案

vim /etc/zabbix/zabbix_agent2.conf
UserParameter=nginx_status,netstat -lntp|grep -c nginx
(nginx_status 是自定義鍵值(監控項、key) netstat -lntp|grep -c nginx 是檢視nginx啟動了幾個. 
總結起來來說就是看nginx啟動了幾個端口指派給 nginx_status 這個自定義的監控項)
           

在zabbix-agent主機上重新開機agent生效

systemctl restart zabbix-agent2.service
           

使用zabbix-get測試取值

#隻能在zabbix-server上執行
zabbix_get -s 10.0.0.8 -k nginx_status
           
超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警

使用自定義的監控項來監控NGINX 加強版

建議把agent自定義監控項獨立成一個配置檔案

vim /etc/zabbix/zabbix_agent2.d/zbx_nginx.conf
UserParameter=nginx_status,netstat -lntp|grep -c nginx
好處:可以複用,管理更加的友善
           

對應有規律的監控項

UserParameter=mysql_Uptime,echo 'show status;'|mysql -uroot|grep -w 'Uptime'|awk '{print $2}'
UserParameter=mysql_Com_select,echo 'show status;'|mysql -uroot|grep -w 'Com_select'|awk '{print $2}'
UserParameter=mysql_Com_delete,echo 'show status;'|mysql -uroot|grep -w 'Com_delete'|awk '{print $2}'
1
           

适合使用帶參考的自定義監控項

UserParameter=mysql_define[*],echo 'show status;'|mysql -uroot|grep -w "$1"|awk '{print $$2}'
這裡的$1是對應mysql_define[*]裡面的那個*   $2依舊是取第二列的值
           

取值效果

[[email protected] ~]# zabbix_get -s 10.0.0.8 -k mysql_define[Uptime]
827
[[email protected] ~]# zabbix_get -s 10.0.0.8 -k mysql_define[Com_select]
1
[[email protected] ~]# zabbix_get -s 10.0.0.8 -k mysql_define[Com_insert]
0
           

自定義觸發器

什麼是觸發器?

觸發器:設定一個報警條件(一個觸發器至少對應一個監控值)

觸發器表達式的格式:

例子one

{10.0.0.8:vfs.file.cksum[/etc/passwd].diff()}>0
主機:10.0.0.8
key值:vfs.file.cksum[/etc/passwd]
函數方法:diff() 對比兩次監控項的值
如果兩次對應的值大于了0 就報警 (是zabbix報警 不是生活中的報警)
           

例子two

{10.0.0.8:proc.num.last()}/{10.0.0.8:kernel.maxproc.last()}*100>80
10.0.0.8:proc.num:目前運作程序數量
10.0.0.8:kernel.maxproc 系統最大允許程序的數量
函數方法:last() 最新值   (生産中last()用的比較多,比如你的某個業務down掉了,監控項裡用last()就會自己立即報警,不會墨迹)
           

例子3

{10.0.0.8:vm.memory.size[available].min(5m)}<{$MEMORY.AVAILABLE.MIN} and{10.0.0.8:vm.memory.size[total].last()}>0
函數方法 mim(5m) 五分鐘之内最小的值, max(5m) 五分鐘之内最大的值, avg(5m) 五分鐘之内的平均值
{$MEMORY.AVAILABLE.MIN}=20m
and 同時
10.0.0.8:vm.memory.size[total] 最新的總記憶體大小
available和total是free -m 裡的
           

自定義觸發器表達

超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警

i[外鍊圖檔轉存中…(img-TScQ2nfv-1612268750390)]

超詳細zabbix 監控項,自定義觸發器,自定義報警

自定義報警

郵件報警

超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警

我這裡測試的是網易郵箱為發件人,測試qq郵箱為收件人 測試成功之後就可以配置收件人了!

配置收件人:

超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警
超詳細zabbix 監控項,自定義觸發器,自定義報警

我這裡在zabbix-agent上把NGINX給關閉了 用來測試的

超詳細zabbix 監控項,自定義觸發器,自定義報警

如果你的QQ郵箱可以收到報警(不要誤會是zabbix’的報警) 那恭喜文章你順利完成了