Ubuntu

Monit 無法連接到 Solr/Jetty 實例

  • May 23, 2017

我的 Solr/Jetty 在 Ubuntu 12.04 上執行良好。我正在嘗試連接我的monitconf 來監控它,但它無法連接到服務。

我在埠上執行 Solr8983並且可以通過 連接http://localhost:8983/solr/,但無法通過localhost127.0.0.10.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 和其他重定向,這可能是基本的monithttp 檢查器無法處理的。原來有一個特殊的頁面,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

引用自:https://serverfault.com/questions/620728