Supervisor[筆記]
supervisord -h 檢視 supervisord 命令幫助
supervisorctl -h 檢視 supervisorctl 命令幫助
supervisorctl help 檢視 supervisorctl 的 Action 命令
supervisorctl help 任意一個Action 檢視這個 Action 的使用
1. 簡介
Supervisor 是一個程式控制系統. 通俗點說, 它可以監控你的程式, 程式異常退出, 它可以自動幫你重啟程式.所以我們可以使用它來監控佇列消費程式 等等
2. 安裝
2.1 使用 包管理器 安裝(安裝的不是最新版本)
# Ubuntu
sudo apt install supervisor
# Centos
sudo yum install supervisor
2.2 使用 pip 安裝
pip install supervisor
3. 建立配置檔案
Supervisor 安裝以後, 執行 echo_supervisord_conf
命令, 會在終端輸出預設配置. 看到配置內容後, 執行 echo_supervisord_conf > /etc/supervisord.conf
將輸出預設配置輸出到 /etc/supervisord.conf
檔案中. 配置檔案就建立好了.
4. 啟動 Supervisor
直接在終端執行 supervisord
就會將 supervisor 啟動. 這個命令預設用的是 /etc/supervisord.conf
這個配置檔案. 如果你想使用自定義的配置檔案啟動 Supervisor , 執行 supervisord -c 配置檔案
.
5. 使用 Supervisor
Supervisor 有 supervisord
, supervisorctl
, Web Server
, XML-RPC Interface
四個部分:
supervisord
用於啟動 服務端 程式.supervisorctl
相當於啟動一個客戶端, 用來管理其下的程式.Web Server
提供 web 服務, 方便你檢視程式狀態XML-RPC Interface
(沒用過)
6. 常用命令
有兩種使用方式, 你可以直接在終端輸入
supervisorctl
啟動客戶端, 然後輸入status
update
之類的命令來管理程式. 或者 直接輸入supervisorctl status
supervisorctl update
.
- status: 檢視程式狀態
- stop: 關閉程式
- start: 啟動程式
- restart: 重啟程式
- reread: 讀取有更新的配置檔案,不會重啟程式
- update: 重啟配置檔案修改過的程式
- tail: 檢視程式日誌
7. 程式配置檔案
; 冒號後為程式字首
[program:laravel-worker]
; 程式名稱
process_name=%(program_name)s_%(process_num)02d
; 程式執行的命令
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
; 如果是 true, 當 supervisor 啟動時, 程式將會自動啟動
autostart=true
; 檢測到程式退出時是否自動重啟
autorestart=true
; 執行程式的使用者
user=forge
; 程式數量
numprocs=8
; 重定向錯誤流到標準輸出,等價於 2>&1
redirect_stderr=true
; 標準日誌輸出檔案
stdout_logfile=/home/forge/app.com/worker.log
預設配置的最後有這麼一段:
[include]
files = supervisord.d/*.ini
意思是 supervisor 會讀取 supervisord.d 下的 .ini
檔案, 所以把你的配置檔案按要求命名儲存就可以了.
8. 命令詳解
8.1 清理日誌
clear <name> Clear a process' log files.
clear <name> <name> Clear multiple process' log files
clear all Clear all process' log files
8.2 重啟程式
restart <name> Restart a process
restart <gname>:* Restart all processes in a group
restart <name> <name> Restart multiple processes or groups
restart all Restart all processes
Note: restart does not reread config files. For that, see reread and update.(重啟不會重新讀取配置檔案)
8.3 啟動程式
start <name> Start a process
start <gname>:* Start all processes in a group
start <name> <name> Start multiple processes or groups
start all Start all processes
8.4 停止程式
stop <name> Stop a process
stop <gname>:* Stop all processes in a group
stop <name> <name> Stop multiple processes or groups
stop all Stop all processes
8.5 update: 重新載入配置, 根據需要增加或移除程式
update Reload config and add/remove as necessary
update all Reload config and add/remove as necessary
update <gname> [...] Update specific groups
8.6 展示所有管理的程式
avail Display all configured processes
8.7 reload: 重啟 supervisord(修改 supervisord.conf 需要執行的操作)
reload Restart the remote supervisord
8.8 reread: 讀取有更新的配置檔案,不會重啟程式
reread Reload the daemon's configuration files
8.9 結束 supervisord 程式
shutdown Shut the remote supervisord down
8.10 檢視程式狀態
status <name> Get status for a single process
status <gname>:* Get status for all processes in a group
status <name> <name> Get status for multiple named processes
status Get all process status info