1. 程式人生 > 其它 >安裝並使用supervisor守護程序監控

安裝並使用supervisor守護程序監控

1.前言 supervisor是一個程序管理工具,當程序中斷的時候supervisor能自動重新啟動它,可以執行再各類的unix機器上,supervisor就是用Python開發的一套通用的程序管理程式,能將一個普通的命令列程序變為後臺daemon,並監控程序狀態,異常退出時能自動重啟 2.安裝supervisor 一共有兩張安裝方式,一般採用方式二tar包的安裝方式,本文講解方式二安裝 安裝方法一: yum -y install python-setuptools easy_install supervisor 安裝方法二: wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz tar zxvf supervisor-3.1.3.tar.gz cd supervisor-3.1.3 python setup.py install 3.檢查是否安裝成功(輸出有配置檔案即為成功) echo_supervisord_conf 4.配置supervisor 4.1建立supervisor目錄和初始化配置檔案 mkdir -p /www/server/supervisor (我一般都喜歡存放再/www下的目錄,可自行更改) echo_supervisord_conf > /www/server/supervisord.conf 4.2修改supervisord.conf配置檔案 vim supervisord.conf 這裡只更改自己所需要的配置,如果想了解更多配置說明,請訪問:
https://www.cnblogs.com/toutou/p/supervisor.html
[unix_http_server] file=/www/server/supervisor/supervisord.d/run/supervisor/supervisor.sock ; socket 路徑 [supervisorctl] #socket路徑 serverurl=unix:///www/server/supervisor/supervisord.d/run/supervisor.sock [supervisord] ; supervisord 全域性配置 logfile=/www/server/supervisor/supervisord.d/log/supervisord.log ; supervisor 日誌路徑 pidfile=/www/server/supervisor/supervisord.d/run/supervisord.pid ; pid 檔案路徑 [include] ;為了不將所有新增的配置資訊寫一個配置檔案,這裡標註一個配置資訊存放目錄,方便管理 files = /www/server/supervisor/supervisord.d/conf/*.conf 注:可選修改配置,啟用web監控 --推薦不開啟佔資源 [inet_http_server] port=127.0.0.1:9001 ;看配置檔案都可自行修改 username=user password=123 4.3建立日誌,程序配置資訊目錄等 mkdir -p /www/server/supervisor/supervisord.d mkdir -p /www/server/supervisor/supervisord.d/run mkdir -p /www/server/supervisor/supervisord.d/conf mkdir -p /www/server/supervisor/supervisord.d/log 5.新增一個程序資訊並啟動,如confd vim /www/server/supervisor/supervisord.d/conf/confd.conf [program:confd] directory = /usr/local/bin ; 程式的啟動目錄 command = /usr/local/bin/confd -config-file /etc/confd/confd.toml ; 啟動命令,與命令列啟動的命令是一樣的 autostart = true ; 在 supervisord 啟動的時候也自動啟動 startsecs = 5 ; 啟動 5 秒後沒有異常退出,就當作已經正常啟動了 autorestart = true ; 程式異常退出後自動重啟 startretries = 3 ; 啟動失敗自動重試次數,預設是 3 user = root ; 用哪個使用者啟動 redirect_stderr = true ; 把 stderr 重定向到 stdout,預設 false stdout_logfile_maxbytes = 20MB ; stdout 日誌檔案大小,預設 50MB stdout_logfile_backups = 20 ; stdout 日誌檔案備份數 ; stdout 日誌檔案,需要注意當指定目錄不存在時無法正常啟動,所以需要手動建立目錄(supervisord 會自動建立日誌檔案) stdout_logfile = /www/server/supervisor/supervisord.d/log/confd.log ;日誌統一放在log目錄下 ; 可以通過 environment 來新增需要的環境變數,一種常見的用法是修改 PYTHONPATH ; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere 6.啟動surpervisord 方法一: 加軟連線: ln-s/www/server/supervisor/supervisord.conf/etc/ supervisord -c /www/server/supervisor/supervisord.conf 方法二: 設定開機自啟 vim /usr/lib/systemd/system/supervisord.service [Unit] Description=Process Monitoring and Control Daemon After=rc-local.service nss-user-lookup.target [Service] Type=forking ExecStart=/usr/bin/supervisord -c /www/server/supervisor/supervisord.conf ExecStop=/usr/bin/supervisord shutdown ExecReload=/usr/bin/supervisord reload killMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target systemctl start superxisord systemctl stop superxisord systemctl enables superxisord systemctl status superxisord 7.supervisorctl命令詳解 supervisorctl status 檢視正在執行程序 supervisorctl update 更新新的配置檔案到supervisord.conf(不重啟已經再執行的程序) supervisorctl reload 載入所有配置檔案,並啟動(需要重啟已經運動的程序) supervisorctl start xxx 啟動某個程序如文章的[program:beepkg],取program:beepkg supervisorctl stop xxx 關閉某個程序 supervisorctl restart xxx 重啟某個程序 supervisorctl stop groupworker 重啟所有屬於名為groupworker扎個分組的程序(start,restart同理) supervisorctl stop all 停止全部程序 記錄工作中的一下問題