有一个包含多个进程的程序组,每个进程每小时都会生成独立的日志文件,如果没有生成日志则意味着应用异常,此时需要生成错误报告,以供zabbix报警。
#!/bin/bash #-- 定义时间 --# vDatetime=`date +%Y%m%d%H` #-- 定义应用 --# # 应用名称 appname=(app01 app02 app03) # 日志名称 logname=(log01 log02 log03) # 日志路径,所有应用的日志都在这个目录中 logpath="/opt/apps/logs/${vDatetime:0:4}/${vDatetime:4:2}/${vDatetime:6:2}/${vDatetime:8:2}/" #-- 定义检查结果日志 --# checkresultlog="/opt/zabbix/logs/checkresult.log" #-- 定义检测方法函数 --# CHECKLOGSTATUS () { if [ -e "${logname[$i]}.${vDatetime}.log" ] then echo "${vDatetime} ${appname[$i]}日志正常" >> ${checkresultlog} else echo "${vDatetime} ${appname[$i]}日志异常" >> ${checkresultlog} exit 0 fi } #-- 开始检查日志 --# [ ${#appname[@]} -eq 0 ] && exit 0 if [ -d "${logpath}" ] then cd ${logpath} for ((i=0;i<${#appname[@]};i++)) do CHECKLOGSTATUS done else echo "${vDatetime} 日志目录不存在" >> ${checkresultlog} exit 0 fi
将此脚本加入定时任务,然后通过zabbix根据/opt/zabbix/logs/checkresult.log中的内容实现异常告警,如:日志异常时告警、日志目录不存在时告警。
原创文章禁止转载:技术学堂 » Linux批量检测应用日志状态(shell版)