![更智能的系统警报](https://linux22.com/image/540108/%E6%9B%B4%E6%99%BA%E8%83%BD%E7%9A%84%E7%B3%BB%E7%BB%9F%E8%AD%A6%E6%8A%A5.png)
我们的系统设置非常简单,当系统出现问题时,我会收到短信。没什么特别的。我会向我的日志类中的电话号码发送电子邮件,以了解警报级别。它运行良好,但有一个主要缺陷:系统/站点中的一个小故障可能会变成数十条快速的短信。有时短信会不停地发送,直到我登录系统并解决问题。
因此,我正在寻找一些软件或服务,它们可以更智能地处理警报。也许有些东西只会在 Y 分钟内向我发送 X 次警报。我不需要完整的监控套件。我们已经在内部处理了这个问题。我只想解决这个单一问题。
答案1
我为您创建了一个小型 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"
答案2
这些问题的答案通常是 Nagios。警报选项与监控功能一样灵活。将其配置为仅发送您想要的警报,不再发送其他警报。