Ubuntu
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
網路統計:
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 Web 界面使用了大量的 Javascript 和其他重定向,這可能是基本的
monit
http 檢查器無法處理的。原來有一個特殊的頁面,http://localhost:8983/admin/ping
或者,在我的多核設置的情況下,http://localhost:8983/solr/<MY_COLLECTION_NAME>/admin/ping
碼頭的啟動延遲也存在問題。我使用 monit 啟動了 jetty,它會在 jetty 啟動並能夠響應之前立即檢查並重新啟動。因為我的循環時間太短(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