Linux进程监控工具:Supervisor

简介:

前言

我们知道现在的APP后台服务,必须可靠的运行,我们希望如果SOA服务进程挂了,可以迅速重启,那么就需要进程的监控了,而在Linux下Supervisor是管理进程的利器。Supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。想一想,其实不仅仅是在SOA服务上可以进行监控,还可以对Nginx等提供服务的任何进程进行监控和管理。


安装Supervisor

如果采用离线安装的方式,涉及到诸多前置软件包的安装,而且还需要相应版本,比如Python2.7。如果python的版本比较低,还需要升级,并且最好采用链接的方式改动,而不是完全卸载低版本。


博主已经实践成功,如下:【忽略jdk以及git】

wKiom1eKIs2w1nuJAAAsK9bcxfc346.png

相应软件包直接利用python setup.py install进行安装即可。


注意,Supervisor被安装到了哪里?如果没有明确指定,其实是被安装到了python目录下,因为说白了就是python的一个模块而已,如下图所示:

wKiom1eKI8nyaWYAAAB0mp7ro-0908.png


在这里,我们看到了supervisord,supervisord命令,其实这就是在公司常用的2个基础命令。


安装完毕后,利用echo_supervisord_conf命令生成默认的基础配置,在/etc下存在supervisord.conf.


我们可以大概扫一眼,典型的分段式配置:

wKiom1eKJQHwXQYyAABrpooed2o473.png


实际上,一般在公司,我们是涉及到非常多的项目会利用到Supervisor,我们并不会将所有的配置写到一个文件里面,而是根据业务各自提供各自的配置,然后include即可。可以看个例子:

wKiom1eKJaWjqOG6AAAGSEsd-T4308.png



监控实践


第一,提供配置文件

我们可以在/supervisor/etc/test.conf中提供以下内容:

wKioL1eKJmiC4pehAAAWVdiN68w273.png

既然要交给Supervisor进行管理,那么自然要告诉她,你的脚本路径在哪里,是否随着Supervisor启动而启动,输出的日志路径在哪里等一些基本信息。

除此之外,Supervisor还可以一次性帮你启动多个进程,比如一台机器上启动多个SOA服务实例,统一进行管理。

上面的配置就是在告诉Supervisor启动3个进程实例,而这每一个实例的名称就是process_name。其中program_name其实就是helloworld。


第二,启动Supervisord服务

wKiom1eKKAPQM5mlAAAJ3UNz0YY364.png

告诉配置文件在哪里,然后利用supervisord启动即可,如果不提供配置文件路径,那么将按照默认的路径逐级查找。


我们可以利用ps来查看下,发生了什么?

wKioL1eKKPDjnbTRAABEzrK1yFw701.png


这里,我们清楚的看到了,Supervisord的服务进程,以及她为我们启动的3个实例进程。


我们再来看看/myshell/supervisor4test.sh的内容是什么?

wKioL1eKKcqCc1DOAAASG_O3S2Y035.png


我们来看看日志的输出:


wKioL1eKKjmTI_pFAAANjXpIsM8454.png


我们清楚的看到了,有3个进程同时在输出,验证了上面我们所提及的。


我们可以kill -9的方式挂掉这3个进程中的几个,你会发现,马上Supervisor将替我们重启!


第三:利用supervisorctl进行进程管理


wKiom1eKKt2zBBsoAABbRbzDWlA662.png


到这里,Supervisor的初步使用就介绍完毕了,下文贴出一些基本配置说明,供大家参考。


wKiom1eKK-Djhf6nAABQMBGDrss826.png


本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1827020,如需转载请自行联系原作者

相关文章
|
3天前
|
Rust Ubuntu Java
[Linux工具] Makefile
Makefile是Linux环境下用于自动化编译和链接程序的配置文件,常用于简化大型项目的编译流程。通过定义目标文件、依赖文件及生成命令,Makefile能高效管理编译任务。它不仅适用于C语言项目,还可扩展到其他编程语言和非编程任务中。
39 20
[Linux工具] Makefile
|
1月前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
88 1
|
1天前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
43 27
|
18天前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
84 20
|
20天前
|
安全 网络协议 Linux
结合 `nc` 工具利用笑脸漏洞(Smile Bug)攻击 Metasploitable2 Linux
本文介绍如何使用 `nc`(Netcat)工具结合笑脸漏洞(Smiley Bug)攻击 Metasploitable2 Linux 靶机。首先概述了 `nc` 的基本功能和高级用法,包括建立连接、监听端口、文件传输等操作。接着详细描述了笑脸漏洞的原理及其在网络攻防中的应用,展示了通过 `nc` 发送恶意输入检测漏洞的方法。最后结合 Python 脚本实现更复杂的攻击场景,并强调了合法性和环境隔离的重要性。
45 13
|
27天前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
127 6
|
1月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
109 13
|
1月前
|
SQL 运维 监控
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
|
6月前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
6月前
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
212 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)