supervisor-elasticsearch 采坑回顧


supervisor 是一個可以管理進程的軟件,並監控進程狀態,異常退出時能自動重啟。它是通過fork/exec的方式把這些被管理的進程當作supervisor的子進程來啟動,這樣只要在supervisor的配置文件中,把要管理的進程的可執行文件的路徑寫進去即可。supervisor還提供了一個功能,可以為supervisord或者每個子進程,設置一個非root的user,這個user就可以管理它對應的進程。比如我們要用它管理elasticsearch  就可以把管理es的專屬用戶密碼  寫入配置文件。

  1.  網上有很多supervisor的安裝教程,也比較簡單。這里就不再贅述。開始使用的時候需要先看一看 配置文件 路徑:/etc/supervisord.conf  。

  

  因為我們可能會用  supervisor 管理很多進程 寫在一個文件會很大,所以通常需要 每一個 進程獨立出一個 以 .ini 為后綴的配置文件 單獨管理。

  按照配置文件默認的加載路徑  supervisord.d/ 下創建了  elasticsearch.ini  文件。

  

  command=/usr/local/elasticsearch-6.6.1/bin/elasticsearch ; 運行程序的命令
  autorestart=true ; 程序意外退出是否自動重啟
  autostart=true ; 是否自動啟動
  stderr_logfile=/var/log/supervisor/elasticsearch_err.log ; 錯誤日志文件
  stdout_logfile=/var/log/supervisor/elasticsearch_out.log ; 輸出日志文件
  environment=JAVA_HOME=/usr/local/jdk1.8.0_201 ; 進程環境變量
  user=ela ; 進程執行的用戶身份
  password=ela
  stopsignal=INT
  startsecs=10 ; 自動重啟間隔

  寫入上圖中的配置信息(當時沒有寫  environment  JAVA_HOME 的配置)

       所以   執行  supervisorctl  reload  、 supervisorctl  restart  elasticsearch    總是失敗。

 

       2、開始排錯  (在坑里的感覺真不好)

    

  第一個直覺就是去查看  supervisor的日志了  以為  elasticsearch  根本就沒啟動 也不會輸出 日志

      

  

  所以一直在查    exit status 1; not expected   elasticsearch entered FATAL state, too many start retries too quickly   這個問題  ,然后  會發現管理很多其他的  進程  出錯時也會  報這種錯  也試了很多  搜到的  解決方法  ,但是結果肯定都不適用。

 

  3、出坑  

       找解決方法找的  都眼疼了  。  偶然的契機我去  看了眼   elasticsearch.ini  配置文件中  指定的   輸出日志    和 錯誤 輸出日志  。驚奇的發現   人家已經默默滴  記錄了好多日志啦(手動捂臉) 。

  

   所以  直接打開  error  日志

  

  所以  真相浮出水面  直接去配置文件添加    JAVA_HOME  環境變量   再重新reload  、 start   終於運行了。

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM