深入應用zabbix的時候,自帶的模板是不夠用的,這裏通過監控tomcat自定義日誌,完整演示如何自定義zabbix的監控模板和監控項
目的
有一個查詢接口應用,運行在tomcat容器中,日誌是自定義的,現在需要監控日誌中的查詢耗時,日誌示例如下:
[2018-11-10 21:27:35,023][ERROR] - ---------------isagreequery=true----queryresult=1 - jersey.info.InfoRunnable.Execute(InfoRunnable.java:439)
[2018-11-10 21:27:35,023][ERROR] - 報文體:200-------成功!耗時--------》-10 - jersey.info.InfoResource.uploadJson(InfoResource.java:69)
其中的成功!耗時--------》-10 -
表示處理本次查詢耗時10ms時間。
監控就是要把這個耗時提取出來。
先劇透下效果:
步驟
首先制定提取耗時的shell 腳本query_time_monitor.sh
,腳本支持計算查詢耗時的最大值、最小值、平均值、總和:
#!/bin/bash
# -------------------------------------------------------------------------------
# FileName: query_time_monitor.sh
# Revision: 1.0
# Date: 2018/11/10
# Author: WangLiFei
# Email: [email protected]
# Website: www.wlfei.com
# Description: 監控共享系統查詢接口耗時
# Notes: ~
# -------------------------------------------------------------------------------
# Copyright: 2018 (c) WangLiFei
# License: GPL
# 日誌文件名稱
LOG_FILE='/path/to/your/target.log'
# 參數是否正確
if [ $# -ne "1" ];then
echo "arg error!"
fi
# 獲取數據
case $1 in
max)
result=`grep 'uploadJson' ${LOG_FILE} | awk -F "-" 'BEGIN {max=0} {if ($20+0 > max+0) max=$20+0 fi} END {print max}'`
echo $result
;;
min)
result=`grep 'uploadJson' ${LOG_FILE} | awk -F "-" 'BEGIN {min=99999999} {if ($20+0 < min+0) min=$20+0 fi} END {print min}'`
echo $result
;;
avg)
result=`grep 'uploadJson' ${LOG_FILE} | awk -F "-" '{ sum+=$20 } END { print sum/NR }'`
echo $result
;;
sum)
result=`grep 'uploadJson' ${LOG_FILE} | awk -F "-" '{ sum+=$20 } END { print sum }'`
echo $result
;;
*)
echo "Usage:$0(max|min|avg|sum)"
;;
esac
然後配置zabbix的conf文件userparameter_tomcat.conf
:
# 通過tomcat日誌監控查詢接口性能
UserParameter=query.time[*],/usr/local/zabbix/scripts/query_time_monitor.sh $1
然後把腳本和zabbix配置文件放服務器上:
userparameter_tomcat.conf 放 /usr/local/zabbix/conf/zabbix_agentd
query_time_monitor.sh 放 /usr/local/zabbix/scripts 配置755權限
zabbix_agentd.conf 添加 Include=/usr/local/zabbix/conf/zabbix_agentd/*.conf
重啓zabbix agent
下一步配置網頁上的監控模板,多臺服務器都需要使用,我們自定義一個監控模板。
配置三個監控項:
配置兩個觸發器,查詢耗時均值、最大值達到閾值後報警:
配置一個圖形,把最大耗時、最小耗時、平均耗時都顯示出來:
模板製作完成,下一步把對應的服務器添加在監控模板裏(下圖紅框):
製作完成,過幾分鐘查看效果: