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 файл.

Файл Monit 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 строки, но всегда получают следующие monit ошибки в моих журналах:

'solr' failed, cannot open a connection to INET[localhost:8983] via TCP

Что я делаю неправильно здесь?

1
задан 15 August 2014 в 18:01
1 ответ

Я считаю, что проблема заключается в том, что новый(ие) веб-интерфейс Solr использует тонну Javascript и других перенаправлений, что-то, что, возможно, не может быть обработано базовым http-провероком monit. Оказалось, что для этого есть специальная страница на http://localhost:8983/admin/ping или, в случае моей многоядерной установки, http://localhost:8983/solr//admin/ping

Там также была проблема с задержкой старта в причале. Я использовал монитор для того, чтобы запустить пристань, которая проверяла и перезапускала сразу же, до того, как пристань поднялась и смогла ответить. Так как мое время цикла было так низко (10), команда останова причала была запущена еще до того, как причал был запущен!

Итак, двигаясь вперед, я решил эту проблему, запустив сервер причала самостоятельно перед установкой скрипта монитора, а затем настроив скрипт монитора, чтобы он реже перезапускался при неудачном 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
1
ответ дан 4 December 2019 в 00:20

Теги

Похожие вопросы