環境說明:
兩台機器各運行一個tomcat實例,通過阿里雲slb到后端,假設后端服務掛了一個,從外部訪問整個服務還是可用的,所以需要從內部檢測web頁面。
zabbix自帶的web場景都是從外部檢測web頁面,並不符合此次的需求。
zabbix-agent104 172.16.2.104 tomcat 8081 zabbix-agent105 172.16.2.105 tomcat 8081
1.zabbix-agent機器上添加UserParameter(版本:zabbix-agent-3.4.10-1.el7.x86_64)
[root@zabbix-agent104 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_curl.conf UserParameter=curl[*],curl --connect-timeout 3 -sI -o /dev/null -w %{http_code} http://127.0.0.1:$1$2 重啟zabbix-agent [root@zabbix-agent104 ~]# systemctl restart zabbix-agent 往tomcat ROOT下添加一個空文件online.html [root@zabbix-agent104 ~]# touch /usr/local/tomcat/webapps/ROOT/online.html
2.zabbix-server機器上確認可以獲取新值
[root@zabbix-server ~]# zabbix_get -s 172.16.2.104 -k 'curl[8081,/online.html]' 200
3.登錄zabbix web控制台添加模板、監控項、觸發器
新建一個模板,在“Templates/Modules”群組之中,主機/模板:是哪些主機要引用新的模板。
添加一個監控項,調整查看值,選擇應用集,這兩步可有可無。
克隆以上監控項,監控8082端口,因為我的環境上同台機器上開了多個tomcat實例。默認不啟用,理由是模板需要大規模應用到主機上,但並不是每台主機都安裝有多個tomcat實例,多個tomcat實例需要單獨啟用監控項。
添加觸發器,我的環境中http code有可能出現000(tomcat關閉),200(正常),302(跳轉),404(不存在)等,所以使用max、min、avg都不准確
count(#2,200,eq)意思是統計最后兩次的值等於200的個數,如果兩次都返回非200,即統計個數為0,則觸發。
count函數翻譯成中文為“周期T內成功取到的值V(滿足操作者O)的數量=N”