Supervisor 監控 Flask 服務
契機
自己建立的 flask 服務不知莫名的原因一直掛掉非常苦惱,當務之急是讓這個服務不要中斷,於是找到這個 supervisor 套件可以幫忙監控服務。而本篇文章特別紀念一下這位 Supervisor 大功臣。
簡介
Supervisor 是一個用 python 撰寫的程序管理套件,提供視覺化介面,方便可以啟用、重啟和關閉。該套件可以監控程序的狀態,若程序掛掉可以自動重啟,易於開發者監控服務。
安裝步驟
實作環境為 Ubuntu 20.04.2 LTS
sudo apt-get install supervisor |
待會有兩個檔案需要設定,分別為 Supervisor 設定檔和自己服務的設定檔
Supervisor 設定檔
將範例檔存到自己的路徑,而我是存放於 /etc/supervisor 的路徑之下
echo_supervisord_conf > /etc/supervisor/supervisord.conf |
接著進入設定檔修改參數
vim /etc/supervisor/supervisord.conf |
修改最後兩行參數,修改 files 指向,待會要新增設定服務檔
[include] |
我有特別將 unix_http_server、inet_http_server 、supervisorctl 的註解做改寫如下(因為一直遇到 ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized> 的錯誤,主要是因為 authentication,有找這篇文章解決問題)
[unix_http_server] |
服務設定檔
新增自己要監控的服務設定檔,例如我創建一個 demo.conf
vim /etc/supervisor/conf.d/demo.conf |
在這個 demo.conf 可以設定您的服務,這邊的 program 名稱等等會用到哦!
[program:demo_server] |
啟用監控服務
啟動 Supervisor
上面都設定完畢後就可以啟動 Supervisor 囉!
supervisord -c /etc/supervisor/supervisord.conf |
可以看一下是否有在 9001 port 啟動服務或是用 ps -ef 看一下
lsof -i:9001 |
啟動服務監控
接者就啟動自己的服務
supervisorctl start demo_server |
如果發現沒有啟動成功,可以看一下錯誤問題是什麼
supervisorctl tail demo_server stderr |
筆者就發現該環境沒有安裝好 flask_script (應該要用 docker 來避免環境的問題)
裝好後大家就可以自己殺掉服務,看 supervisor 有沒有幫你重啟服務。
常用 Supervisor 指令
supervisorctl start |
使用心得
只要幾個安裝步驟就可以方便監控服務,之後不需要服務掛掉要自己重啟,還有 web 面板可以操控,真是不錯!
If you find my article helpful, please consider giving it a thumbs up or expressing your appreciation with a like or comment below. Thank you for your support!