supervisor学习笔记

官方手册:http://www.supervisord.org/

安装 supervisor可以采用快捷的安装方式如下:

yuminstall python-setuptools -y

easy-installsupervisor或者pip install supervisor

下面是编译安装的步骤:

以CentOS6.7为例,原始安装包存放在/home/tools/supervisor/src下。

下面是一个自动安装的脚本:

文件目录结构如下:

├── install.sh

└── src

└── supervisor-3.3.1.tar.gz

install.sh内容如下:

#!/bin/bash

#auto install supervisor-3.3.1

yuminstall python-setuptools -y

tarxf src/supervisor-3.3.1.tar.gz  -C src/

cdsrc/supervisor-3.3.1

pythonsetup.py install

echo_supervisord_conf> /etc/supervisord.conf

if[ $? = 0 ];then

echo -e "---------- $(date +"%F%T") installed supervisor Success. --------------\n" | tee -a../../install.log

else

echo -e "---------- $(date +"%F%T") installed supervisor Failed. --------------\n" | tee -a ../../install.log

fi

简单的配置supervisor

vim  /etc/supervisord.conf 在最后添加上如下的内容:

[program:redis]

;注意:使用supervisor 来监控redis自启动的话,必须设置为前台redis运行,不然会报错。

command=/usr/local/redis/bin/redis-server/usr/local/redis/etc/redis.conf

autorstart=true

autorestart=true

stdout_logfile=/tmp/supervisor.log

[inet_http_server]

;warning:itis better add one iptables rule to deny others access 9001 port

port=*:9001

username=root

password=123456

执行 supervisord -c /etc/supervisord.conf 即可启动守护进程

执行:supervisorctl status 即可列出服务的状态。

redis             RUNNING   pid 19135, uptime 0:03:42

注意:

supervisor 比较适合监控业务应用,且只能监控前台程序(进程必须以非daemon方式运行),php fork方式实现的daemon不能用它监控,

否则supervisor> status 会提示:BACKOFF  Exited too quickly(process log may have details)

经过适当的修改后,redis、nginx、mysql、tomcat都可以使用supervisor来监控。

注意:

每次修改完/etc/supervisord.conf ,需要执行supervisorctl reload来重启supervisord进程,不然修改的配置无法生效。

    启动supervisord

supervisord -c /etc/supervisord.conf

    关闭supervisord

supervisorctl shutdown

    重新载入配置

supervisorctl reload

supervisor组件说明:

supervisord

supervisord是supervisor的服务端程序。

干的活:启动supervisor程序自身,启动supervisor管理的子进程,响应来自clients的请求,重启闪退或异常退出的子进程,把子进程的stderr或stdout记录到日志文件中,生成和处理Event

supervisorctl

这东西还是有点用的,如果说supervisord是supervisor的服务端程序,那么supervisorctl就是client端程序了。

supervisorctl有一个类型shell的命令行界面,我们可以利用它来查看子进程状态,启动/停止/重启子进程,获取running子进程的列表等等。。。

最牛逼的一点是,supervisorctl不仅可以连接到本机上的supervisord,还可以连接到远程的supervisord,当然在本机上面是通过UNIX socket连接的。

supervisorctl和supervisord之间的通信,是通过xml_rpc完成的,远程是通过TCP socket连接的。

supervisorctl和supervisord之间的通信,是通过xml_rpc完成的。相应的配置在[supervisorctl]块里面

Web Server

Web Server主要可以在界面上管理进程,Web Server其实是通过XML_RPC来实现的,可以向supervisor请求数据,也可以控制supervisor及子进程。配置在[inet_http_server]块里面

XML_RPC接口

这个就是远程调用的,上面的supervisorctl和Web Server就是它弄的


#####下面是几个测试没问题的样例,自己测试supervisor启动 redis mysqld nginx tomcat都没问题。

[inet_http_server]

;注意:需要配置防火墙只允许公司的IP访问9001端口

port=*:9001

username=sup_admin

[email protected][email protected]#$

[program:redis]

;注意:使用 supervisor 来监控redis自启动的话,必须设置daemonize no,不然会报错。

command=/usr/local/redis/bin/redis-server/usr/local/redis/etc/redis.conf

autorstart=true

autorestart=true

stdout_logfile=/tmp/supervisor_redis.log

[program:mariadb]

command=/usr/local/mariadb/bin/mysqld--basedir=/usr/local/mariadb --datadir=/data/mysql--plugin-dir=/usr/local/mariadb/lib/plugin --user=mariadb--log-error=/data/mysql/mariadb.err --pid-file=/data/mysql/mariadb.pid--socket=/tmp/mysql.sock --port=3306

autostart=true

autorestart=true

stdout_logfile=/tmp/supervisor_mariadb.log

[program:nginx]

