概述 Supervisor是由python语言编写,基于linux操作系统的一款服务器管理工具, 用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能。
基础环境
软件安装
supervisor
meld(python html模版引擎)
下载地址:
meld3 http://www.plope.com/software/meld3/meld3-0.6.5.tar.gz
supervisor
http://pypi.python.org/packages/source/s/supervisor/supervisor-3.0b1.tar.gz
下载解压,分别执行python setup.py install安装
文件配置
创建配置文件
1 echo_supervisord_conf > /etc/supervisord.conf
修改配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 增加web监控服务 [inet_http_server] ; inet (TCP) server disabled by default port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface) username=user ; (default is no username (open server)) password=123 ; (default is no password (open server)) # 增加监控程序 [program:tail1] command=tail -f /etc/supervisord.conf ;常驻后台的命令 autostart=true ;是否随supervisor启动 autorestart=true ;是否在挂了之后重启,意外关闭后会重启,比如kill掉! startretries=3 ;启动尝试次数 stderr_logfile=/tmp/tail1.err.log ;标准输出的位置 stdout_logfile=/tmp/tail1.out.log ;标准错误输出的位置 # 也可以监控目录下配置文件,监控/etc/supervisord.d/目录下conf后缀文件,conf中配置监控程序 [include] files=/etc/supervisord.d/*.conf
启动监控 1 /usr/bin/supervisord -c /etc/supervisord.conf
访问浏览器ip:9001
supervisorctl管理程序进程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # 查询状态 upervisorctl status # 开启服务 supervisorctl start hello # 关闭服务 supervisorctl stop hello # 示例 # 停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是programname supervisorctl stop programname # 启动某个进程 supervisorctl start programname # 重启某个进程 supervisorctl restart programname # 重启所有属于名为groupworker这个分组的进程(start,restart同理) supervisorctl stop groupworker # 停止全部进程,注:start、restart、stop都不会载入最新的配置文件 supervisorctl stop all # 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程 supervisorctl reload 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启 supervisorctl update,
增加程序启动停止脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #!/bin/sh # # /etc/init.d/supervisord # # Supervisor is a client/server system that # allows its users to monitor and control a # number of processes on UNIX-like operating # systems. # # chkconfig: - 64 36 # description: Supervisor Server # processname: supervisord # Source init functions . /etc/rc.d/init.d/functions prog="supervisord" prefix="/usr" exec_prefix="${prefix}" prog_bin="${exec_prefix}/bin/supervisord" PIDFILE="/var/run/$prog.pid" start() { echo -n $"Starting $prog: " ###注意下面这一行一定得有-c /etc/supervisord.conf 不然修改了配置文件根本不生效! daemon $prog_bin -c /etc/supervisord.conf --pidfile $PIDFILE [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup" echo } stop() { echo -n $"Shutting down $prog: " [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown" echo } case "$1" in start) start ;; stop) stop ;; status) status $prog ;; restart) stop start ;; *) echo "Usage: $0 {start|stop|restart|status}" ;; esac
然后加入启动项呗
1 2 3 4 chmod +x /etc/init.d/supervisord chkconfig --add supervisord chkconfig supervisord on service supervisord start
这样可以通过/etc/init.d/supervisord start | stop |restart 来管理supervisord
参考内容:http://supervisord.org/
概述 Flume为数据采集工具,但缺乏监控工具,Flume进程的状态不能实时看到,且进程停止不回自动重启,可以利用Supervisor来完成这些工作。
安装配置Supervisor 参考文章 http://infullstack.com/linux_supervisor.html
配置/etc/supervisord.conf 1 2 3 4 5 6 7 8 9 10 11 12 [program:flume] command=sh /usr/lib/flume/bin/flume-ng agent --conf /usr/lib/flume/conf/ -f /usr/lib/flume/conf/flume.conf -n agent1 -Dflume.root.logger=INFO,console autostart=true ;是否随supervisor启动 autorestart=true ;是否在挂了之后重启,意外关闭后会重启,比如kill掉! startretries=3 ;启动尝试次数 stderr_logfile=/tmp/flume.err.log ;标准输出的位置 stdout_logfile=/tmp/flume.out.log ;标准错误输出的位置 # 也可以监控目录下配置文件,监控/etc/supervisord.d/目录下conf后缀文件,conf文件中配置监控上述内容 [include] files=/etc/supervisord.d/*.conf
备注 程序不需要提前启动,supervisor启动的时候会启动Flume