У меня есть мой Solr / Jetty, и он хорошо работает на Ubuntu 12.04. Я пытаюсь подключить свой monit
conf, чтобы отслеживать его, но у него проблемы с подключением к службе.
У меня Solr работает на порту 8983
и может подключиться через http://localhost:8983/solr/
, но не может подключиться через localhost
, 127.0.0.1
, или 0.0.0.0
в моем файле monit conf.
Мониторинг файла conf:
check process solr with pidfile "/var/run/jetty.pid"
start program = "/usr/sbin/service jetty start"
stop program = "/usr/sbin/service jetty stop"
if failed host 127.0.0.1 port 8983 protocol http then restart
if totalmem is greater than 7268 MB for 10 cycles then restart
if 5 restarts within 5 cycles then timeout
Netstat:
root@ip-10-110-37-29:~# netstat -lnp | grep 8983
tcp 0 0 0.0.0.0:8983 0.0.0.0:* LISTEN 16033/java
Я пробовал разные варианты if failed
строк, но в моих журналах всегда появляются следующие ошибки мониторинга:
'solr' failed, cannot open a connection to INET[localhost:8983] via TCP
Что я здесь делаю не так?
Я считаю, что проблема заключается в том, что новый веб-интерфейс (er) Solr использует тонну Javascript и других перенаправлений, что-то, возможно, базовое monit
http checker не справляется. Оказывается, для этого есть специальная страница по адресу http://localhost:8983/admin/ping
или, в случае моей многоядерной установки, http://localhost:8983/solr/<MY_COLLECTION_NAME>/admin/ping
Также была проблема с задержкой старта на пристани. Я использовал monit, чтобы запустить причал, который сразу же проверял и перезапускался, прежде чем пристань поднялась и смогла ответить. Поскольку время моего цикла было очень маленьким (10), команда программы остановки причала была запущена еще до запуска причала!
Итак, продвигаясь вперед, я решил эту проблему, запустив собственный причальный сервер перед установкой скрипта monit, а затем настроив скрипт monit, чтобы перезапускался реже при неудачном http-соединении:
check process solr with pidfile "/var/run/jetty.pid"
start program = "/usr/sbin/service jetty start"
stop program = "/usr/sbin/service jetty stop"
if failed host localhost port 8983 protocol http and request "/solr/<MY_COLLECTION_NAME>/admin/ping" for 3 cycles then restart
if totalmem is greater than 1024 MB for 15 cycles then restart
if 5 restarts within 15 cycles then timeout