Monit отправляет предупреждение каждый раз, когда демон monit останавливается или запускается. Это неприятная и бесполезная информация.
Согласно документации я установил:
set alert user@mycompany.com but not on { instance }
... который должен отправлять предупреждения на это электронное письмо, если только они не находятся в категории «экземпляр», которая определяется как запуск / остановка.
Однако я по-прежнему получаю предупреждения. Это очень раздражает. Очевидно, я что-то упускаю.
Мы запускаем Monit 5.2.4
Монит может, согласно документации генерировать ряд предупреждений:
Event: | Failure state: | Success state:
---------------------------------------------------------------------
action | "Action done" | "Action done"
checksum | "Checksum failed" | "Checksum succeeded"
bytein | "Download bytes exceeded" | "Download bytes ok"
byteout | "Upload bytes exceeded" | "Upload bytes ok"
connection | "Connection failed" | "Connection succeeded"
content | "Content failed", | "Content succeeded"
data | "Data access error" | "Data access succeeded"
exec | "Execution failed" | "Execution succeeded"
fsflags | "Filesystem flags failed" | "Filesystem flags succeeded"
gid | "GID failed" | "GID succeeded"
icmp | "Ping failed" | "Ping succeeded"
instance | "Monit instance changed" | "Monit instance changed not"
invalid | "Invalid type" | "Type succeeded"
link | "Link down" | "Link up"
nonexist | "Does not exist" | "Exists"
packetin | "Download packets exceeded" | "Download packets ok"
packetout | "Upload packets exceeded" | "Upload packets ok"
permission | "Permission failed" | "Permission succeeded"
pid | "PID failed" | "PID succeeded"
ppid | "PPID failed" | "PPID succeeded"
resource | "Resource limit matched" | "Resource limit succeeded"
saturation | "Saturation exceeded" | "Saturation ok"
size | "Size failed" | "Size succeeded"
speed | "Speed failed" | "Speed ok"
status | "Status failed" | "Status succeeded"
timeout | "Timeout" | "Timeout recovery"
timestamp | "Timestamp failed" | "Timestamp succeeded"
uid | "UID failed" | "UID succeeded"
uptime | "Uptime failed" | "Uptime succeeded"
Мы смогли исправить это на нашей стороне, установив (адреса изменены для защиты невиновных):
SET ALERT important-messages@projectlocker.com ON { invalid, nonexist, timeout, resource, size, timestamp}
SET ALERT less-important-messages@projectlocker.com ON {action, permission, pid, ppid, instance, status}
Это успешно направляет сообщения по адресам, которые нам небезразличны. Вы можете установить их глобально или локально, но наши предупреждения являются глобальными.
Подзаголовки СЕРВИСНЫХ ИСПЫТАНИЙ по адресу: http://mmonit.com/monit/documentation/monit.html довольно точно соответствуют перечисленным выше типам.
Для каждого запланированного процесса или функции вашего сервера вы должны быть в состоянии придумать то, что для вас важно на простом английском языке, и сопоставить это желание с одним из тестов, упомянутых в разделе ТЕСТЫ УСЛУГ. Например, если я использую Apache, я знаю, что меня волнуют:
Для настраиваемого демона, который опрашивает, я могу заботиться о том, регулярно ли обновляется файл журнала сообщениями о состоянии (метка времени).
Я использую Monit версии 5.2.5, и использование следующих предупреждений остановило получение предупреждений
set alert example@gmail.com not {instance}
Просто скажите ему, чтобы он отключился после определенного количества повторных попыток в период времени N согласно этим примерам.
Мне не удалось исправить это в monit, и мне пришлось создать уровень обработки в электронной почте monit, чтобы отфильтровать эти уведомления экземпляра monit перед доставкой путем их перехвата.
Мы используем функцию пейджера для сбора и отправки уведомлений от monit и нескольких других систем, поэтому в этом случае я добавил правило фильтрации в службу Monit, используя регулярное выражение на основе темы, чтобы отфильтровать сообщения электронной почты с уведомлениями об экземпляре monit.