Monit não pode se conectar à instância do Solr / Jetty

1

Eu tenho meu Solr / Jetty funcionando bem no Ubuntu 12.04. Eu estou tentando ligar meu monit conf para monitorá-lo, mas está tendo problemas para se conectar ao serviço.

Tenho o Solr em execução na porta 8983 e posso me conectar por meio de http://localhost:8983/solr/ , mas não posso me conectar por meio de localhost , 127.0.0.1 ou 0.0.0.0 no meu arquivo monit conf.

Monit conf file:

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

Eu tentei diferentes permutações de if failed lines, mas sempre recebo os seguintes erros de monit em meus logs:

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

O que estou fazendo de errado aqui?

    
por coneybeare 15.08.2014 / 17:01

1 resposta

1

Acredito que o problema está no fato de que a nova (er) interface web Solr usa uma grande quantidade de Javascript e outros redirecionamentos, algo que talvez o verificador básico monit http não consiga manipular. Acontece que há uma página especial para isso em http://localhost:8983/admin/ping ou, no caso da minha configuração multicore, http://localhost:8983/solr/<MY_COLLECTION_NAME>/admin/ping

Houve também um problema com o atraso no início do jetty. Eu usei o monitor para iniciar o jetty, que estava checando e reiniciando imediatamente, antes que o jetty estivesse pronto para responder. Como meu tempo de ciclo era muito baixo (10), o comando do programa de parada do jetty foi executado antes mesmo de o jetty ser iniciado!

Então, seguindo em frente, resolvi-o iniciando o servidor jetty sozinho antes de instalar o script monit e, em seguida, aprimorando o script monit para reiniciar com menos frequência com falha na conexão 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
    
por 18.08.2014 / 03:00