Linux批量检测应用日志状态(shell版)

有一个包含多个进程的程序组,每个进程每小时都会生成独立的日志文件,如果没有生成日志则意味着应用异常,此时需要生成错误报告,以供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版)

精彩评论

1+4=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