赞
踩
Supervisor是由python语言编写,基于linux操作系统的一款服务器管理工具,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能。
1、软件安装
supervisor
meld(python html模版引擎)
1、通过pip直接安装。[前提是已经安装了pip的python工具包]
pip2 install meld3
pip2 install supervisor
2、通过pypi官网下载:
meld3:
Supervisor:
下载解压,分别执行python setup.py install安装
2、配置
1、创建配置文件
echo_supervisord_conf > /etc/supervisord.conf
2、修改配置文件
# 增加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))
3、启动监控
/usr/bin/supervisord -c /etc/supervisord.conf
访问浏览器ip:9001
4、配置supervisord的开机启动和管理脚本
首先关掉supervisord服务:
ps aux | grep supervisord
找到进程后kill -9 pid 否则一下配置脚本不生效。
vi /etc/init.d/supervisord
#!/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
然后加入启动项
chmod +x /etc/init.d/supervisord
chkconfig --add supervisord
chkconfig supervisord on
service supervisord start
####
这样就可以通过service supervisord start | stop |restart 来管理supervisord了。
5、监控服务
# 增加监控程序
[program:tail1]
command=tail -f /opt/access.log ;常驻后台的命令
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
6、添加flume支持
在/etc/supervisord.conf里
添加:
[include]
files=/etc/supervisord.d/*.conf
mkdir /etc/supervisord.d
vi /etc/supervisord.d/flume.conf
[program:flume]
command=sh /opt/apache-flume/bin/flume-ng agent --conf /opt/apache-flume/conf/ -f /opt/apache-flume/conf/busi.conf -n busi
autostart=true ;是否随supervisor启动
autorestart=true ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!
startretries=3 ;启动尝试次数
stderr_logfile=/tmp/flume.err.log ;标准输出的位置
stdout_logfile=/tmp/flume.out.log ;标准错误输出的位置
重启服务即可。
7、Kafka支持:
/etc/supervisord.d/kafka.conf
[program:kafka]
command=/bin/bash -c 'source /etc/profile && /home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties'
user=kafka
autostart=true
autorestart=true
startretries=3
directory=/home/kafka/kafka/
stderr_logfile=/home/kafka/kafka/kafka.err.log
stderr_logfile_maxbytes=1MB
stdout_logfile=/home/kafka/kafka/kafka.out.log
stdout_logfile_maxbytes=1MB
8、supervisorctl管理程序进程
1、更新新的配置到supervisord
supervisorctl update
2、重新启动配置中的所有程序
supervisorctl reload
3、启动某个进程(program_name=你配置中写的程序名称)
supervisorctl start program_name
4、查看正在守候的进程
supervisorctl
5、停止某一进程 (program_name=你配置中写的程序名称)
pervisorctl stop program_name
6、重启某一进程 (program_name=你配置中写的程序名称)
supervisorctl restart program_name
7、停止全部进程
supervisorctl stop all
使用普通用户执行supervisorctl status会提示如下错误
error: <class 'socket.error'>, [Errno 13] Permission denied: file: /usr/local/lib/python2.7/socket.py line: 228
在Permession denied error when use supervisorctl #173里找到如下解决办法
[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
chmod=0766 ; socket file mode (default 0700)
就是修改sock的权限
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。