注:-本工具屬于“工具-自動化-應(yīng)急”
-官方網(wǎng)站:http://www.supervisord.org/
1.有幾種方法可以運行管理工具Linux的后臺進程,如nohup、screen等。但是,如果它是一個服務(wù)程序,為了在后臺可靠地運行,我們需要使它成為一個守護進程,最好監(jiān)視進程狀態(tài),并在它意外結(jié)束時自動重新啟動。Supervisor是Python開發(fā)的一套通用的進程管理程序,可以將一個普通的命令行進程變成后臺守護進程,監(jiān)控進程狀態(tài),異常退出時自動重啟。
主管有兩個主要組成部分:
-Supersord,運行supervisor時,啟動一個process supervisord,負責啟動托管流程,將托管流程作為自己的子流程啟動,托管流程崩潰時自動重啟。
-supervisorctl是一個命令行管理工具,可用于執(zhí)行stop、start、restart和其他命令來管理這些子進程。
主管是所有流程的父流程,管理啟動子流程。主管用子流程的PID管理子流程。當子進程異常退出時,主管可以接收到相應(yīng)的信號量。
1)安裝主管
安裝主管
rpm-IVH supervisor-3.0-1 . gf . el6 . no arch . rpm
#在實際測量過程中,您還應(yīng)該安裝依賴包:
rpm-IVH python-meld 3-0 . 6 . 7-1 . El 6 . x86 _ 64 . rpm
服務(wù)命令:
服務(wù)監(jiān)督站
服務(wù)監(jiān)督啟動
2)配置文件介紹創(chuàng)建個人資料
echo _ super super sord _ conf & gt。/etc/supervisord.conf
默認supervisord.conf配置文件將supervisord.pid和supervisor.sock放在/tmp目錄下,Linux系統(tǒng)可能會刪除,需要修改。
[unix_http_server]
;file =/tmp/supervisor . sock;(套接字文件的路徑)
;將其修改到/var/run目錄以避免被系統(tǒng)刪除
file=/var/run/supervisor.sock
;chmod = 0700套接字文件模式(默認0700)
;chown = none:no group;套接字文件uid:gid所有者
;username = user(默認為無用戶名(打開服務(wù)器))
;password = 123(默認為無密碼(打開服務(wù)器))
;[inet _ http _ server];默認情況下禁用inet (TCP)服務(wù)器
;端口= 127 . 0 . 0 . 1:9001;(ip_address:端口說明符,*:的端口;所有iface)
;稍后將在遠程可視化管理中使用它
username = calypso(默認為無用戶名(打開服務(wù)器))
password = 123456(默認為無密碼(打開服務(wù)器))
...
[super super sord]
;log file =/tmp/supervisord . log;(主日志文件;default $CWD/supervisord.log)
;將其修改到/var/log目錄以避免被系統(tǒng)刪除
log file =/var/log/supervisor/supervisord . log
logfile _ maxbytes = 50MB(最大主日志文件字節(jié)b4循環(huán);默認50MB)
logfile _ backups = 10(主日志文件循環(huán)備份的數(shù)量;默認10)
loglevel = info(log level默認信息;其他:調(diào)試、警告、跟蹤)
;PID file =/tmp/supervisord . PID;(supervisord pidfile默認supervisord.pid)
;將其修改到/var/run目錄以避免被系統(tǒng)刪除
PID file =/var/run/supervisord . PID;(supervisord pidfile默認supervisord.pid)
...
[supervisorctl]
;將其修改到/var/run目錄以避免被系統(tǒng)刪除
server URL = UNIX:///var/run/supervisor . sock;使用unix://網(wǎng)址作為unix套接字
;server URL = http://127 . 0 . 0 . 1:9001;使用http:// url指定inet套接字
;用戶名= chris如果設(shè)置,應(yīng)該與http_username相同
;password = 123如果設(shè)置,應(yīng)該與http_password相同
[包括]
files = /etc/supervisord.d/*。ini對應(yīng)于要管理的過程配置文件
;[event listener:the event listener name]
;它是一個由supervisor啟動的子流程,訂閱supervisord發(fā)送的事件,如報警等。,以后會寫一篇關(guān)于發(fā)送事件報警的實用文章
;command =/bin/event listener;偵聽器可執(zhí)行文件的路徑
;process _ name = %(program _ name)s;進程名,只有當下面有多個numprocs時才需要。
;num procs = 1;相同監(jiān)聽程序的數(shù)量開始
;events = EVENT事件的類型,指定的類型將被發(fā)送
;buffer _ size = 10這是事件隊列緩存大小
;目錄=/tmp;在進程執(zhí)行之前,它會切換到這個目錄。默認是不切換。。。沒有必要
;umask = 022默認值為無
;優(yōu)先級=-1;開始優(yōu)先級,默認-1
;autostart = true是否從supervisord開始,默認為真
;autorestart =意外;是否自動重啟可分為真、假、意外等。
;start secs = 1;同樣如此。進程啟動后,它會運行幾秒鐘,然后才被視為成功啟動。默認值為1
;start retries = 3;失敗嘗試的最大次數(shù),默認值為3
;exitcodes=0,2;預(yù)期或預(yù)期的進程退出代碼,
;stopsignal = QUIT終止進程的信號,默認為TERM,比如設(shè)置為QUIT,那么如果QUIT來做這個進程,就認為是正常維護,退出代碼也認為是預(yù)期的
;stopwaitsecs = 10等待b4 SIGKILL的最大秒數(shù)(默認為10)
;stopasgroup = false向UNIX進程組發(fā)送停止信號(默認為false)
;killasgroup = falseUNIX進程組(def false)
;user = chrism設(shè)置普通用戶,可以用來管理監(jiān)聽器進程。默認值為空
;redirect _ stderr = true如果為真,stderr的日志將被合并到stdout的日志中,默認值為假
……
;[group:the groupname];程序分組
;programs=progname1,progname2組成員,用逗號分隔。這是一個必要的設(shè)置項目
;priority = 999優(yōu)先級,相對于組之間的默認值999
過程配置文件
;設(shè)置進程的名稱,在使用supervisorctl管理進程時需要使用該名稱
[程序:calypso_api]
command =/calypso/envs/GFSCalypsoAdapters/API/s/GFS _ calypso _ API _ service . sh start
directory =/calypso/envs/GFSCalypsoAdapters/API/s/;在執(zhí)行命令之前,請先切換到目錄
num procs = 1;默認值為1
process _ name = %(program _ name)s;默認值為%(program_name)s,在[program:x]中為x
user = calypso使用calypso用戶啟動該過程
#autostart=true
autorestart = true當程序崩潰時,會自動重啟。重啟次數(shù)有限,默認為3次。有三種選擇,假的,意料之外的,真的。如果為假,在任何情況下都不會重新啟動。如果它是意外的,只有當進程的退出代碼沒有在下面的exitcodes中定義時。
environment = PATH = "/usr/Java/JDK 1 . 7 . 0 _ 21/bin:/usr/lib 64/Qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/Dell/Sr vadmin/bin:/opt/mqm/samp/bin ";設(shè)置環(huán)境變量
redirect_stderr=true
stdout _ log file =/var/log/calypso _ API _ stdout . log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
stderr _ log file =/var/log/calypso _ API _ stderr . log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
3)引入3)監(jiān)督命令
#停止某個進程,在[program:x]中program_name為x
supervisorctl停止程序名稱
#開始一個過程
supervisorctl啟動程序_名稱
#重新啟動進程
supervisorctl重新啟動程序名稱
#結(jié)束屬于名為groupworker的組的所有進程(啟動、重新啟動是相同的)
supervisorctl stop groupworker:
#結(jié)束groupworker:name1的進程(啟動,重啟相同)
supervisor CTL stop group worker:name 1
#停止所有進程,注意:啟動、重啟和停止不會加載最新的配置文件
supervisorctl停止所有
#加載最新的配置文件,停止原始進程,并根據(jù)新的配置啟動和管理所有進程
supervisorctl重新加載
#根據(jù)最新的配置文件,用新的配置或更改啟動進程,用未更改的配置重新啟動進程而不受影響
supervisorctl更新
4)注意事項 (坑)-supervisor更適合監(jiān)控業(yè)務(wù)應(yīng)用,只能監(jiān)控前臺程序。如果您的程序是在守護模式下啟動的,execute: supervisor status將提示:太快退出現(xiàn)有(進程日志可能有詳細信息)。
-注意設(shè)置環(huán)境變量:環(huán)境=A="1 ",B = " 2過程環(huán)境添加(定義無添加)
2.事件插件1)插件:https://github.com/ouqiang/supervisor-event-listener
主管-事件-監(jiān)聽器,主管事件通知,支持郵件,松弛,網(wǎng)絡(luò)鉤子
2)網(wǎng)上有一個事件例子(有例子)http://www.cnblogs.com/felixzh/p/6100000.html
過一段時間,我會寫一篇關(guān)于這篇文章的特別文章
3.可視化工具默認工具只能管理一個流程。如果是在公司統(tǒng)一使用,那就要找一個可以統(tǒng)一管理所有流程的工具。官網(wǎng)推薦幾個可視化工具:-CESI
一個用Python寫的基于web的儀表盤。
django的Dashvisor
一個用Python寫的基于web的儀表盤。需要Django 1.3或1.4。
- Nodervisor
一個用Node.js編寫的基于web的儀表盤
-監(jiān)督監(jiān)視器
基于web的儀表盤是用PHP寫的。
-主管
另一個用PHP寫的基于web的儀表盤。
- supervisorclusterctl
命令行工具,用于使用Ansible控制多個主管實例。
- suponoff
用Python 3編寫的基于web的儀表盤。需要Django版或更高版本。
-管理員
專為分布式應(yīng)用而設(shè)計,用Python 2.7編寫。包括擴展的XML-RPC API和基于web的儀表板。
實際測試和試用,其中CESI不錯,推薦。節(jié)目來源:https://github.com/Gamegos/cesi
http://AE . koro Glu . org/central-supervisor-interface-cesi/
1.《supervisor linux應(yīng)用服務(wù)管理工具(supervisor)》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《supervisor linux應(yīng)用服務(wù)管理工具(supervisor)》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/shehui/853869.html