安裝並使用supervisor守護程序監控
阿新 • • 發佈:2021-08-05
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 停止全部程序
記錄工作中的一下問題