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,如需转载请自行联系原作者

目录
打赏
0
0
0
0
69
分享
相关文章
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
70 34
|
5天前
|
Linux:守护进程(进程组、会话和守护进程)
守护进程在 Linux 系统中扮演着重要角色,通过后台执行关键任务和服务,确保系统的稳定运行。理解进程组和会话的概念,是正确创建和管理守护进程的基础。使用现代的 `systemd` 或传统的 `init.d` 方法,可以有效地管理守护进程,提升系统的可靠性和可维护性。希望本文能帮助读者深入理解并掌握 Linux 守护进程的相关知识。
26 7
|
4天前
|
Linux 进程前台后台切换与作业控制
进程前台/后台切换及作业控制简介: 在 Shell 中,启动的程序默认为前台进程,会占用终端直到执行完毕。例如,执行 `./shella.sh` 时,终端会被占用。为避免不便,可将命令放到后台运行,如 `./shella.sh &`,此时终端命令行立即返回,可继续输入其他命令。 常用作业控制命令: - `fg %1`:将后台作业切换到前台。 - `Ctrl + Z`:暂停前台作业并放到后台。 - `bg %1`:让暂停的后台作业继续执行。 - `kill %1`:终止后台作业。 优先级调整:
28 5
Linux 进程管理基础
Linux 进程是操作系统中运行程序的实例,彼此隔离以确保安全性和稳定性。常用命令查看和管理进程:`ps` 显示当前终端会话相关进程;`ps aux` 和 `ps -ef` 显示所有进程信息;`ps -u username` 查看特定用户进程;`ps -e | grep <进程名>` 查找特定进程;`ps -p <PID>` 查看指定 PID 的进程详情。终止进程可用 `kill <PID>` 或 `pkill <进程名>`,强制终止加 `-9` 选项。
18 3
|
17天前
|
Linux下载工具wget与curl
`wget` 是一个用于从网络下载文件的命令行工具,支持HTTP、HTTPS和FTP协议。它能自动处理下载中断,并支持递归下载网站内容。基本用法:`wget URL`,可指定文件名(`-O`)、保存目录(`-P`),还支持断点续传(`-c`)、限速(`--limit-rate`)和递归下载(`-r`)。相比之下,`curl` 更侧重于发送各种HTTP请求(如GET、POST),并支持文件上传、自定义请求头和cookie等功能。
49 10
Linux软件包管理工具概览
在Linux系统中,dpkg、apt、rpm、yum和dnf是几种常见的包管理工具,它们分别属于不同的Linux发行版或家族,并有着各自的诞生顺序和特点。下面将按照这些工具的诞生顺序,并结合Debian、Red Hat、CentOS、Ubuntu和Kali等系统,进行详细的介绍。
23 4
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
227 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
探索进程调度:Linux内核中的完全公平调度器
【8月更文挑战第2天】在操作系统的心脏——内核中,进程调度算法扮演着至关重要的角色。本文将深入探讨Linux内核中的完全公平调度器(Completely Fair Scheduler, CFS),一个旨在提供公平时间分配给所有进程的调度器。我们将通过代码示例,理解CFS如何管理运行队列、选择下一个运行进程以及如何对实时负载进行响应。文章将揭示CFS的设计哲学,并展示其如何在现代多任务计算环境中实现高效的资源分配。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等