什么是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

先写到这里,不定时更新。

supervisor安装使用和我踩过的坑的更多相关文章

  1. CentOS7.2上用KVM安装虚拟机window10踩过的坑

    最近两个星期一直在琢磨kvm安装window10操作系统,并且通过桥接模式与外界通信,经历了九九八十一难,终于搞定.下面就记录以下我们在探索的过程中踩过的坑. 安装KVM 1. 系统要求:需要一台可以 ...

  2. 可视化爬虫Portia安装和部署踩过的坑

    背景 Scrapy爬虫的确是好使好用,去过scrapinghub的官网浏览一下,更是赞叹可视化爬虫的犀利.scrapinghub有一系列的产品,开源了大部分项目,Portia负责可视化爬虫的编辑,Sp ...

  3. 安装Apache所踩的的坑

    刚开始接触PHP等一些脚本语言,需要建立一个本地的服务器,变进行安装了Apache.在其中碰到了诸多问题,和大家一一分享一下. 一.刚解压完成后使用cmd面板进入解压完成的apache的bin目录下, ...

  4. IONIC和Cordova安装、打包踩过的坑

    1.问题1:直接执行npm install -g cordova ionic,因为网络原因,执行不成功 解决方案:将npm映射到淘宝服务器:npm install -g cnpm --registry ...

  5. webpack4.0在Mac下的安装配置及踩到的坑

    一.什么是webpack是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源.它做的事情是,分析你的项目结构,找到JavaScript模块以 ...

  6. Mysql5.7.19压缩版安装步骤及踩过的坑

    安装Mysql5.7.19压缩版 一:下载压缩包 1.从MySQL官网下载MySQL Community Server 5.7.19,此版本为免费版. 2.下载完成之后解压缩,打开之后文件夹如下:   ...

  7. 安装Mycat 曾经踩的那些坑

    1. INFO | jvm | ----/--/-- --:--:-- | Caused by: io.mycat.config.util.ConfigException: schema TEST d ...

  8. 最细的eclipse 安装maven踩过的坑

    Eclipse安装maven插件踩过的坑 在线安装maven eclipse安装maven插件,在网上有各种各样的方法,博主使用过的也不止一种,但是留下的印象总是时好时不好,同样的方法也不确定那一次能 ...

  9. 安装mysql的踩坑之旅

    近期的一个项目要求用mysql数据库,正好系统重装了,复习下mysql的安装,哪成想是踩了无数坑啊! 要安装首先自然是火速进官网下个安装包(下载地址https://dev.mysql.com/down ...

随机推荐

  1. Java多线程JUC

    1. volatile 关键字 多线程访问的时候,一个比较严重的问题就是内存不可见,其实在内存访问的时候每一个线程都有一个自己的缓冲区,每次在做修改的时候都是从主存取到数据,然后放到自己的缓冲区中,在 ...

  2. 【Python】 命名空间与LEGB规则

    命名空间与LEGB规则 之前隐隐约约提到过一些关于Python赋值语句的特殊性的问题,这个问题的根源就在于Python中的变量的命名空间机制和之前熟悉的C也好java也好都不太一样. ■ 命名空间 所 ...

  3. Angular开发实践(六):服务端渲染

    Angular Universal Angular在服务端渲染方面提供一套前后端同构解决方案,它就是 Angular Universal(统一平台),一项在服务端运行 Angular 应用的技术. 标 ...

  4. opencv配置

    1.安装opecv库 从官网http://opencv.org/下载OpenCV windows版 运行之后 2.配置环境变量 64位系统,可以将32位和64位两个都添加上,免得以后编译不同程序再来配 ...

  5. 在CentOS7.1上安装Gitlab碰到的问题及解决方法

    一 前言 关于在CentOS7上安装Gitlab, 官方文档已经很详细了,步骤大家按照官方的安装文档一步一步安装即可, 这里就不在累述.官方安装文档地址:  https://about.gitlab. ...

  6. Java作业-集合

    1. 本周学习总结 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 public boolean contains(Object o) { r ...

  7. 学号:201621123032 《Java程序设计》第6周学习总结

    1:本周学习总结 1.1: 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结 2:书面作业 2.1: clone方法 2.1.1 ...

  8. 简单的C语言编译器--词法分析器

    1. 定义词法单元Tag   首先要将可能出现的词进行分类,可以有不同的分类方式.如多符一类:将所有逗号.分号.括号等都归为一类,或者一符一类,将一个符号归为一类.我这里采用的是一符一类的方式.C代码 ...

  9. verilog学习笔记(1)_两个小module

    第一个小module-ex_module module ex_module( input wire sclk,//声明模块的时候input变量一定是wire变量 input wire rst_n,// ...

  10. NetFPGA-1G-CML从零开始环境配置

    NetFPGA-1G-CML从零开始环境配置 前言 偶得一块NetFPGA-1G-CML,跟着github对NetFPGA-1G-CML的入门指南,一步步把配置环境终于搭建起来,下面重新复现一下此过程 ...