Supervisor进程监控
- 安装
- yum install -y python-setuptools
- easy_install supervisor
- echo_supervisord_conf > /etc/supervisord.conf将默认配置保存在/etc/supervisord.conf中
- 配置
- supervisord连接方式使用http,而不是unix socket,并设置登录验证信息。
- 添加被监控程序,被监控程序自身非后台运行
- 使配置生效kill -HUP supervisord_pid
- 需要注意的地方
- 如果autostart设为true(默认),而被监控进程为单例模式运行,则在被监控进程已运行的情况下重启supervisord,supervisord会不停的尝试启动被监控进程,造成资源浪费。
- 被监控进程的stdout和stderr输出默认被保存在单独的临时文件中,可根据需要进行配置。supervisord默认启动时会清除这些临时文件,如需要可修改配置nocleanup=true。建议将被监控进程的输出手动重定向。
- 运行
- supervisord [-c /etc/supervisord.conf]
- 增加到开机启动
- 监控
- 通过客户端命令行操作
- supervisorctl -s http://ip:port -u user -p passwd command
- 通过web页面简单操作
- 常用命令
- status [nginxes:nginx]
- reload/reread/shutdown
- start/restart/stop <proc>
- 事件监听及通知机制
- supervisor向listeners发送和子进程或自身有关的notification。对于同一pool内的listeners,supervisor会选取任一可用的进行通知。
- 配置被监控进程
[program:x]
的日志Capture Mode,被监控进程可向stdout输出业务数据,由supervisod捕获这些数据,发给listener。 - 配置event-listener:监听PROCESS_COMMUNICATION_STDOUT事件
- envent-listener模块开发:使用python的supervisor.childutils模块。该模块可作为监控代理模块,和进程及网管服务通信。与网管服务可采用redis的list实现。
- XML-RPC API(待完善)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。