Назад | Перейти на главную страницу

Более умные системные оповещения

У нас довольно простая настройка системы, при которой я получаю текстовые сообщения при возникновении системной проблемы. Ничего особенного. Я отправляю электронное письмо на свой номер телефона в моем классе ведения журнала для уровней оповещения. Он работает достаточно хорошо, но у него есть один серьезный недостаток: небольшой сбой в системе / сайте может превратиться в десятки быстрых текстовых сообщений. Иногда непрерывные текстовые сообщения, пока я не войду в систему и не исправлю проблему.

Итак, я ищу указатели по программному обеспечению или службам, которые я могу использовать более разумно для обработки предупреждений. Возможно, что-то, что отправляет мне предупреждения только X раз в течение Y минут. Я не ищу полный комплект для мониторинга. Мы уже занимаемся этим самостоятельно. Я только хочу решить эту единственную проблему.

Ответ на такие вопросы чаще всего - Nagios. Параметры предупреждений столь же гибкие, как и возможности мониторинга. Настройте его на отправку только тех предупреждений, которые вам нужны, и не более того.

Я создаю для вас небольшой скрипт на 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"