Linux进程监控工具Supervisor简易使用教程

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

Supervisor

官网为 http://supervisord.org/

A Process Control System 
使用b/s架构、运行在类Unix系统上一个进程监控管理系统。
它可以使进程以daemon方式运行,并且一直监控进程,在意外退出时能自动重启进程。

安装

Supervisor是使用python开发的一个进程管工具,安装和使用都非常简单。使用 pip 或者 easy_install 安装会非常方便,自动解决依赖关系。

– sudo pip install supervisor`

– sudo easy_install supervisor

pip的安装请参考 Python pip 安装使用教程

初识

安装完成后系统会增加几个命令
supervisord 用于启动supervisor服务。
supervisorctl 用于管理supervisor服务,管理使用supervisor启动的进程。

安装好supervisor后需要手动的生成配置文件。

echo_supervisord_conf | sudo tee /etc/supervisord.conf 
supervisor默认读取的配置文件为/etc/supervisord.conf,建议将配置文件放在此位置。

我们先简单的查看一下 supervisord.conf,配置文件格式和ini格式配置文件相同,由节、键、值组成,配置文件注释为;

[unix_http_server] 
此节是配置连接supervisord的sock的文件,包括sock文件路径,用户认证。使用supervisorctl命令进行管理进程时,使用的就是此sock文件。默认保持开启,如将此项关闭[inet_http_server] 则无法使用。

[inet_http_server] 
此节配置supervisor的web管理界面,配置监听的地址和端口,已经用户认证。默认为关闭状态。如需开启则将此节注释去掉,然后修改相应的键值。

[supervisord] 
此节为配置supervisor服务参数,例如日志,日志大小等一些参数。

[supervisorctl]
用于配置supervisorctl管理程序参数,例如sock文件路径,需要和[unix_http_server]相同。

[include]
此节作用为包含其他配置文件,本文建议开启此项,包含额外的配置文件,将需要管理的进程配置写入到额外的配置文件,不需要经常编辑主配置文件,保证安全性。修改代码为

[include]

files = /etc/supervisor.d/*.conf

读取/etc/supervisor.d/文件夹下所有后缀为conf的文件。

第一步

配置第一个使用supervisord管理的程序

我们使用 python2.7来作为演示,使用SimpleHTTPServer模块方便快速的启动一个http server。

1,创建配置文件 /etc/supervisor.d/test1.conf,写入一下内容

[program:simplehttpserver]

command=/usr/bin/env python2.7 -m SimpleHTTPServer 20080

这是一个最简单的例子,第一行指定当前配置的程序名称。第二行程序运行命令(20080 为 http server端口号)。

2,第一个程序已经配置好,接下来就可以启动supervisord来查看一下效果。
输入命令 sudo supervisord 即可启动服务。
很多机器会打印出几行信息,这并不代表程序出错,意思是

“supervisord 是使用root身份来启动的,读取默认位置的配置文件,如果需要读取其他位置配置文件请使用 -c 参数” 

3,现在使用ps -ef | grep python来检查一下刚才配置的程序是否已经启动。到此为止我们的第一步已经完成。

详细配置

c095ac9bfdc39d977dadaf83dd143f8a5e7e7084
必要参数只有 command,其他未可选参数。
[program:x] 自定义的程序名不能重复

配置示例

管理tornado应用

需要启动4个进程,分别监听四个连续端口(20081 – 20084)。
将错误输出定向到标准输出,每个端口标准输出写入到不同文件中,单个文件最大50MB,最多保存3个备份。
启动前等待3秒。
supervisord启动时自动启动。程序运行出错自动重启,最大尝试重启次数3次。

cd76c666ba6198fee9044a314c026ec9a4fcbffa
管理nginx

nginx默认运行状态是后台运行程序。supervisord不能管理此类程序需要,需要修改nginx主配置文件。
在nginx最外层加入daemon off;

最简单的配置。

[program:nginx]

command=/usr/sbin/nginx ;建议使用绝对路径。

supervisorctl

supervisor进程管理工具,可以方便启动停止进程,查看程序日志,重新载入配置文件。
如果supervisord配置文件不再默认位置,使用supervisorctl工具时需要指定配置文件路径 supervisordctl -c 配置文件路径
常用命令

 supervisordctl status 查看进程运行状态

    supervisordctl start 进程名 启动进程

    supervisordctl stop 进程名 关闭进程

    supervisordctl restart 进程名 重启进程

    supervisordctl update 重新载入配置文件

    supervisordctl shutdown 关闭supervisord

    supervisordctl clear 进程名 清空进程日志

    supervisordctl 进入到交互模式下。使用help查看所有命令。

start stop restart + all 表示启动,关闭,重启所有进程。

如果一个进程启动了多个副本,例如上文tornado-test,关闭所有副本。


原文发布时间为:2016-11-30

本文作者:gw1770df

本文来自云栖社区合作伙伴“Python中文社区”,了解相关信息可以关注“Python中文社区”微信公众号

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
28天前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
65 1
|
9天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
16天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
79 13
|
23天前
|
SQL 运维 监控
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
|
1月前
|
运维 监控 Linux
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
|
17天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
40 0
|
关系型数据库 MySQL Linux
linux 的实用工具分享
做开发用Linux感觉比Windows在一些地方要好用(只是个人感觉,不想引战),在Linux中没有烦人的广告弹窗,没有动不动给你惊喜的Windows强制更新,而且Linux相对Windows要流畅,在低配的电脑上也很少卡顿.现在很多开发软件都有Linux版本,使用起来也算方便.当然,要是玩游戏等娱乐使用,还是Windows牛逼.我现在写代码基本都使用Linux.我用的Ubuntu18.04。
2073 0
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
130 8
|
2月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
526 6