更智能的系统警报

更智能的系统警报

我们的系统设置非常简单,当系统出现问题时,我会收到短信。没什么特别的。我会向我的日志类中的电话号码发送电子邮件,以了解警报级别。它运行良好,但有一个主要缺陷:系统/站点中的一个小故障可能会变成数十条快速的短信。有时短信会不停地发送,直到我登录系统并解决问题。

因此,我正在寻找一些软件或服务,它们可以更智能地处理警报。也许有些东西只会在 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。警报选项与监控功能一样灵活。将其配置为仅发送您想要的警报,不再发送其他警报。

相关内容