У меня есть веб-страница, на которой иногда отображается пустая страница со статусом 200, и я хочу автоматически перезапустить службу, когда это произойдет. Для этого я хочу использовать Monit и плагин nagios, который позволяет искать текст на странице, а не только проверять статус, но моя проблема в том, что monit требуется много времени, чтобы определить, когда страница не работает, и многократно перезапустить сервис. раз, даже когда снова работает нормально.
Мой конфигурационный файл Monit:
check program nginx with path "/etc/monit/files/check_nginx.sh"
every 1 cycle
start program = "/etc/init.d/nginx start"
stop program = "/etc/init.d/nginx stop"
if status != 0 then restart
Поскольку Monit не позволяет передавать аргументы, я использую этот простой скрипт в bash:
#!/bin/bash
/etc/monit/files/check_http -H 127.0.0.1 -w 5,0 -c 10,0 -p 88
exit $?
Когда nagios работает, Monit обнаруживает его без проблем, но когда я останавливаю демон, потребовалось около 2 циклов, чтобы обнаружить, что он не работает (это приемлемо, потому что это 2 минуты). После обнаружения проблемы Monit без проблем запускает команду перезапуска:
CEST Sep 26 18:31:47] error : 'nginx' connect to address localhost and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:31:47] info : 'nginx' trying to restart
[CEST Sep 26 18:31:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:31:47] info : 'nginx' start: /etc/init.d/nginx
Это нормально, но проблема в том, что не определяет, когда снова работает, и он продолжает перезапускать службу каждый цикл, пока я не отключу службу Monit:
[CEST Sep 26 18:31:47] error : 'nginx' connect to address localhost and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:31:47] info : 'nginx' trying to restart
[CEST Sep 26 18:31:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:31:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:32:47] error : 'nginx' connect to address localhost and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:32:47] info : 'nginx' trying to restart
[CEST Sep 26 18:32:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:32:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:33:47] error : 'nginx' connect to address localhost and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:33:47] info : 'nginx' trying to restart
[CEST Sep 26 18:33:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:33:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:34:47] error : 'nginx' connect to address localhost and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:34:47] info : 'nginx' trying to restart
[CEST Sep 26 18:34:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:34:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:35:47] error : 'nginx' connect to address localhost and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:35:47] info : 'nginx' trying to restart
[CEST Sep 26 18:35:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:35:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:36:47] error : 'nginx' connect to address localhost and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:36:47] info : 'nginx' trying to restart
[CEST Sep 26 18:36:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:36:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:37:47] error : 'nginx' connect to address localhost and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:37:47] info : 'nginx' trying to restart
[CEST Sep 26 18:37:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:37:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:38:47] error : 'nginx' connect to address 127.0.0.1 and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:38:47] info : 'nginx' trying to restart
[CEST Sep 26 18:38:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:38:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:39:47] error : 'nginx' connect to address 127.0.0.1 and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:39:47] info : 'nginx' trying to restart
[CEST Sep 26 18:39:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:39:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:40:47] info : 'nginx' status succeeded
[CEST Sep 26 18:44:47] error : 'nginx' connect to address 127.0.0.1 and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:44:47] info : 'nginx' trying to restart
[CEST Sep 26 18:44:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:44:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:45:47] error : 'nginx' connect to address 127.0.0.1 and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:45:47] info : 'nginx' trying to restart
[CEST Sep 26 18:45:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:45:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:46:47] error : 'nginx' connect to address 127.0.0.1 and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:46:47] info : 'nginx' trying to restart
[CEST Sep 26 18:46:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:46:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:47:47] error : 'nginx' connect to address 127.0.0.1 and port 88: Connection refused
HTTP CRITICAL - Unable to open TCP socket
[CEST Sep 26 18:47:47] info : 'nginx' trying to restart
[CEST Sep 26 18:47:47] info : 'nginx' stop: /etc/init.d/nginx
[CEST Sep 26 18:47:47] info : 'nginx' start: /etc/init.d/nginx
[CEST Sep 26 18:48:26] info : Shutting down monit HTTP server
[CEST Sep 26 18:48:26] info : monit HTTP server stopped
[CEST Sep 26 18:48:26] info : monit daemon with pid [4187] killed
Я протестировал скрипт bash, чтобы узнать, обнаружит ли сервис, когда он снова работает и работает нормально, поэтому похоже, что Monit не обновляет статус или не пытается запустить команду снова.
Кто-то знает, что может происходить ?, потому что я не знаю, что делать ...
Спасибо!!