У нас довольно простая настройка системы, при которой я получаю текстовые сообщения при возникновении системной проблемы. Ничего особенного. Я отправляю электронное письмо на свой номер телефона в моем классе ведения журнала для уровней оповещения. Он работает достаточно хорошо, но у него есть один серьезный недостаток: небольшой сбой в системе / сайте может превратиться в десятки быстрых текстовых сообщений. Иногда непрерывные текстовые сообщения, пока я не войду в систему и не исправлю проблему.
Итак, я ищу указатели по программному обеспечению или службам, которые я могу использовать более разумно для обработки предупреждений. Возможно, что-то, что отправляет мне предупреждения только 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"