我不是那么多编码器,但对于我运行的程序,我想运行一个loganalyzer(小shell脚本?)运行执行命令(终止进程,启动新进程),然后向我发送警报
什么是围绕: /var/log/mylogfile.log中的日志文件 程序员写了所有类型的东西,我希望loganalyzer搜索模式,让我们说:“找不到错误33文件”或“更改预置”或“状态已更改”。
我希望脚本每分钟检查一次日志文件(crontab),如果其中一个模式在1分钟内匹配4次,则执行命令并通过邮件提醒我。 作为一个workarround我希望脚本检查所有正在运行的进程并杀死所有这些,所以我应该使用pkill -x [nameofprogramm]
所以我想使用tail -fn 0然后grep用于模式,但不知何故我无法弄清楚如果发生错误如何检查x次,然后警告。
现在我每次比赛都会收到电子邮件。
你们的任何建议都在那里吗?
已经尝试过使用monit,但由于某些原因,monit在如此复杂的事情中并不容易处理
提前致谢
问候
答案 0 :(得分:0)
我不知道你的日志文件是否有任何类型的旋转,但如果你不这样做,我认为你应该考虑一下,如果你打算计算事物的发生:)
如果您计划对日志进行严格调查,我认为您应该查看awk
。
关于你的计数,这是一个简单的例子,它将计算文件中包含“ERROR”的行数:
#!/bin/ksh
grep_occurence() {
pattern=$1
file=$2
limit=$3
nb_errors=$( grep ${pattern} ${file} | wc -l)
if [ ! -f ${file} ]
then
echo "[ERROR] The file ${file} does not exists"
exit 1
fi
if [ ${nb_errors} -gt ${limit} ]
then
echo "There were ${nb_errors} occurence of ${pattern} in ${file}"
return ${nb_errors}
fi
}
logfile=/var/log/mylogfile.log
#grep_occurence "PATTERN" "LOGFILE" "LIMIT"
grep_occurence "ERROR" "${logfile}" 5
答案 1 :(得分:0)
反斜杠,我会评论你的帖子,但我没有足够的声誉这样做......所以我正在制作另一个“答案”
我认为这取决于您的日志......
如果这些日志是应用程序(jboss,weblogic,...)我真的不建议使用tail选项。因为例如由于特定的java错误,日志一次被200行填充,并且你做了一个尾部-20n ......你会错过许多信息......
您的日志中是否有时间戳?如果是,您将能够解析日志并仅保存最后几分钟。