什么是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. python自学日志--基础篇(1)

    从认识python,到学习python,中间经历了挺长一段时间的心理挣扎.人总是对未知的事物有着天生的恐惧感,但是,人又是对未知充斥好奇.所以在最后,还是推开了这扇门,开始学习python. pyth ...

  2. 【BootStrap】 布局组件 I

    BootStrap布局组件 I 除了在原生的HTML基础上进行了外观和类别上的改进,BS还包装了很多组件进库中,设计网页时我们可以方便地调用这些组件.下面来简略地介绍一下各种各样的组件 ■ 字体图标 ...

  3. [poj3107]Godfather_树形dp_树的重心

    Godfather poj-3107 题目大意:求树的重心裸题. 注释:n<=50000. 想法:我们尝试用树形dp求树的重心,关于树的重心的定义在题目中给的很明确.关于这道题,我们邻接矩阵存不 ...

  4. CSS3美化网页元素

    <span>标签 </span>属性名 含义 举例font-family 设置字体类型 font-family:"隶书"font-size 设置字体大小 f ...

  5. java错题集

    解析:java中,JavaDoc注释以 /** 开头(中间写内容)以*/结尾 解析:A对象是类的实例,不是集合,其余正确 解析:创建一个对象的语法为: 类名 对象名=new 类名();,因此正确答案为 ...

  6. SDK提交到CocoaPods

    一:GitHub新建仓库,并clone到本地 1.注册GitHub账号并登录 2.右上方点击+,新建仓库(仓库名字(Repository name).仓库权限(Public).readme.licen ...

  7. python学习笔记1——基础

    1)注释 单行注释以#开头,例:#第一个注释 多行注释可用多个#号,还有'''和""",例: #第一行注释 #第二行注释 ''' 第三行注释 第四行注释 ''' &quo ...

  8. MaxPooling的作用

    maxpooling主要有两大作用 1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)2. 保留主要的特征同时减少参数(降 ...

  9. java中volatile

    volatile用来修饰变量.Java 语言中的 volatile 变量可以被看作是一种 "程度较轻的 synchronized":与 synchronized 块相比,volat ...

  10. C语言作业--数据类型

    一.PTA实验作业 题目1:7-7 发红包 1. 本题PTA提交列表 2. 设计思路 1定义整型变量hundred,fifty,twenty,ten,five,two,one分别存放不同金额的张数,n ...