Docker容器内多进程管理(二)-Monit

Crq
Crq
管理员
1718
文章
0
粉丝
Linux教程评论5字数 964阅读3分12秒阅读模式
摘要Docker多进程管理主要有两个工具,一个是Supervisor,另一个是Monit。在之前的文章中,我们介绍了一个在Docker中常用的用于管理多进程的工具Supervisor,...

Monit和Supervisor还是有很大区别的,Supervisor管理的都是前台执行的进程,Monit既可以管理前台进程也可以管理后台进程,简单的说,在CentOS中使用service xxx start 启动的程序,使用Monit可以直接管理,这就解决了很多没有前台方式启动的程序不能用Supervisor来管理的问题。 Monit本身可以做的事情,远不止管理进程,它还可以监控文件,socket,并定义触发器等等,功能很强,具体的用法,可以参见它的官网。

本篇的重点,就来介绍在容器里面,如果用它来管理多个进程。

一、Monit介绍及原理

Monit有以下几个功能:

1、主动触发:

根据某些条件主动采取操作,比如服务不可用,主动开启服务;资源使用过高,主动重启服务,并发邮件告警。

2、进程监控:

Monit可以监控后台进程,比如在/etc/init 下定义的开机启动程序。

3、文件,目录,文件系统监控:

监控一个文件,或者目录的变化,比如修改时间,md5或者sha1校验。发现变化之后,可以触发动作,比如:邮件告警

4、socket监控:

监控特定的服务socket,tcp,udp端口,在端口协议层面进行监控

5、系统监控:

Monit还可以监控当前系统的运行状态,比如cpu,内存,负载等等

6、自定义脚本监控:

通过自定义脚本,定时监控程序和性能,并触发事先定义的操作

Monit默认提供了一个简单的WebUI,通过这个WebUI可以对被管理的进程做一些常规的操作,比如start 、stop等。本文重点介绍在Docker中使用Monit来管理服务进程。

二、Monit的安装与配置
1、Monit安装

在EPEL的源中提供了monit的安装包,直接使用yum即可安装

Docker容器内多进程管理(二)-Monit-图片1

2、Monit配置

使用yum安装完成之后,它的执行程序是/usr/bin/monit,默认配置文件的是/etc/monit.conf。

monit处于安装考虑,它的配置文件必须是700的权限。在配置中,可以使用include关键字来应用外部的配置文件,但是定义在这类配置文件中的参加,优先级比直接定义在monit.conf中的要低。

注意 使用yum安装之后,monit程序会在以下几个位置寻找配置文件
~/.monit.conf, /etc/monit.conf, /etc/monit.conf, /usr/local/etc/monit.conf or at ./monit.conf

Monit的配置语法相比通常的应用配置文件,是比较特别的,其内部定义了一些直观的关键字,最大的好处是,看配置内容的字面意思就知道用途,不好的地方,可能就是与众不同。下面就来通过一些例子来具体解释。

安装完成之后,Monit提供了一个默认配置文件模板monit.conf,其中如何配置都提供的详细的解释。可以根据需要调整需要的配置项,以下是一个简单的monit.conf配置文件

Docker容器内多进程管理(二)-Monit-图片2

针对被监控的内容可以定义在单独的.conf中,方便查看和管理,以下举例说明一下:

Docker容器内多进程管理(二)-Monit-图片3

Monit的配置非常丰富,详细的可以参考官方文档。

三、在Docker中使用Monit管理多个应用
1、在容器中启动sshd和apache

首先,创建一个Dockerfile,内容如下

Docker容器内多进程管理(二)-Monit-图片4
Docker容器内多进程管理(二)-Monit-图片4
Docker容器内多进程管理(二)-Monit-图片4

monit配置文件monitrc

Docker容器内多进程管理(二)-Monit-图片5

sshd的monit配置文件

Docker容器内多进程管理(二)-Monit-图片6

httpd的monit配置文件

Docker容器内多进程管理(二)-Monit-图片7

编译生成镜像

[root@localhost ~]docker build -t monit/sshd_httpd:0.1 .

运行镜像容器

Docker容器内多进程管理(二)-Monit-图片8

验证,访问http://宿主机ip:9001

Docker容器内多进程管理(二)-Monit-图片9

在monit WebUI上可以对被监控的进程进行基本的操作。如下图

Docker容器内多进程管理(二)-Monit-图片10

四、参考文档

https://mmonit.com/monit/

https://mmonit.com/monit/documentation/monit.html

weinxin
我的微信
微信号已复制
我的微信
这是我的微信扫一扫
 
Crq
  • 本文由 Crq 发表于2025年2月22日 15:27:16
  • 转载请注明:https://www.cncrq.com/13159.html
Docker容器内多进程管理(一)-Supervisor Linux教程

Docker容器内多进程管理(一)-Supervisor

Docker在设计时并不推崇在一个容器中运行多个进程,但在一些实际的场景中很多都可能需要在一个容器中,同时运行多个程序。在非容器的环境下系统初始化的时候,都会启动一个init进程,...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证