开源服务器监控工具——Monit的介绍及使用
  7DAcrqunsfTw 2023年11月30日 164 0

一、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配置局部推送的邮箱,可选。可以多行,表示配置多个
参考:

或者:
第二行至第四行也可以写成一行:

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

作者:樊同学


个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月30日 0

暂无评论

推荐阅读
7DAcrqunsfTw