Linux中的monit工具介绍使用
今天早上本来有个维护,在家使用V**进行操作的时候,发现自动化运维平台连接不上,因为之前的连接都是没有问题的,于是怀疑是防火墙的问题,查看了一下相关服务器的防火墙,好像也没有改动过,为了快速解决问题,先使用脚本解决了维护的问题。
来到公司接着查看问题的原因,发现是自动化运维平台的进程由于某种原因宕掉了,但是却没有及时发现,虽然设置了父进程,但还是挂掉了。为了防止这类现象再次发生,决定使用Linux的monit工具来对这个进程做个监控。
这里将monit的相关知识给大家介绍下。
monit监控和管理进程、程序、文件、目录和Unix系统的文件的工具。可以进行自动维护和修理,在错误的情况下执行相应的动作。比如,某个进程没有运行,那么monit可以启动它;某个程序没有响应,那么monit重启它;某个进程占用太多资源,则我们停止该进程等等。也可以用来监控文件、目录或系统文件的变化,如时间戳的改变,检验和的改变或大小的改变等等。
1、安装部署
可以使用yum进行安装yum -y install monit,当然,你也可以使用源码进行安装。下载的url如下
https://mmonit.com/monit/dist/binary/
2、monit配置
monit的配置一般情况下分为两个地方,分别是/etc/monit.conf和/etc/monit.d/*.conf,其中,/etc/monit.conf配置全局的监控规则,而/etc/monit.d/*.conf配置单个进程的检查项。二者通过include的方法来进行关联,如下:
cat /etc/monit.conf
monit.conf文件中最后行如下:
# Include all files from /etc/monit.d/
include /etc/monit.d/*.conf
可以看到,在/etc/monit.conf的最后,是使用include的方法将/etc/monit.d/*.conf给包含进来的,而*.conf文件一般是我们配置的一个一个的监控项,例如sys.conf,disk.conf,mem.conf,cpu.conf等等,分别用来监控系统状态、磁盘状态、内存、CPU等,当然,可以将它们写在一起,除此之外,如果你启动了一个服务server,那么可以进行一个配置server.conf,将server这个进程监控起来,一旦由于某种原因,该进程被kill掉了,monit可以将它重新拉起来,起到保护进程的作用。
配置的具体内容:
首先我们来看/etc/monit.conf中的内容:
# Check the time interval (second)
set daemon ###监控间隔时间,单位是秒
with start delay ###在monit进程启动10s之后才进行监控
set logfile /var/log/monit.log ###默认的监控日志
set idfile /var/monit/.monit.id ###设置监控唯一id的文件位置
set statefile /var/monit/.monit.state ###默认存储每个周期内monitorining状态的文件
set mailserver XXXXXXXXX port XXX ###默认的主邮件服务器和端口
username "XXXXXXXXX" password "XXXXXXXXX" ###邮箱的账号和密码
with timeout seconds ###默认的超时时间
set eventqueue ###当邮件因为某种原因不可用的时候,会暂存在这里
basedir /var/monit ### set the base directory where events will be stored,也就是邮件的存放地址
slots ### optionally limit the queue size,限制邮件队列的大小
set mail-format { ###设置邮件的格式
from: XXXX@XXXXXX ###邮件来源
subject: $HOST's $SERVICE $ACTION | $DESCRIPTION
message:
Date: $DATE
Action: $ACTION
Host: $HOST
Description:
Host $HOST's [$SERVICE] $DESCRIPTION
$EVENT Service $SERVICE
$DESCRIPTION
}
set httpd port and ###设置web监控,用于web界面,由于使用MMonit的界面管理,也可以不配置
allow localhost
allow user:password
# Include all files from /etc/monit.d/
include /etc/monit.d/*.conf
再来看看/etc/monit.d/*.conf中的内容吧:
#test
check process test matching "/tmp/test.sh"
group root
start program = "/bin/sh /tmp/test.sh"
alert yeyz@XXXXX.cn only on {nonexist}
如上配置,是指实时查找该进程,如果进程不存在的时候,会进行邮件告警,如下:
当然,可以使用restart的命令,重新拉起该服务。
3、常用命令
最后列举一些常用的命令。
monit -t # 配置文件检测
monit # 启动monit daemon
monit reload # 当更新了配置文件需要重载
monit status # 查看所有服务状态
monit status consul # 查看consul服务状态
monit stop all # 停止所有服务
monit start all # 启动所有服务
monit start consul #启动服务
monit -V # 查看版本
关于monit的命令,还有很多,想要详细了解,可以查看monit的官方文档,地址:
https://mmonit.com/monit/documentation/monit.html#SERVICE-GROUPS