Назад | Перейти на главную страницу

Monit не может подключиться к экземпляру Solr / Jetty

У меня есть мой 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