supervisord(http://supervisord.org/introduction.html)是一個非常優秀的進程管理工具,使用Python開發。它可以在類UNIX系統的方式讓用戶來准確地監視和控制后台一定數量的服務進程。並作為一個天使進程讓后台進程在當發生內部錯誤退出、或者進程被意外殺死時自動重啟。除此之外,supervisord可以監控TCP端口,讓其他主機通過客戶端了命令supervisorctl通過HTTP協議直接對Server端進程進行啟停,避免讓進程/服務器管理者直接接觸Shell或root用戶。進程之間也有一個優先級和進程組關系,讓管理員使用start all和stop all的關系來啟動。
下面就讓我們來介紹下supervisord監控服務必備命令:
supervisord : supervisor的服務器端部分,用於supervisor啟動
supervisorctl:啟動supervisor的命令行窗口,在該命令行中可執行start、stop、status、
1.手動啟動:
supervisord -c /etc/supervisor/supervisord.conf
2.查看已啟動服務
pstree -p | grep supervisord
3.查看log日志
cat /tmp/supervisord.log
4.用 supervisorctl 查看已經被監控的program
(注:直接用 #supervisorctl 會提示:http://localhost:9001 refused connection)
supervisorctl -c /etc/supervisor/supervisord.conf
5.執行supervisorctl reload的命令可以重啟監控服務
supervisorctl reload
6.supervisorctl status命令查看運行狀態
supervisorctl status
7. supervisord,初始啟動Supervisord,啟動、管理配置中設置的進程。
supervisorctl stop programxxx,停止某一個進程(programxxx),programxxx為[program:mhqdemo]里配置的值,這個示例就是mhqdemo。
supervisorctl start programxxx,啟動某個進程
supervisorctl restart programxxx,重啟某個進程
supervisorctl stop all,停止全部進程,注:start、restart、stop都不會載入最新的配置文件。
supervisorctl reload,載入最新的配置文件,並按新的配置啟動、管理所有進程。
以下參考文章 :supervisor常用命令
查看任務狀態
# supervisorctl status SmartCoin RUNNING pid 13203, uptime 0:04:05 coin RUNNING pid 30744, uptime 17 days, 20:45:18 deepwellserver RUNNING pid 30257, uptime 30 days, 4:13:01 jingtumassetapi RUNNING pid 14536, uptime 45 days, 19:18:08 moac RUNNING pid 20015, uptime 15 days, 5:15:11 new RUNNING pid 10041, uptime 43 days, 22:41:56 nginx RUNNING pid 18752, uptime 22:59:40 redis RUNNING pid 14542, uptime 45 days, 19:18:08 sonyflakeserver FATAL can't find command 'go' sparkportal RUNNING pid 26073, uptime 1 day, 23:11:17 sparkportal2 RUNNING pid 25732, uptime 1 day, 23:11:21 sparkportal3 RUNNING pid 25834, uptime 1 day, 23:11:20 sparkportal4 RUNNING pid 25974, uptime 1 day, 23:11:18 sparkuser RUNNING pid 26957, uptime 9 days, 23:07:21 sparkwallet RUNNING pid 29045, uptime 5 days, 15:11:58 summaryservice RUNNING pid 14535, uptime 45 days, 19:18:08
第一列是服務名;第二列是運行狀態,RUNNING表示運行中,FATAL 表示運行失敗,STARTING表示正在啟動,STOPED表示任務已停止; 第三/四列是進程號,最后是任務已經運行的時間。
查看單個任務狀態: supervisorctl status 服務名
# supervisorctl status sparkportal sparkportal RUNNING pid 26073, uptime 1 day, 23:12:10
啟動/停止/重啟任務
1.啟動任務
supervisorctl start 服務名 # supervisorctl stop sparkportal sparkportal: stopped #supervisorctl status sparkportal sparkportal STOPPED Jan 05 01:59 PM
2.停止任務
supervisorctl stop 服務名 # supervisorctl start sparkportal sparkportal: started # supervisorctl status sparkportal sparkportal RUNNING pid 32207, uptime 0:00:05
3.重啟任務
supervisorctl restart 服務名 # supervisorctl restart sparkportal sparkportal: stopped sparkportal: started # supervisorctl status sparkportal sparkportal RUNNING pid 4952, uptime 0:00:03