我的 Solr/Jetty 在 Ubuntu 12.04 上正常运行。我试图连接我的monit
conf 来监控它,但它无法连接到服务。
我在端口上运行了 Solr ,8983
并且可以通过 进行连接,但无法在我的 monit conf 文件中http://localhost:8983/solr/
通过localhost
、127.0.0.1
或进行连接。0.0.0.0
监控配置文件:
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
网络状态:
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
我在这里做错了什么?
答案1
我认为问题在于,较新的 Solr Web 界面使用了大量 Javascript 和其他重定向,这可能是基本monit
http 检查器无法处理的。事实证明http://localhost:8983/admin/ping
,在我的多核设置中,有一个专门的页面,http://localhost:8983/solr/<MY_COLLECTION_NAME>/admin/ping
Jetty 的启动延迟也存在问题。我使用 monit 启动了 Jetty,它在 Jetty 启动并能够响应之前就立即检查并重新启动。由于我的周期时间很短(10),Jetty 停止程序命令在 Jetty 启动之前就运行了!
因此,我通过在安装 monit 脚本之前自行启动 jetty 服务器来解决这个问题,然后调整 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