天天看點

Linux程序監控工具Supervisor簡易使用教程

Supervisor

使用b/s架構、運作在類Unix系統上一個程序監控管理系統。

它可以使程序以daemon方式運作,并且一直監控程序,在意外退出時能自動重新開機程序。

<b>安裝</b>

Supervisor是使用python開發的一個程序管工具,安裝和使用都非常簡單。使用 pip 或者 easy_install 安裝會非常友善,自動解決依賴關系。

pip的安裝請參考 Python pip 安裝使用教程

初識

安裝完成後系統會增加幾個指令

<code>supervisord</code> 用于啟動supervisor服務。

<code>supervisorctl</code> 用于管理supervisor服務,管理使用supervisor啟動的程序。

安裝好supervisor後需要手動的生成配置檔案。

supervisor預設讀取的配置檔案為/etc/supervisord.conf,建議将配置檔案放在此位置。

我們先簡單的檢視一下 supervisord.conf,配置檔案格式和ini格式配置檔案相同,由節、鍵、值組成,配置檔案注釋為<code>;</code>。

此節是配置連接配接supervisord的sock的檔案,包括sock檔案路徑,使用者認證。使用supervisorctl指令進行管理程序時,使用的就是此sock檔案。預設保持開啟,如将此項關閉[inet_http_server] 則無法使用。

此節配置supervisor的web管理界面,配置監聽的位址和端口,已經使用者認證。預設為關閉狀态。如需開啟則将此節注釋去掉,然後修改相應的鍵值。

此節為配置supervisor服務參數,例如日志,日志大小等一些參數。

用于配置supervisorctl管理程式參數,例如sock檔案路徑,需要和[unix_http_server]相同。

此節作用為包含其他配置檔案,本文建議開啟此項,包含額外的配置檔案,将需要管理的程序配置寫入到額外的配置檔案,不需要經常編輯主配置檔案,保證安全性。修改代碼為

讀取/etc/supervisor.d/檔案夾下所有字尾為conf的檔案。

第一步

配置第一個使用supervisord管理的程式

我們使用 python2.7來作為示範,使用SimpleHTTPServer子產品友善快速的啟動一個http server。

1,建立配置檔案 /etc/supervisor.d/test1.conf,寫入一下内容

這是一個最簡單的例子,第一行指定目前配置的程式名稱。第二行程式運作指令(20080 為 http server端口号)。

2,第一個程式已經配置好,接下來就可以啟動supervisord來檢視一下效果。

輸入指令 <code>sudo supervisord</code> 即可啟動服務。

很多機器會列印出幾行資訊,這并不代表程式出錯,意思是

3,現在使用<code>ps -ef | grep python</code>來檢查一下剛才配置的程式是否已經啟動。到此為止我們的第一步已經完成。

詳細配置

Linux程式監控工具Supervisor簡易使用教程

必要參數隻有 command,其他未可選參數。

[program:x] 自定義的程式名不能重複

配置示例

管理tornado應用

需要啟動4個程序,分别監聽四個連續端口(20081 – 20084)。

将錯誤輸出定向到标準輸出,每個端口标準輸出寫入到不同檔案中,單個檔案最大50MB,最多儲存3個備份。

啟動前等待3秒。

supervisord啟動時自動啟動。程式運作出錯自動重新開機,最大嘗試重新開機次數3次。

Linux程式監控工具Supervisor簡易使用教程

管理nginx

nginx預設運作狀态是背景運作程式。supervisord不能管理此類程式需要,需要修改nginx主配置檔案。

在nginx最外層加入<code>daemon off</code>;

最簡單的配置。

supervisorctl

supervisor程序管理工具,可以友善啟動停止程序,檢視程式日志,重新載入配置檔案。

如果supervisord配置檔案不再預設位置,使用supervisorctl工具時需要指定配置檔案路徑 <code>supervisordctl -c 配置檔案路徑</code>

常用指令

<code>start stop restart + all</code> 表示啟動,關閉,重新開機所有程序。

如果一個程序啟動了多個副本,例如上文tornado-test,關閉所有副本。

原文釋出時間為:2016-11-30

本文作者:gw1770df