阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

94次阅读
没有评论

共计 1756 个字符,预计需要花费 5 分钟才能阅读完成。

导读 Docker 多进程管理主要有两个工具,一个是 Supervisor,另一个是 Monit。在之前的文章中,我们介绍了一个在 Docker 中常用的用于管理多进程的工具 Supervisor,本篇再来介绍一个比 supervisor 用起来更加方便的容器内多进程管理工具 Monit。

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

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

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

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

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

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

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

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

monit 配置文件 monitrc

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

sshd 的 monit 配置文件

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

httpd 的 monit 配置文件

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

编译生成镜像

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

运行镜像容器

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

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

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

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

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

四、参考文档

https://mmonit.com/monit/

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

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1756字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中