Descripción general del software de monitorización M/Monit

I. Introducción

inserte la descripción de la imagen aquí

Recientemente, vi que otros sistemas comerciales usan M/Monit para cumplir con los requisitos de monitoreo del lado comercial. Hoy, echemos un vistazo a cómo funciona este software; primero, puede monitorear los siguientes indicadores:

inserte la descripción de la imagen aquí

Monit es un sistema Unix/Linux de monitoreo multiplataforma de código abierto (como Linux, BSD, OSX, Solaris). Fácil de instalar, liviano (solo 500 KB de tamaño) y no depende de programas, complementos o bibliotecas de terceros. Pero el MMonit del lado del servidor se cobra y puedes probarlo gratis durante 30 días.
inserte la descripción de la imagen aquí

Monit puede monitorear el estado del proceso del servidor, el código de estado HTTP/TCP, cambios en los recursos del servidor, cambios en el sistema de archivos, etc. De acuerdo con estos cambios, puede configurar alarmas de correo electrónico, la interfaz web integrada de Monit y puede ver el estado de los elementos de monitoreo en el host actual El proceso o servicio se puede reiniciar a través de la página.

inserte la descripción de la imagen aquí

Enlaces relacionados: sitio web oficial (inaccesible en China) , documentos oficiales , descargas de software , wiki , instrucciones para descubrir versiones , descargas de software de terceros

2. Configuración de implementación

1) Composición del producto

Este producto es similar a los productos de monitoreo tradicionales, e incluye 2 componentes, M/Monit (administración centralizada) y Monit (máquina monitoreada); y M/Monit requiere Monit 5.2.0 o posterior.

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

2) Servidor de configuración de implementación: M/Monit

#安装M/Monit
cd /opt
wget https://mmonit.com/dist/mmonit-3.7.15-linux-x64.tar.gz
tar xf mmonit-3.7.15-linux-x64.tar.gz
cd mmonit-3.7.15

#配置M/Monit,编辑conf/server.xml,或者也可不改动使用,默认配置是8080端口,自带"sqlite
……
<Connector address="*" port="8080" processors="10" />
……
#<Realm url="sqlite:///db/mmonit.db?synchronous=normal&heap_limit=8000&foreign_keys=on&journal_mode=wal"
#                  minConnections="5"
#                  maxConnections="25"
#                  reapConnections="300" />  
<Realm url="mysql://mmonit:passwd@mysql_ip/mmonit"
                  minConnections="5"
                  maxConnections="25"
                  reapConnections="300" />
:wq
#导入mysql数据库结构
mysql -ummonit -ppasswd < /opt/mmonit-3.7.15/db/mmonit-schema.mysql

#启动M/Monit
./bin/mmonit -c conf/server.xml

#完成后,就可浏览器登录了,默认账户:
#admin/swordfish
#monit/monit

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
3) Implementar el agente: monit

inserte la descripción de la imagen aquí

cd /opt
wget https://mmonit.com/monit/dist/binary/5.33.0/monit-5.33.0-linux-x64.tar.gz
tar xf monit-5.33.0-linux-x64.tar.gz
cd monit-5.33.0
#或直接
yum install  -y monit  //注意满足版本要求,安装后默认配置在/etc/monitrc和/etc/monit.d/,monitrc必须具有读写权限不超过0700
#配置
vim conf/monitrc   //如下所示
monit -V  //验证,一般是5.26版本

#检测周期
set daemon  30  #设置monit作为守护进程运行,每30秒监视一次
#进程文件配置
set logfile syslog
set pidfile /var/run/monit.pid
set idfile /var/.monit.id
set statefile /var/.monit.state
#事件队列
set eventqueue basedir /var/monit slots 100          
#配置mmonit(即服务端,将监控数据发送至MMonit进行统一展示)
set mmonit http://monit:monit@mm_ip:8080/collector
#邮件服务器地址
set mailserver mail_ip port 25
   username "[email protected]" password "monit"
