开源服务器监控工具——Monit的介绍及使用
一、Monit简介
Monit是一个跨平台的用来监控Unix/Linux系统(比如Linux、BSD、OSX、Solaris)的工具。
易于安装,轻量级(只有500KB大小),不依赖于任何第三方程序、插件或者库。
Monit可以监控服务器进程状态、HTTP/TCP状态码、服务器资源变化、文件系统变动等等,根据这些变化,可以设定邮件报警、重启进程或服务。
正因为其易于安装、轻量级,可以实现强大的功能,所以让Monit称为一个理想的后备监控工具。
官网:https://mmonit.com/monit
文档:https://mmonit.com/monit/documentation/monit.html
最新版本:https://mmonit.com/monit/dist/monit-5.20.0.tar.gz
二、Monit的安装
yum install -y monit
可以通过如下命令查看monit版本:
monit -V
三、常用命令
monit -t #配置文件检测
monit #启动monit daemon
monit -c /var/monit/monitrc # 启动monit daemon 时 指定配置文件
monit reload # 当更新了配置文件需要重载
monit status # 查看所有服务状态
monit status nginx # 查看nginx服务状态
monit stop all # 停止所有服务
monit stop nginx # 停止nginx服务
monit start all # 启动所有服务
monit start nginx # 启动nginx服务
monit -V # 查看版本
四、配置文件
使用yum安装默认配置文件在:
/etc/monitrc # 主配置文件
/etc/monit.d/ # 单独配置各项服务
注意:为了保护控制文件和密码的安全性,monitrc必须具有读写权限不超过0700(u=rwx,g=0,o=0)
1、主配置文件主要配置全局
cat /etc/monitrc
## Global section
set daemon 30 // 设置monit作为守护进程运行,每30秒监视一次set logfile syslog // 设置日志文件为syslog# 邮箱服务器设置
set mailserver xxx@xxx
username "xxx" password "xxx"
# using ssl
set alert xxx@xxx
set alert xxx@xxx #可以设置多个set mail-format {
from: xxx@xxx
subject: [$SERVICE] $EVENT
message:
[$SERVICE] $EVENTDate: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTIONYour faithful employee,
Monit }# 设置web服务认证
set httpd port 2812 and
# ssl enable
# pemfile /etc/certs/monit.pem
# use address all # only accept connection from localhost
allow 127.0.0.1 # 允许localhost连接
allow admin:monit # web登录的用户名和密码
## Servicesallow // 允许连接的主机IP,或网段
allow username:password // 设置页面监控访问的用户名和密码## Includes
include /etc/monit.d/*
配置文件关键字:
‘if’,‘and’,‘with(in)’,‘has’,‘us(ingle)’,‘on(ly)’,‘then’,‘for’,‘of’。
2、如何实现监控
基本流程
一个jar包,和启动/关闭脚本
-rwxrwxrwx. 1 root root 86443209 8月 24 10:49 openGauss-3.0.3-CentOS-64bit.tar.bz2
-rwxrwxrwx. 1 root root 74 9月 13 01:52 start.sh
-rwxrwxrwx. 1 root root 102 9月 13 01:54 stop.sh
-rwxrwxrwx. 1 root root 21034837 11月 20 2023 test.jar
1、修改主配置文件
2、在/etc/monit.d/增加指定服务的配置文件,例如/etc/monit.d/test。
vi /etc/monit.d/test.monit
check process test with matching "^.*test.*jar.*$$"
start program = "/opt/data/start.sh"
stop program = "/opt/data/stop.sh"
检查配置是否正常
monit -t
出现Control file syntax OK,说明正常
3、启动monit
monit
4、启动所有服务或者单个服务
monit start all
5、若修改了配置文件,重载配置
monit reload
6、使用下面命令查看监控状态
monit status
控制台输出:
monit status
或者浏览器输入http://localhost:2812登录网页版查看实时状态。
7、设置错误提醒
Monit默认情况下如果一个服务失败只发送一个通知:
alert foo@bar
如果您希望在服务保持处于失败状态时每十个周期通知一次,您可以使用:
alert foo@bar with reminder on 10 cycles
同样,如果您想在每个失败的周期获得通知,您可以使用:
alert foo@bar with reminder on 1 cycle
要禁止某些用户和服务的警报,可以在服务检查的局部配置里添加语句:
noalert mail-address
8、服务类型
首先需要理解在monit里面什么是服务(service)。看监控语法:
check <类型> <服务名> [PATH ] [ ADDRESS ]
其中类型时monit支持的监控类型,分为:system、file、process、fifo、filesystem、directory、host、network、program。
服务名必需是英文且唯一,不可以出现重复!
后面的带[]是根据类型需要添加的。
9、服务类型语法
每个服务条目由关键字组成check,后面是服务类型。每个条目需要唯一的描述性名称,可以自由选择。此名称由Monit用于在内部和与用户的所有交互中引用该服务。
目前,支持九种类型的检查语句:
1、进程
CHECK PROCESS <unique name> <PIDFILE <path> | MATCHING <regex>>
2、文件
CHECK FILE <unique name> PATH <path>
3、Fifo
CHECK FIFO <unique name> PATH <path>
4、文件系统
CHECK FILESYSTEM <unique name> PATH <path>
5、目录
CHECK DIRECTORY <unique name> PATH <path>
6、远程主机
CHECK HOST <unique name> ADDRESS <host address>
7、系统
CHECK SYSTEM <unique name>
8、网络
CHECK NETWORK <unique name> <ADDRESS <ipaddress> | INTERFACE <name>>
9、自定义
CHECK PROGRAM <unique name> PATH <executable file> [TIMEOUT <number> SECONDS]
服务示例演示:
一个完整的HOST监控服务语法:
check host <service> address <address or ip>
if failed
xxx
then alert
alert xx@xxx
解释:
第一行是检查类型为host的服务,需要设定服务名及服务器地址;
第二行至第四行的意思是中间的预期代码xxx如果失败,则执行then alert;
最后一行alert xx@xxx配置局部推送的邮箱,可选。可以多行,表示配置多个
参考:https://blog.csdn.net/qin_weilong/article/details/90639769
或者:
第二行至第四行也可以写成一行:
if failed xxx then alert
启动
monit
设置monit开机启动
在inittab中加入随系统启动的设置,使得monit进程如果停止,init进程会将其重启
echo "moni:2345:respawn:/usr/local/monit-5.10/bin/monit -Ic /etc/monitrc" >> /etc/inittab
注意:
由于将monit设置成了守护进程,并且在inittab中加入了随系统启动的设置,则monit进程如果停止,init进程会将其重启,而monit又监视着其它的服务, 这意味着monit所监视的服务不能使用一般的方法来停止,因为一停止,monit又会将其启动。要停止monit所监视的服务,应该使用monit stop name这样的命令。 例如要停止tomcat:
monit stop tomcat
要停止全部monit所监视的服务可以使用:
monit stop all
启动全部,则是
monit start all
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)