天天看點

【管理工具】程序管理工具Supervisor(送書活動)supervisord啟動成功後,可以通過supervisorctl用戶端控制程序,啟動、停止、重新開機。運作supervisorctl指令,不加參數,會進入supervisor用戶端的互動終端,并會列出目前所管理的所有程序。 [root@java-test ~]# supervisorctl supervisor> helpdefault commands (type help <topic>):

【管理工具】程序管理工具Supervisor(送書活動)

簡單介紹

Supervisor是一個用戶端/伺服器系統,允許使用者在類UNIX作業系統上控制許多程序。它是基于python語言開發一個程序管理工具。

Supervisor的伺服器端稱為supervisord,主要負責在啟動自身時啟動管理的子程序,響應用戶端的指令,重新開機崩潰或退出的子程序,記錄子程序stdout和stderr輸出,生成和處理子程序生命周期中的事件。可以在一個配置檔案中配置相關參數,包括Supervisord自身的狀态,其 管理的各個子程序的相關屬性。配置檔案一般位于/etc/supervisord.conf。

Supervisor的用戶端稱為supervisorctl,它提供了一個類shell的接口(即指令行)來使用supervisord服務端提供的功 能。通過supervisorctl,使用者可以連接配接到supervisord伺服器程序,獲得伺服器程序控制的子程序的狀态,啟動和停止子程序,獲得正在 運作的程序清單。用戶端通過Unix域套接字或者TCP套接字與服務端進行通信,伺服器端具有身份憑證認證機制,可以有效提升安全性。當用戶端和伺服器位 于同一台機器上時,用戶端與伺服器共用同一個配置檔案/etc/supervisord.conf,通過不同标簽來區分兩者的配置。

Supervisor也提供了一個web頁面來檢視和管理程序狀态,這個功能用得人比較少。

官方網站:http://supervisord.org

【管理工具】程式管理工具Supervisor(送書活動)supervisord啟動成功後,可以通過supervisorctl用戶端控制程式,啟動、停止、重新開機。運作supervisorctl指令,不加參數,會進入supervisor用戶端的互動終端,并會列出目前所管理的所有程式。 [root@java-test ~]# supervisorctl supervisor> helpdefault commands (type help <topic>):

安裝環境準備

系統環境

[root@nginx ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@nginx ~]# uname -r

3.10.0-693.17.1.el7.x86_64

[root@nginx ~]# python --version

Python 2.7.5

如果沒有安裝 python環境可以使用yum install python -y進行安裝

平台要求

Supervisor可以運作在大多數Unix系統上,但不支援在Windows系統上運作。

Supervisor需要Python2.4及以上版本,但任何Python 3版本都不支援。

安裝supervisor服務

安裝easy_install

[root@nginx ~]# yum install python-setuptools-devel -y

安裝supervisor

easy_install supervisor

supervisor安裝完成後會生成三個執行程式:

supervisortd

#supervisor的守護程序服務(用于接收程序管理指令)

supervisorctl

#用戶端(用于和守護程序通信,發送管理程序的指令)

echo_supervisord_conf

#生成初始配置檔案程式

建立配置檔案

一般可以通過運作echo_supervisord_conf程式生成supervisor的初始化配置檔案

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

[root@ ~]# ll /etc/supervisor/supervisord.conf

-rw-r--r-- 1 root root 9710 Jan 24 15:10 /etc/supervisor/supervisord.conf

配置檔案參數介紹

[unix_http_server]

file=/tmp/supervisor.sock ;UNIX socket 檔案,supervisorctl 會使用

;chmod=0700 ;socket檔案的mode,預設是0700

;chown=nobody:nogroup ;socket檔案的owner,格式:uid:gid

;[inet_http_server] ;HTTP伺服器,提供web管理界面

;port=127.0.0.1:9001

;Web管理背景運作的IP和端口,如果開放到公網,需要注意安全性

;username=user ;登入管理背景的使用者名

;password=123 ;登入管理背景的密碼

[supervisord]

logfile=/tmp/supervisord.log

;日志檔案,預設是 $CWD/supervisord.log

logfile_maxbytes=50MB

;日志檔案大小,超出會rotate,預設 50MB,如果設成0,表示不限制大小