;注意:使用 supervisor 来监控nginx自启动的话,必须修改nginx.conf 在前几行添加上daemon off;

command=/usr/local/nginx/sbin/nginx-c /usr/local/nginx/conf/nginx.conf

autostart=true

autorestart=true

sutdout_logfile=/tmp/supervisor_nginx.log

[program:tomcat7]

command=/usr/local/tomcat/bin/catalina.shrun

autorstart=true

user=webserver

autorestart=true

stdout_logfile=/tmp/supervisor_tomcat7.log

其它的可以参考下面2篇文章:

http://lixcto.blog.51cto.com/4834175/1539136

http://www.phpddt.com/php/supervisor.html

时间: 2024-11-29 11:14:58

supervisor学习笔记的相关文章

一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建

作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装CentOS7 安装.NET Core SDK for CentOS7 搭建ftp服务器 安装mysql 部署ASP.NET Core应用程序 配置Nginx 配置守护服务(Supervisor) 环境说明 服务器系统:CentOS 7.3 64位 相关工具:putty.Xftp 服务器软件软件:.n

storm学习笔记完整记录(一)

storm有两种运行模式(本地模式和集群模式) 1. 首先创建一个类似于HelloWorld的简单程序,以便进入storm的大门,包结构如下: 2.从包结构可以知道,这是一个Maven Project,pom.xml的内容如下: <project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    

一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.supervisor.mysql环境搭建搭建好了.net core linux的相关环境,今天就来说说ef core相关的配置及迁移: 简介: Entity Framework(以下简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,EF Core是Entity

&lt;老友记&gt;学习笔记

这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的情路坎坷,事业成败和生活中的喜怒哀乐,无时无刻不牵动着彼此的心,而正是正平凡的点点滴滴,却成为最令人感动与留恋的东西. 人物:1.瑞秋•格林(RACHEL GREENE)由珍妮佛•安妮斯顿(Jennifer Aniston)扮演 瑞秋是莫妮卡的高中同学,在与牙医未婚夫的婚礼上脱逃至莫妮卡处. 2.罗

Linux内存管理学习笔记——内存寻址

最近开始想稍微深入一点地学习Linux内核,主要参考内容是<深入理解Linux内核>和<深入理解Linux内核架构>以及源码,经验有限,只能分析出有限的内容,看完这遍以后再更深入学习吧. 1,内存地址 逻辑地址:包含在机器语言中用来指定一个操作数或一条指令的地址. 线性地址:一个32位无符号数,用于直接映射物理地址 物理地址:片上引脚寻址级别的地址 2,逻辑地址->线性地址 2.1 段选择符与段寄存器 逻辑地址:段选择符(16位)+段内偏移(32位) index:在GDT或L

[A8 学习笔记] A8 汇编基础

A8 处理器工作模式 这点和以往的 arm7 arm11 是一致的.有8个工作模式: 用户模式是通常的ARM程序的执行状态,并用于执行大多数应用程序 快速中断(FIQ)模式是用于处理快速中断 中断(IRQ)模式是用于通用的中断处理 管理模式是一个操作系统保护模式 中断模式是当数据出错或者预取指令出错时进入的模式 系统模式是操作系统的一个特权用户模式 未定义的模式进入一个未定义指令异常发生时 监控方式为安全扩展安全模式安全监控代码. 除了用户模式模式统称为特权模式.特权模式用于服务中断或异常,或访

Nodejs --我自己的学习笔记

对于Nodejs(也可叫Node),相信客官并不陌生,网上却已众说纷纭,有人说是一个平台,有人说是服务器JavaScript,有人说一个框架… 之前亦有过研究,多怀可远观而不可亵玩也.高效率,I/O操作,异步编程,以及高并发处理!! 于是乎,怀着这份忐忑与景仰yu好奇,之前有自学过一段时间,这些日子公司项目完测,遂整理了一些Nodejs学习笔记,这里纯属分享下自己的笔记(说不定以后还能奉承宝典咧,想想都有点鸡冻)也有从别处借鉴过来的知识,若有雷同,不胜荣幸,供客官参考,如有不足多多指教 推荐读书

ARM基础知识学习笔记

/*****************数电知识*******************/ PN结(Positive-Negative) 三极管:BJT(双极结型三极管Bipolar Junction Transistor)               FET(场效应管Field Effect Transistor)          (单极结型) 1.MOSFET (金属氧化物半导体Metal Oxide Semiconductor FET)               2.JFET(结型Junct

MyBatis association的两种形式——MyBatis学习笔记之四

一.嵌套的resultMap 这 种方法本质上就是上篇博文介绍的方法,只是把教师实体映射从association元素中提取出来,用一个resultMap元素表示.然后 association元素再引用这个resultMap元素.修改上篇博文示例的StudentMapper.xml如下: <?xml version="1.0" encoding="utf8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org