#自定义发送邮件格式($DATE等都是monit内置变量)
set mail-format {
    
    
   from:    [email protected]
   subject: monit alert --  $EVENT $SERVICE
   message: $EVENT Service $SERVICE
                 Date:        $DATE
                 Action:      $ACTION
                 Host:        $HOST
                 Description: $DESCRIPTION
 }
#设置报警收件人,Monit默认情况下如果一个服务失败只发送一个通知
alert [email protected] with reminder on 10 cycles  #在服务保持处于失败状态时每十个周期通知一次
alert [email protected] with reminder on 1 cycle   #在每个失败的周期获得通知
noalert mail-address   #禁止某些用户和服务的警报,可以在服务检查的局部配置里添加语句
set alert [email protected]
set alert [email protected]

#配置https,用于web界面
set httpd port 8443 and
    use address localhost 
    allow localhost       
    allow admin:monit     #web登录的用户名和密码
    Services allow // 允许连接的主机IP,或网段
    allow username:password  // 设置页面监控访问的用户名和密码## Includes
include /etc/monit.d/*
#配置为监控项
#检查monit配置文件更新
check file monitrc path /opt/monit-5.33.0/conf/monitrc
    if changed sha1 checksum
    then exec "/opt/monit-5.33.0/bin/monit -c /opt/monit-5.33.0/conf/monitrc reload"
#检查系统负载
check system 172.16.10.2    #被监控客户端
    group system
    if loadavg (1min) > 4 then alert
    if loadavg (5min) > 2 then alert
    if cpu usage > 95% for 10 cycles then alert
    if memory usage > 75% then alert
    if swap usage > 25% then alert
#磁盘各目录空间
check filesystem root with path /
    group system
    if space usage > 90% then alert
check filesystem usr with path /usr
    group system
    if space usage > 80% then alert
check filesystem var with path /var
    group system
    if space usage > 90% then alert
#监控ssh服务
check process sshd with pidfile /var/run/sshd.pid
     start program "/etc/init.d/sshd start"
     stop program "/etc/init.d/sshd stop"
     if failed host 127.0.0.1 port 22 protocol ssh then restart
#监控nginx(不仅可以监控进程PID文件的变化,还可以监控80端口)
check process nginx with pidfile /var/run/nginx.pid
    start program = "/etc/init.d/nginx start" with timeout 60 seconds
    stop program  = "/etc/init.d/nginx stop"
    if changed pid for 5 cycles then restart
    if failed port 80 protocol http with timeout 2 seconds then alert
:wq

./bin/monit -c conf/monitrc  //启动monit,这时,就能在MMonit的web界面发现一台主机了

#配置开启启动,注:配置后要停止monit所监视的服务,应该使用monit stop name这样的命令
echo "moni:8443:respawn:/usr/local/monit-5.33/bin/monit -Ic /etc/monitrc" >> /etc/inittab

#其他常用命令
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服务

Nota: También puede utilizar el paquete binario del sitio web oficial. Monit está construido con un enlace estático OpenSSL 1.1.1t y un enlace dinámico compatible con PAM. Para más información: https://mmonit.com/monit/documentation/monit.html

Tres, usa

1) Monitoreo de Nginx

vi /etc/monit.d/nginx.monit  //参考如下
check process nginx with pidfile /usr/local/nginx/nginx.pid  
start program = "/usr/local/nginx/sbin/nginx" 
stop program = "/usr/local/nginx/sbin/nginx -s stop" 
if failed host 192.168.1.11 port 8011 protocol http then restart

monit -t  //检查配置是否正常
monit start all
monit status

2) Monitoreo del servicio (servicio)

Sintaxis del monitor:

check <tipo> <nombre del servicio> [RUTA] [DIRECCIÓN]
El tipo es el tipo de monitoreo admitido por monit, que se divide en: sistema, archivo, proceso, quince, sistema de archivos, directorio, host, red, programa.
El nombre del servicio debe estar en inglés y ser único, ¡y no puede repetirse!
Cada entrada de servicio consta de la verificación de palabras clave seguida del tipo de servicio. Cada entrada requiere un nombre único y descriptivo, que puede ser elegido libremente. Monit utiliza este nombre para referirse al servicio internamente y en todas las interacciones con los usuarios.

Actualmente, se admiten nueve tipos de extractos de cheques:

1. Proceso

VERIFICAR PROCESO <nombre único> <PIDFILE <ruta> | MATCHING <regex>>
2. Archivo

VERIFICAR ARCHIVO <nombre único> RUTA <ruta>
3. Fifo

VERIFICAR FIFO <nombre único> RUTA <ruta>
4. Sistema de archivos

COMPROBAR SISTEMA DE ARCHIVOS <nombre único> RUTA <ruta>
5. Directorio

COMPROBAR DIRECTORIO <nombre único> RUTA <ruta>
6. Host remoto

COMPROBAR HOST <nombre único> DIRECCIÓN <dirección de host>
7. Sistema

COMPROBAR SISTEMA <nombre único>
8. Red


COMPROBAR RED <nombre único> <DIRECCIÓN <direcciónip> | INTERFAZ <nombre>>
9、自定义

COMPROBAR PROGRAMA <nombre único> RUTA <archivo ejecutable> [TIEMPO DE ESPERA <número> SEGUNDOS]

3) monitoreo del anfitrión

Una sintaxis completa del servicio de monitoreo HOST:

check host <service> address <address or ip>
if failed
xxx
then alert
alert xx@xxx

Ejemplo de configuración:

## system
check system $HOST
if loadavg (1min) > 4 then alert
if loadavg (5min) > 2 then alert
if cpu usage > 95% for 10 cycles then alert
if memory usage > 75% then alert
if swap usage > 25% then alert## file
check file apache_bin with path /usr/local/apache/bin/httpd
if failed checksum and
expect the sum 8f7f419955cefa0b33a2ba316cba3659 then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
alert [email protected] on {
    
    
checksum, permission, uid, gid, unmonitor
} with the mail-format {
    
     subject: Alarm! }
group server## process
check process apache with pidfile /usr/local/apache/logs/httpd.pid
start program = "/etc/init.d/httpd start" with timeout 60 seconds
stop program = "/etc/init.d/httpd stop"
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 200.0 MB for 5 cycles then restart
if children > 250 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
if failed host www.tildeslash.com port 80 protocol http
and request "/somefile.html"
then restart
if failed port 443 protocol https with timeout 15 seconds then restart
if 3 restarts within 5 cycles then unmonitor
depends on apache_bin
group server## filesystem
check filesystem datafs with path /dev/sdb1
start program = "/bin/mount /data"
stop program = "/bin/umount /data"
if failed permission 660 then unmonitor
if failed uid root then unmonitor
if failed gid disk then unmonitor
if space usage > 80% for 5 times within 15 cycles then alert
if space usage > 99% then stop
if inode usage > 30000 then alert
if inode usage > 99% then stop
group server## file's timestamp
check file database with path /data/mydatabase.db
if failed permission 700 then alert
if failed uid data then alert
if failed gid data then alert
if timestamp > 15 minutes then alert
if size > 100 MB then exec "/my/cleanup/script" as uid dba and gid dba
## directory permission
check directory bin with path /bin
if failed permission 755 then unmonitor
if failed uid 0 then unmonitor
if failed gid 0 then unmonitor
## remote host
check host myserver with address 192.168.1.1
if failed ping then alert
if failed port 3306 protocol mysql with timeout 15 seconds then alert
if failed port 80 protocol http
and request /some/path with content = "a string"
then alert
## network link status
check network public with interface eth0
if failed link then alert
if changed link then alert
if saturation > 90% then alert
if download > 10 MB/s then alert
if total upload > 1 GB in last hour then alert
## custom program status output
check program myscript with path /usr/local/bin/myscript.sh
if status != 0 then alert

Supongo que te gusta

Origin blog.csdn.net/ximenjianxue/article/details/132449251
Recomendado
Clasificación