我们有一个非常简单的系统设置,当系统出现问题时,我可以收到短信。 这不是什么幻想。 我发送电子邮件到我的电话号码在我的日志logging类警报级别。 它运行得很好,但它有一个主要缺陷:系统/站点中的一个小小的呃逆可能变成几十个快速的短信。 在login系统并修复问题之前,有时候不停地发送短信。
所以我正在寻找可以使用的软件或服务的指针,以更智能的方式处理警报。 也许是在Y分钟内只发送X次警报的东西。 我不是在寻找一个完整的监控套件。 我们已经在内部处理了。 我只是想解决这个单一的问题。
我为你创build一个小bash脚本:
#!/bin/bash COUNT_FILE="/tmp/count" TIME_FILE="/tmp/time" MAX_SEND=1 #max message TIME_INT=300 #time interval in second send () { ERROR_TYPE="_$1" MESSAGE=$2 [ -e ${TIME_FILE}${ERROR_TYPE} ] || touch ${TIME_FILE}${ERROR_TYPE} [ -e ${COUNT_FILE}${ERROR_TYPE} ] || echo 0 > ${COUNT_FILE}${ERROR_TYPE} if [ $(( $(date +%s) - $(date +%s -r ${TIME_FILE}${ERROR_TYPE}) )) -gt $TIME_INT ]; then COUNT=0 touch ${TIME_FILE}${ERROR_TYPE} else COUNT=`cat ${COUNT_FILE}${ERROR_TYPE}` fi if [ $COUNT -lt $MAX_SEND ]; then echo "$MESSAGE"; #real send message fi COUNT=$(($COUNT+1)) echo $COUNT > "${COUNT_FILE}${ERROR_TYPE}" } send "check_dns" "message"
这些问题的答案通常是Nagios。 警报选项与监控function一样灵活。 将其configuration为仅发送所需的警报,而不再发送警报。