Linux 进程管理与监控(supervisor and monit)
一、Supervisor
1、安裝
宿主機環境:( Centos 6.5 )
pip2.7?install?supervisor2、創建配置文件
通過?echo_supervisord_conf?命令來創建配置文件:
echo_supervisord_conf?>/etc/supervisord.conf3、主配置文件基本參數
[unix_http_server] file=/var/run/supervisor/supervisor.sock chmod=0700 chown=www:www username=admin password=123456[supervisord] logfile=/var/log/supervisord.log logfile_maxbytes=50MB logfile_backups=10 loglevel=info pidfile=/var/run/supervisor/supervisord.pid nodaemon=false minfds=1024 minprocs=200[rpcinterface:supervisor] supervisor.rpcinterface_factory?=?supervisor.rpcinterface:make_main_rpcinterface[supervisorctl] serverurl=unix:///var/run/supervisor/supervisor.sock[include] files=/etc/supervisord_child/*.ini4、配置一個進程監控
[program:CommentMsg] command=?/bin/php?/test/art?Comment:msg process_name=%(process_num)02d numprocs=5 autostart=true autorestart=true startsecs=2 startretries=10 redirect_stderr=true stdout_logfile=/var/log/supervisor/CommentMsg.log stdout_logfile_maxbytes=10MB stdout_logfile_backups=10配置多個進程監控
啟動服務
supervisord?-c?/etc/supervisord.conf5、supervisorctl 常用指令
update?:重新讀取配置文件,且不會影響正在運行的程序;
start?:啟用進程
stop?:停止進程
restart?:重啟進程
reload?:重新載入配置文件,并重啟所有管理的進程。
status?:查看狀態
6、配置文件所有參數詳解
引用:http://lixcto.blog.51cto.com/4834175/1539136
[unix_http_server]???????????? file=/tmp/supervisor.sock???;?socket文件的路徑,supervisorctl用XML_RPC和supervisord通信就是通過它進行的。如果不設置的話,supervisorctl也就不能用了??不設置的話,默認為none。?非必須設置???????? ;chmod=0700?????????????????;?這個簡單,就是修改上面的那個socket文件的權限為0700不設置的話,默認為0700。?非必須設置 ;chown=nobody:nogroup???????;?這個一樣,修改上面的那個socket文件的屬組為user.group不設置的話,默認為啟動supervisord進程的用戶及屬組。非必須設置 ;username=user??????????????;?使用supervisorctl連接的時候,認證的用戶不設置的話,默認為不需要用戶。?非必須設置 ;password=123???????????????;?和上面的用戶名對應的密碼,可以直接使用明碼,也可以使用SHA加密如:{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d默認不設置。。。非必須設置;[inet_http_server]?????????;?偵聽在TCP上的socket,Web?Server和遠程的supervisorctl都要用到他不設置的話,默認為不開啟。非必須設置 ;port=127.0.0.1:9001????????;?這個是偵聽的IP和端口,偵聽所有IP用?:9001或*:9001。這個必須設置,只要上面的[inet_http_server]開啟了,就必須設置它 ;username=user??????????????;?這個和上面的uinx_http_server一個樣。非必須設置 ;password=123???????????????;?這個也一個樣。非必須設置[supervisord]????????????????;這個主要是定義supervisord這個服務端進程的一些參數的這個必須設置,不設置,supervisor就不用干活了 logfile=/tmp/supervisord.log?;?這個是supervisord這個主進程的日志路徑,注意和子進程的日志不搭嘎。默認路徑$CWD/supervisord.log,$CWD是當前目錄。。非必須設置 logfile_maxbytes=50MB????????;?這個是上面那個日志文件的最大的大小,當超過50M的時候,會生成一個新的日?志文件。當設置為0時,表示不限制文件大小默認值是50M,非必須設置。?????????????? logfile_backups=10???????????;?日志文件保持的數量,上面的日志文件大于50M時,就會生成一個新文件。文件數量大于10時,最初的老文件被新文件覆蓋,文件數量將保持為10當設置為0時,表示不限制文件的數量。默認情況下為10。。。非必須設置 loglevel=info????????????????;?日志級別,有critical,?error,?warn,?info,?debug,?trace,?or?blather等默認為info。。。非必須設置項 pidfile=/tmp/supervisord.pid?;?supervisord的pid文件路徑。默認為$CWD/supervisord.pid。。。非必須設置 nodaemon=false???????????????;?如果是true,supervisord進程將在前臺運行默認為false,也就是后臺以守護進程運行。。。非必須設置 minfds=1024??????????????????;?這個是最少系統空閑的文件描述符,低于這個值supervisor將不會啟動。系統的文件描述符在這里設置cat?/proc/sys/fs/file-max默認情況下為1024。。。非必須設置 minprocs=200?????????????????;?最小可用的進程描述符,低于這個值supervisor也將不會正常啟動。ulimit??-u這個命令,可以查看linux下面用戶的最大進程數默認為200。。。非必須設置 ;umask=022???????????????????;?進程創建文件的掩碼默認為022。。非必須設置項 ;user=chrism?????????????????;?這個參數可以設置一個非root用戶,當我們以root用戶啟動supervisord之后。我這里面設置的這個用戶,也可以對supervisord進行管理默認情況是不設置。。。非必須設置項 ;identifier=supervisor???????;?這個參數是supervisord的標識符,主要是給XML_RPC用的。當你有多個supervisor的時候,而且想調用XML_RPC統一管理,就需要為每個supervisor設置不同的標識符了默認是supervisord。。。非必需設置 ;directory=/tmp??????????????;?這個參數是當supervisord作為守護進程運行的時候,設置這個參數的話,啟動supervisord進程之前,會先切換到這個目錄默認不設置。。。非必須設置 ;nocleanup=true??????????????;?這個參數當為false的時候,會在supervisord進程啟動的時候,把以前子進程產生的日志文件(路徑為AUTO的情況下)清除掉。有時候咱們想要看歷史日志,當?然不想日志被清除了。所以可以設置為true默認是false,有調試需求的同學可以設置為true。。。非必須設置 ;childlogdir=/tmp????????????;?當子進程日志路徑為AUTO的時候,子進程日志文件的存放路徑。默認路徑是這個東西,執行下面的這個命令看看就OK了,處理的東西就默認路徑python?-c?"import?tempfile;print?tempfile.gettempdir()"非必須設置 ;environment=KEY="value"?????;?這個是用來設置環境變量的,supervisord在linux中啟動默認繼承了linux的環境變量,在這里可以設置supervisord進程特有的其他環境變量。supervisord啟動子進程時,子進程會拷貝父進程的內存空間內容。?所以設置的這些環境變量也會被子進程繼承。小例子:environment=name="haha",age="hehe"默認為不設置。。。非必須設置 ;strip_ansi=false????????????;?這個選項如果設置為true,會清除子進程日志中的所有ANSI?序列。什么是ANSI序列呢?就是我們的\n,\t這些東西。默認為false。。。非必須設置;?the?below?section?must?remain?in?the?config?file?for?RPC ;?(supervisorctl/web?interface)?to?work,?additional?interfaces?may?be ;?added?by?defining?them?in?separate?rpcinterface:?sections [rpcinterface:supervisor]????;這個選項是給XML_RPC用的,當然你如果想使用supervisord或者web?server?這?個選項必須要開啟的 supervisor.rpcinterface_factory?=?supervisor.rpcinterface:make_main_rpcinterface?[supervisorctl]??????????????;這個主要是針對supervisorctl的一些配置?? serverurl=unix:///tmp/supervisor.sock?;?這個是supervisorctl本地連接supervisord的時候,本地UNIX?socket路徑,注意這個是和前面的[unix_http_server]對應的默認值就是unix:///tmp/supervisor.sock。。非必須設置 ;serverurl=http://127.0.0.1:9001?;?這個是supervisorctl遠程連接supervisord的時候,用到的TCP?socket路徑注意這個和前面的[inet_http_server]對應默認就是http://127.0.0.1:9001。。。非必須項;username=chris??????????????;?用戶名默認空。。非必須設置 ;password=123????????????????;?密碼默認空。。非必須設置 ;prompt=mysupervisor?????????;?輸入用戶名密碼時候的提示符默認supervisor。。非必須設置 ;history_file=~/.sc_history??;?這個參數和shell中的history類似,我們可以用上下鍵來查找前面執行過的命令默認是no?file的。。所以我們想要有這種功能,必須指定一個文件。。。非必須設置;?The?below?sample?program?section?shows?all?possible?program?subsection?values, ;?create?one?or?more?'real'?program:?sections?to?be?able?to?control?them?under ;?supervisor.;[program:theprogramname]??????;這個就是咱們要管理的子進程了,":"后面的是名字,最好別亂寫和實際進程有點關聯最好。這樣的program我們可以設置一個或多個,一個program就是要被管理的一個進程 ;command=/bin/cat??????????????;?這個就是我們的要啟動進程的命令路徑了,可以帶參數例子:/home/test.py?-a?'hehe'有一點需要注意的是,我們的command只能是那種在終端運行的進程,不能是守護進程。這個想想也知道了,比如說command=service?httpd?start。httpd這個進程被linux的service管理了,我們的supervisor再去啟動這個命令這已經不是嚴格意義的子進程了。這個是個必須設置的項 ;process_name=%(program_name)s?;?這個是進程名,如果我們下面的numprocs參數為1的話,就不用管這個參數了,它默認值%(program_name)s也就是上面的那個program冒號后面的名字,但是如果numprocs為多個的話,那就不能這么干了。想想也知道,不可能每個進程都用同一個進程名吧。;numprocs=1????????????????????;?啟動進程的數目。當不為1時,就是進程池的概念,注意process_name的設置默認為1????。。非必須設置 ;directory=/tmp????????????????;?進程運行前,會前切換到這個目錄默認不設置。。。非必須設置 ;umask=022?????????????????????;?進程掩碼,默認none,非必須 ;priority=999??????????????????;?子進程啟動關閉優先級,優先級低的,最先啟動,關閉的時候最后關閉默認值為999?。。非必須設置 ;autostart=true????????????????;?如果是true的話,子進程將在supervisord啟動后被自動啟動默認就是true???。。非必須設置 ;autorestart=unexpected????????;?這個是設置子進程掛掉后自動重啟的情況,有三個選項,false,unexpected和true。如果為false的時候,無論什么情況下,都不會被重新啟動,如果為unexpected,只有當進程的退出碼不在下面的exitcodes里面定義的退?出碼的時候,才會被自動重啟。當為true的時候,只要子進程掛掉,將會被無條件的重啟 ;startsecs=1???????????????????;?這個選項是子進程啟動多少秒之后,此時狀態如果是running,則我們認為啟動成功了默認值為1?。。非必須設置 ;startretries=3????????????????;?當進程啟動失敗后,最大嘗試啟動的次數。。當超過3次后,supervisor將把此進程的狀態置為FAIL默認值為3?。。非必須設置 ;exitcodes=0,2?????????????????;?注意和上面的的autorestart=unexpected對應。。exitcodes里面的定義的退出碼是expected的。 ;stopsignal=QUIT???????????????;?進程停止信號,可以為TERM,?HUP,?INT,?QUIT,?KILL,?USR1,?or?USR2等信號默認為TERM?。。當用設定的信號去干掉進程,退出碼會被認為是expected非必須設置 ;stopwaitsecs=10???????????????;?這個是當我們向子進程發送stopsignal信號后,到系統返回信息給supervisord,所等待的最大時間。?超過這個時間,supervisord會向該子進程發送一個強制kill的信號。默認為10秒。。非必須設置 ;stopasgroup=false?????????????;?這個東西主要用于,supervisord管理的子進程,這個子進程本身還有子進程。那么我們如果僅僅干掉supervisord的子進程的話,子進程的子進程有可能會變成孤兒進程。所以咱們可以設置可個選項,把整個該子進程的整個進程組都干掉。?設置為true的話,一般killasgroup也會被設置為true。需要注意的是,該選項發送的是stop信號默認為false。。非必須設置。。 ;killasgroup=false?????????????;?這個和上面的stopasgroup類似,不過發送的是kill信號 ;user=chrism???????????????????;?如果supervisord是root啟動,我們在這里設置這個非root用戶,可以用來管理該program默認不設置。。。非必須設置項 ;redirect_stderr=true??????????;?如果為true,則stderr的日志會被寫入stdout日志文件中默認為false,非必須設置 ;stdout_logfile=/a/path????????;?子進程的stdout的日志路徑,可以指定路徑,AUTO,none等三個選項。設置為none的話,將沒有日志產生。設置為AUTO的話,將隨機找一個地方生成日志文件,而且當supervisord重新啟動的時候,以前的日志文件會被清空。當?redirect_stderr=true的時候,sterr也會寫進這個日志文件 ;stdout_logfile_maxbytes=1MB???;?日志文件最大大小,和[supervisord]中定義的一樣。默認為50 ;stdout_logfile_backups=10?????;?和[supervisord]定義的一樣。默認10 ;stdout_capture_maxbytes=1MB???;?這個東西是設定capture管道的大小,當值不為0的時候,子進程可以從stdout發送信息,而supervisor可以根據信息,發送相應的event。默認為0,為0的時候表達關閉管道。。。非必須項 ;stdout_events_enabled=false???;?當設置為ture的時候,當子進程由stdout向文件描述符中寫日志的時候,將觸發supervisord發送PROCESS_LOG_STDOUT類型的event默認為false。。。非必須設置 ;stderr_logfile=/a/path????????;?這個東西是設置stderr寫的日志路徑,當redirect_stderr=true。這個就不用設置了,設置了也是白搭。因為它會被寫入stdout_logfile的同一個文件中默認為AUTO,也就是隨便找個地存,supervisord重啟被清空。。非必須設置 ;stderr_logfile_maxbytes=1MB???;?這個出現好幾次了,就不重復了 ;stderr_logfile_backups=10?????;?這個也是 ;stderr_capture_maxbytes=1MB???;?這個一樣,和stdout_capture一樣。?默認為0,關閉狀態 ;stderr_events_enabled=false???;?這個也是一樣,默認為false ;environment=A="1",B="2"???????;?這個是該子進程的環境變量,和別的子進程是不共享的 ;serverurl=AUTO????????????????;?;?The?below?sample?eventlistener?section?shows?all?possible ;?eventlistener?subsection?values,?create?one?or?more?'real' ;?eventlistener:?sections?to?be?able?to?handle?event?notifications ;?sent?by?supervisor.;[eventlistener:theeventlistenername]?;這個東西其實和program的地位是一樣的,也是suopervisor啟動的子進程,不過它干的活是訂閱supervisord發送的event。他的名字就叫listener了。我們可以在listener里面做一系列處理,比如報警等等樓主這兩天干的活,就是弄的這玩意 ;command=/bin/eventlistener????;?這個和上面的program一樣,表示listener的可執行文件的路徑 ;process_name=%(program_name)s?;?這個也一樣,進程名,當下面的numprocs為多個的時候,才需要。否則默認就OK了 ;numprocs=1????????????????????;?相同的listener啟動的個數 ;events=EVENT??????????????????;?event事件的類型,也就是說,只有寫在這個地方的事件類型。才會被發送;buffer_size=10????????????????;?這個是event隊列緩存大小,單位不太清楚,樓主猜測應該是個吧。當buffer超過10的時候,最舊的event將會被清除,并把新的event放進去。默認值為10。。非必須選項 ;directory=/tmp????????????????;?進程執行前,會切換到這個目錄下執行默認為不切換。。。非必須 ;umask=022?????????????????????;?淹沒,默認為none,不說了 ;priority=-1???????????????????;?啟動優先級,默認-1,也不扯了 ;autostart=true????????????????;?是否隨supervisord啟動一起啟動,默認true ;autorestart=unexpected????????;?是否自動重啟,和program一個樣,分true,false,unexpected等,注意unexpected和exitcodes的關系 ;startsecs=1???????????????????;?也是一樣,進程啟動后跑了幾秒鐘,才被認定為成功啟動,默認1 ;startretries=3????????????????;?失敗最大嘗試次數,默認3 ;exitcodes=0,2?????????????????;?期望或者說預料中的進程退出碼, ;stopsignal=QUIT???????????????;?干掉進程的信號,默認為TERM,比如設置為QUIT,那么如果QUIT來干這個進程那么會被認為是正常維護,退出碼也被認為是expected中的 ;stopwaitsecs=10???????????????;?max?num?secs?to?wait?b4?SIGKILL?(default?10) ;stopasgroup=false?????????????;?send?stop?signal?to?the?UNIX?process?group?(default?false) ;killasgroup=false?????????????;?SIGKILL?the?UNIX?process?group?(def?false) ;user=chrism???????????????????;設置普通用戶,可以用來管理該listener進程。默認為空。。非必須設置 ;redirect_stderr=true??????????;?為true的話,stderr的log會并入stdout的log里面默認為false。。。非必須設置 ;stdout_logfile=/a/path????????;?這個不說了,好幾遍了 ;stdout_logfile_maxbytes=1MB???;?這個也是 ;stdout_logfile_backups=10?????;?這個也是 ;stdout_events_enabled=false???;?這個其實是錯的,listener是不能發送event ;stderr_logfile=/a/path????????;?這個也是 ;stderr_logfile_maxbytes=1MB???;?這個也是 ;stderr_logfile_backups????????;?這個不說了 ;stderr_events_enabled=false???;?這個也是錯的,listener不能發送event ;environment=A="1",B="2"???????;?這個是該子進程的環境變量默認為空。。。非必須設置 ;serverurl=AUTO????????????????;?override?serverurl?computation?(childutils);?The?below?sample?group?section?shows?all?possible?group?values, ;?create?one?or?more?'real'?group:?sections?to?create?"heterogeneous" ;?process?groups.;[group:thegroupname]??;這個東西就是給programs分組,劃分到組里面的program。我們就不用一個一個去操作了我們可以對組名進行統一的操作。?注意:program被劃分到組里面之后,就相當于原來的配置從supervisor的配置文件里消失了。。。supervisor只會對組進行管理,而不再會對組里面的單個program進行管理了 ;programs=progname1,progname2??;?組成員,用逗號分開這個是個必須的設置項 ;priority=999??????????????????;?優先級,相對于組和組之間說的默認999。。非必須選項;?The?[include]?section?can?just?contain?the?"files"?setting.??This ;?setting?can?list?multiple?files?(separated?by?whitespace?or ;?newlines).??It?can?also?contain?wildcards.??The?filenames?are ;?interpreted?as?relative?to?this?file.??Included?files?*cannot* ;?include?files?themselves.;[include]?????????????????????????;這個東西挺有用的,當我們要管理的進程很多的時候,寫在一個文件里面就有點大了。我們可以把配置信息寫到多個文件中,然后include過來 ;files?=?relative/directory/*.ini7、常見錯誤總結
BACKOFF Exited too quickly (process log may have details)
由于supervisor??比較適合監控業務應用,且只能監控前臺程序,php fork方式實現的daemon和其他的daemon程序不能用它監控,否則就會出現偶爾報錯。
假如 redis 需要用supervisor監控,需要在redis主配置文件中,將其修改為非daemon模式啟動。
更多詳細用法見官網:?http://supervisord.org/
二、Monit
? ? monit是一個開源的輕量級監控工具,功能十分強大。可以從多個層面進行監控,可以自動維護進程,發送郵件報警等。
系統監控:進程狀態,系統負載,cpu負載,內存占用等。
進程監控:monit可以監控守護進程,當被監控進程異常退出時,可以自動被拉起。
文件系統:Monit可以監控本地文件、目錄、文件系統的變化,包括時間戳、校驗值、大小的變化。例如,可以監控文件sha1以及md5的值,來監控文件是否發生變化
網絡監控:monit可以監控網絡連接,支持TCP、UDP、Unix domain sockets以及HTTP、SMTP等。
? ? ?monit 官網:https://mmonit.com/monit/
1、程序安裝
#?安裝方式分為兩種#?使用?yum?安裝yum?install?monit?-y#?源碼安裝tar?xf?monit-5.18.tar.gz cd?monit-5.18 ./configure?--prefix=/usr/local/monit make?&&?make?install#?提供主配置文件cp?monitrc?/etc/monitrc2、配置應用解析
主配置文件:/etc/monitrc
############################################################################### ##?Monit?control?file ################################################################################?檢查周期,默認為2分鐘,可以根據需要自行調節,這里改成30秒。 set?daemon??30#?日志文件 set?logfile?/var/log/monit.log#?設置郵件服務器 set?mailserver'smtp.163.com'?????????????????#?指定郵件服務器地址,IP?or?HostNameport?465using?sslusername?'adminevp@163.com'password?'123456'#?設置告警郵件的接收地址 set?alert?123456@qq.com#?設置郵件格式 set?mail-format?{from:?adminevp@163.com??#?郵件發送人?—?如果使用網易郵箱,郵件發送人必須為郵箱賬號,或者包含郵箱賬號subject:?monit?alert?--??$EVENT?$SERVICEmessage:?$EVENT?Service?$SERVICEDate:????????$DATEAction:??????$ACTIONHost:????????$HOSTDescription:?$DESCRIPTIONYour?faithful?employee,Monit }#?monit內置了一個Web頁面的狀態監視set?httpd?port?2812?anduse?address?0.0.0.0????#?設置監聽的IPallow?115.116.139.162?????#?設置允許訪問的IPallow?localhostallow?192.168.0.0/16?allow?admin:monit??????#?設置用于訪問驗證的用戶名:密碼#?可以包含擴展配置文件,便于配置的分類管理 include?/etc/monit.d/*系統運行狀況監控?
system_base.conf
#?主機名,可以是IP或者域名(其他為默認參數,可以根據自己需求微調) check?system?www.example.comif?loadavg?(1min)?>?4?then?alertif?loadavg?(5min)?>?2?then?alertif?memory?usage?>?75%?then?alertif?cpu?usage?(user)?>?70%?then?alertif?cpu?usage?(system)?>?30%?then?alertif?cpu?usage?(wait)?>?20%?then?alert監控Nginx
nginx_monit.conf
#?提供主進程pid文件 check?process?nginx?with?pidfile?/alidata/server/nginx/logs/nginx.pid#?進程啟動命令,必須寫絕對路徑start?program?=?"/etc/init.d/nginx?start"?with?timeout?30?seconds#?進程關閉命令stop?program??=?"/etc/init.d/nginx?stop"#?端口狀態檢測,當狀態返回異常,則重啟服務。if?failed?host?115.116.139.162?port?8081?protocol?http?then?restart#?當端口狀態異常,報警????if?failed?host?115.116.139.162?port?8081?protocol?http?then?alert#?在5個監視周期中,重啟了服務3次,則超時不再監視。?因為如果重啟了多次不成功,很有可能繼續重啟下去也不會成功,避免一直無效的重啟,白白消耗系統資源影響主機上其他進程的工作,這時應該通知人工處理。if?3?restarts?within?5?cycles?then?timeout#?如果在5個監視周期內,該服務的CPU使用率都超過90%則告警。???????if?cpu?usage?>?90%?for?5?cycles?then?alert#?設置分組,可選group?server#???可選的ssl端口的監控,如果有的話 #????if?failed?port?443?type?tcpssl?protocol?http #???????with?timeout?15?seconds #???????then?restart監控Apache
apache_monit.conf
check?process?apache?with?pidfile?/var/run/apache2.pidstart?program?=?"/etc/init.d/apache2?start"stop?program??=?"/etc/init.d/apache2?stop"#?Apache?耗系統資源比較厲害,額外添加一些關于這方面的監控設置if?cpu?>?50%?for?2?cycles?then?alertif?cpu?>?70%?for?5?cycles?then?restartif?totalmem?>?1500?MB?for?10?cycles?then?restartif?children?>?250?then?restartif?loadavg(5min)?greater?than?10?for?20?cycles?then?stopif?failed?host?www.example.com?port?8080?protocol?http?then?restartif?3?restarts?within?5?cycles?then?timeoutgroup?server#?可選,依賴于nginxdepends?on?nginx監控spawn-fcgi程序
check?process?spawn-fcgi?with?pidfile?/var/run/spawn-fcgi.pid#?spawn-fcgi一定要帶-P參數才會生成pid文件,默認是沒有的start?program?=?"/usr/bin/spawn-fcgi?-a?127.0.0.1?-p?8081?-C?10?-u?userxxx?-g?groupxxx?-P?/var/run/spawn-fcgi.pid?-f?/usr/bin/php-cgi"stop?program?=?"/usr/bin/killall?/usr/bin/php-cgi"#?fast-cgi走的不是http協議,monit的protocol參數也沒有cgi對應的設置,這里去掉protocol?http即可。if?failed?host?127.0.0.1?port?8081?then?restartif?3?restarts?within?5?cycles?then?timeoutgroup?serverdepends?on?nginx監控ssh
check?process?sshd?with?pidfile?/var/run/sshd.pidstart?program??"/etc/init.d/sshd?start"stop?program??"/etc/init.d/sshd?stop"if?failed?port?22?protocol?SSH?then?restartif?5?restarts?within?5?cycles?then?timeout監控MySQL
mysql_monit.conf
check?process?mysql?with?pidfile?/var/run/mysqld/mysqld.pidstart?program?=?"/etc/init.d/mysqld?start"stop?program?=?"/etc/init.d/mysqld?stop"if?failed?host?127.0.0.1?port?3306?then?restartif?5?restarts?within?5?cycles?then?timeout設置開啟啟動
echo '/usr/local/monit/bin/monit -c /etc/monitrc' >>?/etc/rc.d/rc.local
monit 命令行操作
?monit start nginx ? 啟動進程
?monit stop nginx ? 關閉進程
?monit -h ? ? ? ? ? ? ? ?查看幫助 ??
總結
以上是生活随笔為你收集整理的Linux 进程管理与监控(supervisor and monit)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米9充电速度怎么样(我的小米云服务)
- 下一篇: 如何在VMware8虚拟机里安装Xp G