1. 程式人生 > >3分鐘學會如何上手supervisor看門狗

3分鐘學會如何上手supervisor看門狗

### 軟硬體環境 - centos7.6.1810 64bit ``` cat /etc/redhat-release #檢視系統版本 ``` - supervisor 3.4.0 - python 2.7.5 ### supervisor簡介 `supervisor`是一個用`python`語言編寫的`程序管理`工具,它可以很方便的監聽、啟動、停止、重啟一個或多個程序。當一個程序意外被殺死,`supervisor`監聽到程序死後,可以很方便的讓程序自動恢復,不再需要程式設計師或系統管理員自己編寫程式碼來控制。 ### supervisord安裝 ``` yum install -y epel-release yum install -y supervisor ``` #### 啟動&開啟自啟 ``` systemctl start supervisord systemctl enable supervisord ``` #### 其他命令 ``` systemctl stop supervisord systemctl start supervisord systemctl status supervisord systemctl reload supervisord systemctl restart supervisord ``` ### supervisor的web端 `supervisor`提供了基於`web`的控制,管理員可以通過在頁面上點點按鈕即可完成對程序的啟動、重啟等操作,甚是方便。 進入配置檔案,開啟對web端的支援 ``` vim /etc/supervisord.conf ``` 如果提供給外部訪問,需要將port改為本機ip地址 ``` #取消10-13行註釋,前面數字是行號 [inet_http_server] ; inet (TCP) server disabled by default port=192.168.26.121:9001 ; (ip_address:port specifier, *:port for all iface) username=user ; (default is no username (open server)) password=123 ; (default is no password (open server)) ``` 配置完成後重啟服務 ``` systemctl restart supervisord ``` ### supervisord應用配置 進入supervisord配置檔案 ``` cat /etc/supervisord.conf ``` 通過配置檔案最後一行看到 ``` [include] files = supervisord.d/*.ini ``` 也就是說,我們所有的應用配置檔案都儲存在這個目錄下,以**.ini**格式命名儲存的,可以自行修改地址,但不要修改後綴 那我們來建立一個受監控的應用吧 #### 建立測試python配置 建立一個名稱叫做**python**的應用程式配置 ```shell vim /etc/supervisord.d/python.ini ``` 配置檔案內容,其中command就是我們應用程式啟動需要執行的命令 ```ini [program:python] #這裡的python就是我們顯示在web前端以及終端的監控名稱 command=python /tmp/supervisordtest/test.py #我們要監控的檔案地址 autostart=true autorestart=true startsecs=1 startretries=3 redirect_stderr=true stdout_logfile=/tmp/supervisordtest/access_python.log #日誌地址,可自行配置目錄 stderr_logfile=/tmp/supervisordtest/error_python.log #日誌地址,可自行配置目錄 ``` #### 建立test.py ```shell mkdir /tmp/supervisordtest vim /tmp/supervisordtest/test.py ``` 程式內容:開啟一個死迴圈,不停的列印內容 ```python while True: print(100) ``` 重啟supervisord使配置檔案生效 ``` systemctl restart supervisord ``` #### 檢視應用是否正常啟動 1、命令檢視 ``` systemctl status supervisord ``` 2、視覺化web檢視 web端可以重啟,停止,清理日誌,檢視日誌等多個操作 ![image-20200607153351958](https://gitee.com/happlyfox/img/raw/master/img/image-20200607153351958.png) ### supervisor相關的幾個命令 安裝完畢,會生成3個系統命令`supervisorctl`、`supervisord`和`echo_supervisord_conf` 1. `supervisord`,執行`supervisor`時會啟動一個程序`supervisord`,它負責啟動所管理的程序,並將所管理的程序作為自己的子程序來啟動,而且可以在所管理的程序出現崩潰時自動重啟 2. supervisorctl是命令列管理工具,可以用來執行 *s*tart stop restart 等命令,來對這些子程序進行管理, 如 ``` sudo supervisorctl start demoweb ``` 其中demoweb是程序的名稱, 詳細的命令及說明見下面的這張表 | 命令 | 說明 | | :--------------------------------: | :--------------------------------------------------------: | | supervisorctl start program_name | 啟動某個程序 | | supervisorctl stop program_name | 停止某個程序 | | supervisorctl restart program_name | 重啟某個程序 | | supervisorctl status program_name | 檢視某個程序的狀態 | | supervisorctl stop all | 停止全部程序 \| \ | | supervisorctl reload | 載入最新的配置檔案,重啟所有程序 | | supervisorctl update | 根據最新的配置,重啟配置更改過的程序,未更新的程序不受影響 | 3. ``` echo_supervisord_conf ``` 用來生成預設的配置檔案(預設配置檔案,內容非常齊全且都有註釋,適合用時查閱,用法是這樣的 ``` echo_supervisord_conf > test.conf