首页 > 代码库 > Supervisor进程监控

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页面简单操作 
      • http://ip:port 
    • 常用命令 
      • 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(待完善) 

Supervisor进程监控