天天看點

supervisor 從安裝到使用(Centos7)

安裝

pip install supervisor

生成配置檔案(/etc/supervisord.conf)

echo_supervisord_conf > /etc/supervisord.conf

啟動supervisor

  • 手動啟動
/usr/bin/supervisord -c /etc/supervisor.conf

           
  • 設定開機自啟

編輯啟動腳本(各系統腳本https://github.com/Supervisor/initscripts)

vim /lib/systemd/system/supervisord.service

# supervisord service for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
           

加入開機自啟服務

systemctl enable supervisord.service  #設定開機自啟
systemctl start/restart/stop supervisor.service  開啟/重新開機/停止
           
  • 修改配置檔案include字段(在配置檔案底部,配置include)
[include]
files = etc/supervisord/conf.d/*.conf
           
  • 添加被管理的程序

在/etc/supervisord/conf.d 目錄下的 xxx.conf 檔案中配置 supervisor 要管理的程序。

如管理tomcat程序:vi /etc/supervisord/conf.d/tomcat.conf

;[program:tomcat] 是被管理的程序配置參數,tomcat是程序的名稱,原文用xx表示,tomcat是我要監控的對象
[program:tomcat]
command=/usr/local/tomcat/bin/catalina.sh run ; 程式啟動指令
autostart=true       ; 在supervisord啟動的時候也自動啟動
startsecs=10         ; 啟動10秒後沒有異常退出,就表示程序正常啟動了,預設為1秒
autorestart=true     ; 程式退出後自動重新開機,可選值:[unexpected,true,false],預設為unexpected,表示程序意外殺死後才重新開機
startretries=3       ; 啟動失敗自動重試次數,預設是3
user=root          ; 用哪個使用者啟動程序,預設是root
priority=999         ; 程序啟動優先級,預設999,值小的優先啟動
redirect_stderr=true ; 把stderr重定向到stdout,預設false
stdout_logfile_maxbytes=20MB  ; stdout 日志檔案大小,預設50MB
stdout_logfile_backups = 20   ; stdout 日志檔案備份數,預設是10
; stdout 日志檔案,需要注意當指定目錄不存在時無法正常啟動,是以需要手動建立目錄(supervisord 會自動建立日志檔案)
stdout_logfile=stdout_logfile=/usr/local/tomcat/logs/catalina.out
stopasgroup=true     ;預設為false,程序被殺死時,是否向這個程序組發送stop信号,包括子程序
killasgroup=true     ;預設為false,向程序組發送kill信号,包括子程序
environment=LC_ALL="C.UTF-8",  # 啟動此服務時設定的環境變量
           
  • 重新讀取 *.conf 檔案,以識别新添加的服務

supervisorctl reload

  • 全部停止

supervisorctl stop all

  • 全部啟動

supervisorctl start all