Bash警报监控,发送n次警报,然后暂停n分钟

时间:2018-09-06 07:06:10

标签: linux bash scripting

我们有一个基于bash脚本的警报监视系统,该系统每5分钟通过crontab运行一次,并在发现任何错误时发送电子邮件通知。

但是由于这个原因,当发生问题时,我们的邮箱充斥着错误电子邮件。

我们的要求很简单

  1. 每分钟运行cronjob进行日志监视。

  2. 发送警报,因为它仅发生3次,但这些警报应该仅在3分钟的间隔内发生。如果警报发生的时间间隔为10分钟或更长时间,则无需暂停电子邮件警报

  3. 在3分钟的时间间隔内,一旦警报发生3次,则电子邮件通知应至少暂停或停止20分钟(以使我们的邮箱不会被淹没)。然后,监视脚本应在正常运行20分钟后重新开始运行。

我一直在研究代码,以跟踪生成警报的次数,并在警报发送3次后停止发送msg。但是我无法弄清楚如何为此添加基于时间的逻辑。

error=$(cat error.log | grep "ORA-" | wc -l)

counter=$(/tmp/counter.txt)
counterval=$(cat /tmp/counter.txt | wc -l)

if
   [$error -ge 1] && [$counterval -lt 3]
   then echo "errors in log file"
   echo "1" >> $counter

elif
     [$error -ge 1]
     then echo "1" >> $counter
else
    echo "Nothing to report"

if [$counterval  -e 30]
    then cat /dev/null > $ counter
fi

0 个答案:

没有答案