1 定义好2个监控项(1一个统计错误个数,一个统计错误日志内容)
vim /etc/zabbix/zabbix_agentd.d/tomcat-params.conf(我的路径在这里, 根据agent自己的路径填写)
UserParameter=tomcat.errorLog,/etc/zabbix/sh/monitor_tomcat_error_log.sh
UserParameter=tomcat.errorCount,/etc/zabbix/sh/count_tomcat_error_log.sh
2 编写监控脚本
vim /etc/zabbix/sh/count_tomcat_error_log.sh(统计错误日志条数)
#!/bin/bash
LAST_MINUTES=$(date -d ‘-1 minute’ +%H%M%S)
LOG_NUM=0
LOG_PATH=”/data/log/tomcat8/test.$(date +%Y-%m-%d).mon”
if [[ ! -f “$LOG_PATH” ]];then
echo “ZBX_NOTSUPPORTED”
exit 1
fi
while read line;do
if [[ “$line” =~ ^[0-9]{2}:[0-9]{2}:[0-9]{2} ]];then
date_time=$(echo $line | grep -E -o “[0-9]{2}:[0-9]{2}:[0-9]{2}” | tr -d ‘:’)
date_time=$(echo $date_time | sed ‘s/^0//’)
LAST_MINUTES=$(echo $LAST_MINUTES | sed ‘s/^0//’)
if [[ “$date_time” -gt “$LAST_MINUTES” ]];then
((LOG_NUM++))
else
break
fi
fi
done <
echo -n $LOG_NUM
chmod 777 /etc/zabbix/sh/count_tomcat_error_log.sh 记得给脚本权限
vim /etc/zabbix/sh/monitor_tomcat_error_log.sh(统计错误日志内容,这样不需要上服务器查看错误日志)
#!/bin/bash
LAST_MINUTES=$(date -d ‘-1 minute’ +%H%M%S)
LOG_NUM=0
MAX_LOG_RECORD=3
MAX_LOG=30
LOG_CONTENT=””
LOG_PATH=”/data/log/tomcat8/test.$(date +%Y-%m-%d).mon”
while read line;do
if [[ “$line” =~ ^[0-9]{2}:[0-9]{2}:[0-9]{2} ]];then
date_time=$(echo $line | grep -E -o “[0-9]{2}:[0-9]{2}:[0-9]{2}” | tr -d ‘:’)
date_time=$(echo $date_time | sed ‘s/^0//’)
LAST_MINUTES=$(echo $LAST_MINUTES | sed ‘s/^0//’)
if [[ “$date_time” -gt “$LAST_MINUTES” ]];then
((LOG_NUM++))
[[ “$LOG_NUM” -gt “$MAX_LOG_RECORD” ]] || log_entry=”$line\n$log_entry”
[[ “$LOG_NUM” -gt “$MAX_LOG_RECORD” ]] || LOG_CONTENT=”$LOG_CONTENT\n$log_entry”
else
break
fi
log_entry=””
else
[[ “$LOG_NUM” -gt “$MAX_LOG_RECORD” ]] || log_entry=”$line\n$log_entry”
fi
if [[ “$LOG_NUM” -gt “$MAX_LOG” ]];then
break
fi
done <
[[ “$LOG_NUM” -gt “$MAX_LOG” ]] && echo -n -e “$LOG_CONTENT” | sed ‘s#^#
#’
chmod 777 /etc/zabbix/sh/monitor_tomcat_error_log.sh(记得给脚本权限)
3 在zabbix 里面添加监控项
第一张是统计个数, 第二张是统计内容