Я часто получаю сообщение об ошибке «monit failed protocol test [HTTP] at [localhost]: 8080». Приложение tomcat не остановлено и все еще работает нормально. Я знаю, что порт 8080 открыт, потому что я могу получить к нему доступ в браузере на моем персональном ПК (а НЕ на локальном хосте). Что еще я могу проверить, чтобы увидеть, что происходит?
Некоторые логи в ответ на чужие вопросы:
Это повторилось сегодня утром в 3:26 или 3:27 утра, так что вот, прежде всего, журнал мониторинга за рассматриваемое время:
[EDT May 19 03:26:01] info : Reinitializing monit daemon
[EDT May 19 03:26:01] info : 'newapp.turnsmith.com' Monit reloaded
[EDT May 19 03:26:01] error : 'tomcat' failed protocol test [HTTP] at [localhost]:8080 [TCP/IP] -- HTTP error: Server returned status 404
[EDT May 19 03:26:01] info : 'tomcat' start: '/etc/init.d/tomcat start'
[EDT May 19 03:26:01] error : 'tomcat' failed protocol test [HTTP] at [localhost]:8080 [TCP/IP] -- HTTP error: Server returned status 404
[EDT May 19 03:27:01] error : 'tomcat' failed protocol test [HTTP] at [localhost]:8080 [TCP/IP] -- HTTP error: Server returned status 404
[EDT May 19 03:27:01] info : 'tomcat' start: '/etc/init.d/tomcat start'
А вот журнал с http, error_log:
[Sun May 19 03:26:01.573204 2019] [auth_digest:notice] [pid 3625] AH01757: generating secret for digest authentication ...
[Sun May 19 03:26:01.573817 2019] [lbmethod_heartbeat:notice] [pid 3625] AH02282: No slotmem from mod_heartmonitor
[Sun May 19 03:26:01.573856 2019] [mpm_prefork:notice] [pid 3625] AH00163: Apache/2.4.6 (CentOS) configured -- resuming normal operations
[Sun May 19 03:26:01.573859 2019] [core:notice] [pid 3625] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
На самом деле ошибка случается чаще, но мы получаем письмо с предупреждением только один раз.
Кроме того, я не знаю, поможет ли это, но вот конфигурация monit для tomcat (/etc/monit.d/tomcat):
check host tomcat with address localhost
stop program = "/etc/init.d/tomcat stop"
start program = "/etc/init.d/tomcat start"
if failed port 8080 and protocol http then alert
if failed port 8080 and protocol http then start
Обновление 20.05.2019: основываясь на совете @asktyagi, я изменил свою конфигурацию на приведенную ниже, чтобы посмотреть, работает ли она:
check host tomcat with address localhost
stop program = "/etc/init.d/tomcat stop"
start program = "/etc/init.d/tomcat start"
if failed port 8080 and protocol http retry 5 then alert
if failed port 8080 and protocol http retry 5 then start
Можете ли вы проверить журналы мониторинга и http во время предупреждения? Возможны следующие варианты: http-порт исчерпан или http под давлением / занят. Если да, попробуйте использовать ПОВТОРИТЬ. Изменить: также вы можете попробовать удалить протокол и использовать, как показано ниже if failed port {port number} then restart
Основываясь на совете @asktyagi, я понял, что он работает намного лучше со следующей конфигурацией:
check host tomcat with address localhost
stop program = "/etc/init.d/tomcat stop"
start program = "/etc/init.d/tomcat start"
## if failed port 8080 and protocol http for 20 cycles then alert
if failed port 8080 then alert
##if failed port 8080 and protocol http for 40 cycles then start
if failed port 8080 then start
В моем случае «Повторить» не помогло, хотя количество вхождений уменьшилось. Кроме того, на основе помощи от Вот, Я попробовал идею «для x циклов», и это фактически уменьшило его с нескольких раз в минуту до одного раза в минуту. Очевидно, я придерживаюсь идеи @asktyagi, поскольку она до сих пор устраняет проблему, но мне хотелось рассказать людям, что я понял.