Мониторинг синтаксической ошибки: "если 5 перезапускается в течение 5 циклов, то оповещение"
Я пытаюсь получить предупреждение от monit, если не удается перезапустить службу 5 раз, но я получаю синтаксическую ошибку
/etc/monit/monit.d/engine.conf:5: Error: syntax error 'alert'
есть идеи что с ним не так?
/ И т.д. / Monit / monitrc:
set daemon 120
set mailserver localhost
set eventqueue
basedir /var/monit # set the base directory where events will be stored
slots 100 # optionaly limit the queue size
set httpd port 2812
allow localhost
set logfile syslog
set alert root@localhost
include /etc/monit/monit.d/*
/etc/monit/monit.d/engine.conf (единственный файл в monit.d):
check process engine with pidfile /var/run/engine.pid
group engine
start program = "/etc/init.d/engine start"
stop program = "/etc/init.d/engine stop"
if 5 restarts within 5 cycles then alert
версия:
# monit -V
This is monit version 4.10.1
5 ответов
Похоже, поддержка этого была добавлена в monit 5.1
Из журнала изменений по адресу http://mmonit.com/monit/dist/CHANGES.txt:
Version 5.1
NEW FEATURES AND FUNCTIONS:
It is now possible to define any action for the restart timeout rule.
Multiple restart timeout rules can also be defined. Example:
if 3 restarts within 5 cycles then exec "/foo/bar"
if 8 restarts within 10 cycles then unmonitor
Я пытался использовать тот же синтаксис, что и вы (по той же причине), и обнаружил, что он работает на одном сервере, но на другом. Когда я сравнил версии, я обнаружил, что одна версия была 5.2.5, а другая - 4.10.1.
Таким образом, ответ, по-видимому, заключается в обновлении до версии 5.1
Я заметил кое-что странное с параметром alert и unmonitor в monit 5.4-2: если вы используете параметр unmonitor в строке конфигурации предупреждения, он генерирует синтаксическую ошибку:
alert security@foo.bar on { uid, gid, unmonitor
} with the mail-format { subject: Alarm! }
При перезапуске monit вы получаете:
Error: syntax error 'unmonitor'
Я решил эту проблему, удалив unmonitor в аргументах:
alert security@foo.bar on { uid, gid
} with the mail-format { subject: Alarm! }
Я не вижу изменения синтаксиса... Странно... Не так ли?
Вы получили set alert <email_address>
определены до этой конфигурации?
Хорошо, нашел ошибку. alert
не является допустимым событием, и вам нужно указать событие, которое будет генерировать предупреждение. Без конкретного события Монит не знал бы, что вам сказать.
Список событий с man-страницы:
Это список событий, которые вы можете использовать в почтовом фильтре: uid, gid, размер, не существует, данные, icmp, экземпляр, недействительный, exec, изменен, тайм-аут, ресурс, контрольная сумма, совпадение, метка времени, соединение, разрешение
В вашем случае я бы порекомендовал exec. Полный список сообщений:
Event: | Failure state: | Recovery state:
---------------------------------------------------------------
CHANGED | "Changed" | "Changed back"
CHECKSUM | "Checksum failed" | "Checksum passed"
CONNECTION| "Connection failed" | "Connection passed"
DATA | "Data access error" | "Data access succeeded"
EXEC | "Execution failed" | "Execution succeeded"
GID | "GID failed" | "GID passed"
ICMP | "ICMP failed" | "ICMP passed"
INSTANCE | "Monit instance changed"| "Monit instance changed not"
INVALID | "Invalid type" | "Type passed"
MATCH | "Regex match" | "No regex match"
NONEXIST | "Does not exist" | "Exists"
PERMISSION| "Permission failed" | "Permission passed"
RESOURCE | "Resource limit matched"| "Resource limit passed"
SIZE | "Size failed" | "Size passed"
TIMEOUT | "Timeout" | "Timeout recovery"
TIMESTAMP | "Timestamp failed" | "Timestamp passed"
UID | "UID failed" | "UID passed"
Удачи,
Жоао Мигель Невес
Я думаю, что это выглядит хорошо. Вы пытались повторно набрать эту строку, чтобы исключить какие-либо скрытые символы, портящие строку?