supervisor程序管理軟體
阿新 • • 發佈:2018-11-20
centos7預設是systemctl 來管理程序的,安裝supervisor後我們可以通過supervisor來幫我們管理程序。
supervisor管理程序,是通過fork/exec的方式將這些被管理的程序當作supervisor的子程序來啟動,所以我們只需要將要管理程序的可執行檔案的路徑新增到supervisor的配置檔案中就好了。此時被管理程序被視為supervisor的子程序,若該子程序異常中斷,則父程序可以準確的獲取子程序異常中斷的資訊,通過在配置檔案中設定autostart=ture,可以實現對異常中斷的子程序的自動重啟。
第一步我們用yum 下載安裝
第二步修改預設啟動配置檔案(按照預設的配置檔案啟動會報錯)
*
#unix:///var/run/supervisor/supervisor.sock no such file
vim /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Process Monitoring and Control Daemon #對這個服務的描述
after=rc-local.service nss-user-lookup.target syslog.target network.target mysqld.service
#supervisord.service在這些服務之後啟動
[Service] #定義如何啟動該服務
Type=forking
ExecReload=/usr/bin/kill -s HUP $MAINPID #重啟時執行的命令
ExecStop=/usr/bin/kill -s QUIT $MAINPID #停止服務時執行的命令
Restart=always #服務總是重啟
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf #supervisor手動啟動
[Install]
WantedBy=multi-user.target
#Target的含義是服務組,supervisord.service服務在他的組當中
設定完成後重啟服務
systemctl restart supervisord.service
沒有報錯資訊說明該服務正常啟動
第三步將我們需要的服務新增到該程式當中
vim /etc/supervisord.conf 開啟該配置檔案下拉到最後一行
會發現這裡指出supervisord監聽的物件資訊都包含在*.ini 這個檔案當中,所以我們新增物件只需要配置ini檔案即可
接下來我以tomcat為例
cd /etc/supervisord.d/
vim /etc/supervisord.d/tomcat.ini
[program:tomcat] #程式名稱,在 supervisorctl 中通過這個值來對程式進行一系列的操作
command=/opt/server/tomcat8080/bin/catalina.sh run #tomcat的啟動命令
stderr_logfile=/data/tomcat_logs/tomcat_stderr.log #錯誤日誌的記錄檔案
stdout_logfile=/data/tomcat_logs/tomcat_stdout.log #指定日誌輸出的檔案
user = root #指定啟動的使用者名稱
stdout_logfile_backups=10 #stdout 日誌檔案備份數
autostart=true # 在 supervisord 啟動的時候也自動啟動
autorestart=true #程式異常退出後自動重啟
redirect_stderr=true # 把 stderr 重定向到 stdout,預設 false
priority=1 #優先順序=1
進入管理選單命令 supervisorctl
status all 檢視全部服務
在這個介面可以看到所監控服務的全部狀態
RUNNING 正常 STOPPED關閉
重啟服務 restart tomcat 關閉服務 stop tomcat
檢視日誌 tail -f tomcat