Мониторинг синтаксической ошибки: "если 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"

Удачи,
Жоао Мигель Невес

Я думаю, что это выглядит хорошо. Вы пытались повторно набрать эту строку, чтобы исключить какие-либо скрытые символы, портящие строку?

Другие вопросы по тегам