У меня проблемы с монитором. У меня установлен мониторинг с помощью monit. Однако у меня проблемы с проверкой запущенного процесса. Если процесс не запущен, я хочу запустить конкретный скрипт, который создаст оповещение о pagerduty.
Мой файл Monit выглядит так:
check process "myapp" matching "myapp"
start program = "/usr/local/myapp start"
stop program = "/usr/local/myapp stop"
if does not exist then exec "/bin/bash pagerduty_script 'MyApp Down' trigger"
В pagerduty_script
это просто оболочка, которая принимает два аргумента "string event"
и действие trigger
Скрипт работает. Я тестировал в терминале, и он работает нормально. события фактически создаются в pagerduty. Однако не похоже, что monit на самом деле его запускает, хотя ни один процесс не запущен:
ps -ef | grep myapp
vagrant 23950 23136 0 17:40 pts/0 00:00:00 grep --color=auto myapp
статус sudo monit:
Process 'myapp'
status Execution failed
monitoring status Monitored
data collected Tue, 16 Sep 2014 17:40:11
Я не понимаю, почему это работает на консоли, но monit на самом деле не генерирует событие. Любая помощь будет принята с благодарностью!
Я столкнулся с аналогичной проблемой, и я понял, что сценарий pagerduty создает временный файл для триггера, и если этот файл был изменен не более 4 часов назад, он не запускает повторно предупреждение.
Возможно, при запуске из консоли вы уже создали временный файл. Вы можете проверить это, удалив временный файл непосредственно перед тем, как monit должен вызвать предупреждение.
Другой вариант - использовать другой уникальный тип события, чтобы просто проверить его.