進程監控工具supervisor

supervisor是一個python編寫的進程管理工具, 能夠方便的管理和監控進程. supervisor分爲服務端supervisord和客戶端supervisorctl.python

supervisor由python編寫, 能夠使用pip安裝:shell

pip install supervisor

也能夠使用apt-get來安裝:服務器

apt-get install supervisor

配置supervisor

/etc/supervisor目錄下能夠看到supervisord的主要配置文件supervisord.conf:socket

; 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文件:url

[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配置都要設置這三項.unix

autostart=true表示在supervisord啓動時該子進程會自動啓動. 在服務器重啓後只須要重啓supervisord, 再也不須要一個一個地啓動進程.rest

autoresatrt=trus表示若該子進程崩潰, supervisor會自動重啓該進程.code

使用supervisorctl

supervisorctrl客戶端能夠查看子進程的狀態並進行控制:server

  • supervisorctl status 查看各子進程運行狀態

  • supervisorctl start <program> 根據program配置啓動相應的子進程

  • supervisorctl stop <program> 中止子進程

  • supervisorctl restart <program> 重啓子進程

  • supervisorctl reread 從新讀入配置文件, 但不會增長新的程序

  • supervisorctl update 根據新讀入配置文件, 更新程序配置

須要注意的一點是supervisor更新配置文件比較麻煩, 更新原有程序的配置須要reread - update - restart三個操做, 而添加新程序也須要reread - update - start .

相關文章
相關標籤/搜索