logfile_backups=10 ;日志檔案保留備份數量預設10,設為0表示不備份

loglevel=info ;日志級别,預設info,其它: debug,warn,trace

pidfile=/tmp/supervisord.pid ;pid 檔案

nodaemon=false ;是否在前台啟動,預設是false,即以 daemon 的方式啟動

minfds=1024 ;可以打開的檔案描述符的最小值,預設 1024

minprocs=200 ;可以打開的程序數的最小值,預設 200

[supervisorctl]

serverurl=unix:///tmp/supervisor.sock

;通過UNIX socket連接配接supervisord,路徑與unix_http_server部分的file一緻

;serverurl=http://127.0.0.1:9001

; 通過HTTP的方式連接配接supervisord

[program:xx]

; [program:xx]是被管理的程序配置參數,xx是程序的名稱

command=/opt/tomcat/bin/catalina.sh run

; 程式啟動指令

autostart=true ; 在supervisord啟動的時候也自動啟動

startsecs=10 ; 啟動10秒後沒有異常退出,就表示程序正常啟動了,預設為1秒

autorestart=true ; 程式退出後自動重新開機,可選值:[unexpected,true,false],預設為unexpected,表示程序意外殺死後才重新開機

startretries=3 ; 啟動失敗自動重試次數,預設是3

user=tomcat ; 用哪個使用者啟動程序,預設是root

priority=999 ; 程序啟動優先級,預設999,值小的優先啟動

redirect_stderr=true ; 把stderr重定向到stdout,預設false

stdout_logfile_maxbytes=20MB ; stdout 日志檔案大小,預設50MB

stdout_logfile_backups = 20 ; stdout 日志檔案備份數,預設是10

; stdout 日志檔案,需要注意當指定目錄不存在時無法正常啟動,是以需要手動建立目錄(supervisord 會自動建立日志檔案)

stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out

stopasgroup=false

;預設為false,程序被殺死時,是否向這個程序組發送stop信号,包括子程序

killasgroup=false

;預設為false,向程序組發送kill信号,包括子程序

[include] ;包含其它配置檔案

files = relative/directory/*.ini

;可以指定一個或多個以.ini結束的配置檔案

注:配置檔案中;是注釋

常用指令介紹

supervisord啟動成功後,可以通過supervisorctl用戶端控制程序,啟動、停止、重新開機。運作supervisorctl指令,不加參數,會進入supervisor用戶端的互動終端,并會列出目前所管理的所有程序。

[root@java-test ~]# supervisorctl

supervisor> help

default commands (type help <topic>):

add clear fg open quit remove restart start stop update

avail exit maintail pid reload reread shutdown status tail version

【管理工具】程式管理工具Supervisor(送書活動)supervisord啟動成功後,可以通過supervisorctl用戶端控制程式,啟動、停止、重新開機。運作supervisorctl指令,不加參數,會進入supervisor用戶端的互動終端,并會列出目前所管理的所有程式。 [root@java-test ~]# supervisorctl supervisor&gt; helpdefault commands (type help &lt;topic&gt;):

可以通過help指令檢視相關指令的使用及參數

配置管理程序

下面是配置Tomcat程序的一個例子:

[program:tomcat]

command=/usr/local/tomcat/bin/catalina.sh run

stdout_logfile=/usr/local/tomcat/logs/catalina.out

autostart=true

autorestart=true

startsecs=5

priority=1

stopasgroup=true

killasgroup=true

配置完成後,啟動服務

supervisord -c /etc/supervisor/supervisord.conf

啟動後需要執行下面的操作來更新配置檔案

[root@ ~]# supervisorctl update

[root@ ~]# supervisorctl status

tomcat RUNNING pid 12223, uptime 0:06:31

終端的指令

supervisorctl status

supervisorctl stop tomcat

supervisorctl start tomcat

supervisorctl restart tomcat

【管理工具】程式管理工具Supervisor(送書活動)supervisord啟動成功後,可以通過supervisorctl用戶端控制程式,啟動、停止、重新開機。運作supervisorctl指令,不加參數,會進入supervisor用戶端的互動終端,并會列出目前所管理的所有程式。 [root@java-test ~]# supervisorctl supervisor&gt; helpdefault commands (type help &lt;topic&gt;):

福利專區

送書規則