什么是supervisor:
supervisor是一款用python编写的进程管理工具,主要运行于linux系统,不支持windows系统,目前还不能运行于python3下。
step1:安装supervisor
yum -y install python-pip
pip install supervisor==3.3.4
step2:生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
这条命令会为我们自动生成配置文件 ,我一般用自己改好的配置文件,如下:
[root@ec2-54-218-126-221 ~]# cat /etc/supervisord.conf [unix_http_server] file=/var/run/supervisor.sock ; the path to the socket file [supervisord] logfile=/data/logs/supervisor/supervisord.log ; main log file; default $CWD/supervisord.log logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB logfile_backups=10 ; # of main logfile backups; 0 means none, default 10 loglevel=info ; log level; default info; others: debug,warn,trace pidfile=/var/run/supervisord.pid ; supervisord pidfile; default supervisord.pid nodaemon=false ; start in foreground if true; default false minfds=1024 ; min. avail startup file descriptors; default 1024 minprocs=200 ; min. avail process descriptors;default 200 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///var/run/supervisor.sock ; 如果这里的路径是/tmp/...应该改成/var/run/..因为系统默认定期对/tmp下文件进行删除,supervisor会出错的。 [include] files = /etc/supervisor/conf.d/*.conf ;我一般把每个要管理的进程单独写成一个配置文件,放在此目录中
注意:注意我标红的那一行,默认生成的serverurl=unix路径应该在/tmp下,这时应该手动修改它。
step3:编写sysV启动文件
#!/bin/bash # chkconfig: 2345 80 80 . /etc/init.d/functions DAEMON=/usr/bin/supervisord PIDFILE=/var/run/supervisord.pid [ ! -f $DAEMON ] && DAEMON=/usr/local/bin/supervisord # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 start() { echo -n "Starting supervisord: " ulimit -n 65536 daemon --pidfile $PIDFILE $DAEMON --pidfile $PIDFILE -c /etc/supervisord.conf RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord return $RETVAL } stop() { echo -n "Shutting down supervisord: " echo killproc -p $PIDFILE supervisord echo rm -f /var/lock/subsys/supervisord return 0 } case "$1" in start) start ;; stop) stop ;; status) status supervisord ;; restart) stop start ;; *) echo "Usage: {start|stop|status|restart}" exit 1 ;; esac exit $?
然后执行/etc/init.d/supervisord start命令就可以启动了。
step4:实战之管理promethues进程
prometheus是一个监控工具,官方说启动方法是这样子的:./prometheus --config.file=prometheus.yml 显然在生产环境中我们应该使用sysV脚本或使用supervisor来管理它。
mkdir -p /etc/supervisor/conf.d/ cd /etc/supervisor/conf.d/ touch prometheus.conf
prometheus.conf的内容为:
[program:prometheus] command=/data/prometheus/prometheus --config.file=/data/prometheus/prometheus.yml directory=/data/prometheus user=root numprocs=1 numprocs_start=1 process_name=%(program_name)s autostart=true autorestart=true exitcodes=0 startretries=10 stopsignal=TERM stopasgroup=true killasgroup=true stopwaitsecs=10 redirect_stderr=false stdout_logfile=/data/logs/supervisor/%(program_name)s.log stdout_logfile_maxbytes=100MB stdout_logfile_backups=50 stderr_logfile=/data/logs/supervisor/%(program_name)s_error.log stderr_logfile_maxbytes=100MB
然后重新加载配置文件:
supervisorctl reread supervisorctl reload
然后看一下prometheus的运行状态:
supervisorctl status prometheus RUNNING pid 12807, uptime 0:01:30
先写到这里,不定时更新。