自定義監控項
什麼是監控項?
監控項:就是我們想要監控的名額,例如剩餘記憶體,磁盤空間,服務的狀态等等
每一個監控項,都有一個唯一的key,簡潔明了(相當于shell腳本的變量名)
隻需要安裝zabbix-agent,預設就支援大量的監控項,但是linux模闆并沒有使用所有監控項
Template OS Linux by Zabbix agent主要監控了cpu,記憶體,磁盤,網卡,安全,它們都屬于通用監控
應用集是監控項的分組
使用内置key監控nginx的狀态

(注意:添加監控項之前最好使用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
使用自定義的監控項來監控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 裡的
自定義觸發器表達
i[外鍊圖檔轉存中…(img-TScQ2nfv-1612268750390)]
自定義報警
郵件報警
我這裡測試的是網易郵箱為發件人,測試qq郵箱為收件人 測試成功之後就可以配置收件人了!
配置收件人:
我這裡在zabbix-agent上把NGINX給關閉了 用來測試的
如果你的QQ郵箱可以收到報警(不要誤會是zabbix’的報警) 那恭喜文章你順利完成了