天天看點

程序監控工具supervisor配置supervisor使用supervisorctl

supervisor是一個python編寫的程序管理工具, 可以友善的管理和監控程序. supervisor分為服務端supervisord和用戶端supervisorctl.

supervisor由python編寫, 可以使用pip安裝:

pip install supervisor
           

也可以使用apt-get來安裝:

apt-get install supervisor
           

配置supervisor

/etc/supervisor

目錄下可以看到supervisord的主要配置檔案

supervisord.conf

:

; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)


[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket


[include]
files = /etc/supervisor/conf.d/*.conf
           

為了便于管理, 我們将需要監控的程序寫入

/etc/supervisor/conf.d/*.conf

中, 這些配置檔案将被導入主配置檔案.

建立一個blog.conf檔案:

[program:blog]
directory=/home/www/Blog
command=uwsgi --ini wsgi.ini
user=www
autostart=true
autorestart=true
stdout_logfile=/home/www/Blog/log/supervisor.log
           

在啟動blog子程序時supervisord會以user的身份在directory目錄下執行command指令以啟動子程序. 一般情況下, 每個program配置都要設定這三項.

autostart=true

表示在supervisord啟動時該子程序會自動啟動. 在伺服器重新開機後隻需要重新開機supervisord, 不再需要一個一個地啟動程序.

autoresatrt=trus

表示若該子程序崩潰, supervisor會自動重新開機該程序.

使用supervisorctl

supervisorctrl用戶端可以檢視子程序的狀态并進行控制:

  • supervisorctl status

    檢視各子程序運作狀态
  • supervisorctl start <program>

    根據program配置啟動相應的子程序
  • supervisorctl stop <program>

    停止子程序
  • supervisorctl restart <program>

    重新開機子程序
  • supervisorctl reread

    重新讀入配置檔案, 但不會增加新的程式
  • supervisorctl update

    根據新讀入配置檔案, 更新程式配置

需要注意的一點是supervisor更新配置檔案比較麻煩, 更新原有程式的配置需要

reread - update - restart

三個操作, 而添加新程式也需要

reread - update - start

.