Monit è uno strumento di monitoraggio dei processi open source per il sistema operativo Linux che ti aiuta a monitorare il processo di sistema. Ogni volta che il servizio/processo si interrompe, esegue automaticamente la manutenzione e la riparazione del particolare processo e si assicura che venga riportato online.
Monit può essere utilizzato anche per la gestione e il monitoraggio di programmi, file, directory, filesystem, controlli di rete TCP/IP, controlli di protocollo e può utilizzare SSL per tali controlli.
Si registra nel suo file di registro e notifica all'utente tramite messaggi personalizzabili.
Questa guida ti aiuterà a configurare Monit su CentOS 8 / RHEL 8.
Installa Monit
Installa gli strumenti di compilazione necessari poiché Monit deve ancora essere impacchettato come rpm per CentOS 8 / RHEL 8.
dnf install -y git gcc glibc make glibc-devel kernel-headers autoconf automake libtool bison flex libzip-devel pam-devel openssl openssl-devel
Clona il codice sorgente di Monit per la compilazione.
git clone https://bitbucket.org/tildeslash/monit.git
Compila il Monit con una serie di comandi seguenti.
cd monit ./bootstrap ./configure make make install
Configura Monitor
Funzionalità
Copia il file monitrc dal sorgente scaricato nella directory /etc.
cp monitrc /etc/
Apporteremo alcune modifiche al file di configurazione di Monit per i nostri requisiti.
vi /etc/monitrc
Per impostazione predefinita, Monit è impostato per controllare i servizi a intervalli di 30 secondi. Questo intervallo può essere modificato cambiando la riga sottostante.
set daemon 30
Puoi impostare un server di posta elettronica per ricevere avvisi nella tua casella di posta.
set mailserver mx.itzgeek.local port 25Gli avvisi e-mail possono essere personalizzati utilizzando i modelli integrati che si trovano nel file di configurazione stesso. Per ulteriori informazioni, vedere gli avvisi tramite posta elettronica con Monit in fondo a questo articolo.
L'impostazione dei registri può essere modificata utilizzando il seguente file.
set log /var/log/monit.log
Assicurati di decommentare la riga sottostante. Collocheremo qui i file di monitoraggio del servizio.
include /etc/monit.d/*
Interfaccia Web
Monit fornisce anche un'interfaccia web per il monitoraggio e la gestione dei servizi configurati. Per impostazione predefinita, Monit è in ascolto sulla porta 2812, ma deve essere configurato.
Modifica il file di configurazione di Monit /etc/monitrc.
vi /etc/monitrc
Cerca la porta httpd 2812, modifica le seguenti voci.
DA:
set httpd port 2812 and use address localhost # only accept connection from localhost allow localhost # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit' #with ssl { # enable SSL/TLS and set path to server certificate # pemfile: /etc/ssl/certs/monit.pem #}
A:
set httpd port 2812 and use address 0.0.0.0 # only accept connection from localhost (drop if you use M/Monit) allow 0.0.0.0/0 # allow localhost to connect to the server and allow admin:monit # require user 'admin' with password 'monit' #with ssl { # enable SSL/TLS and set path to server certificate # pemfile: /etc/ssl/certs/monit.pem #}
Dalle impostazioni precedenti, Monit ascolterà sulla porta 2812 su tutte le interfacce. L'utente amministratore potrà accedere all'interfaccia web da qualsiasi rete.
Configurazione del sistema
Ora creeremo un file systemd per avviare automaticamente Monit all'avvio del sistema.
vi /lib/systemd/system/monit.service
Usa le impostazioni seguenti.
# This file is systemd template for monit service. To # register monit with systemd, place the monit.service file # to the /lib/systemd/system/ directory and then start it # using systemctl (see below). # # Enable monit to start on boot: # systemctl enable monit.service # # Start monit immediately: # systemctl start monit.service # # Stop monit: # systemctl stop monit.service # # Status: # systemctl status monit.service [Unit] Description=Pro-active monitoring utility for unix systems After=network.target Documentation=man:monit(1) https://mmonit.com/wiki/Monit/HowTo [Service] Type=simple KillMode=process ExecStart=/usr/local/bin/monit -I ExecStop=/usr/local/bin/monit quit ExecReload=/usr/local/bin/monit reload Restart = on-abnormal StandardOutput=null [Install] WantedBy=multi-user.target
Ricarica il demone systemd.
systemctl daemon-reload
Avvia il servizio di monitoraggio.
systemctl start monit
Avvia automaticamente il monitoraggio all'avvio.
systemctl enable monit
Firewall
Configura il firewall per consentire l'accesso all'interfaccia web di Monit, in esecuzione sulla porta 2812.
firewall-cmd --permanent --add-port=2812/tcp firewall-cmd --reload
Accedi all'interfaccia web di Monitor
Apri il tuo browser web e vai all'URL sottostante.
http://tuo.ip.addr.ess:2812O
http://tuo.fq.dn:2812Utilizza il nome utente e la password menzionati nel passaggio precedente.
La home page di Monit sarà simile a questa:
Configura i servizi per il monitoraggio con Monit
Una volta installata l'interfaccia web, possiamo iniziare a configurare altri servizi che desideri monitorare.
mkdir /etc/monit.d/
Puoi inserire i file di configurazione nella directory /etc/monit.d/.
Configura il servizio per syslog.
vi /etc/monit.d/syslogmonitor
Usa le informazioni qui sotto.
check process SysLog with pidfile /var/run/rsyslogd.pid start program = "/usr/bin/systemctl start rsyslog.service" stop program = "/usr/bin/systemctl stop rsyslog.service"
Servizio di configurazione per HTTP.
vi /etc/monit.d/httpdmonitor
Usa le informazioni qui sotto.
check process HTTPD with pidfile /var/run/httpd/httpd.pid start program "/usr/bin/systemctl start httpd.service" stop program "/usr/bin/systemctl stop httpd.service" if failed port 80 protocol http then restart
Una volta configurata, verifica la sintassi di Monit
monit -t
Risultato:
Control file syntax OK
Ricarica Monit per rendere effettive le modifiche.
systemctl reload monit
Accedi all'interfaccia web. Dovresti vedere i nuovi servizi che abbiamo configurato proprio ora.
Facendo clic su un servizio verranno fornite ulteriori informazioni sul servizio specifico. Qui puoi eseguire azioni come avviare, interrompere e riavviare il servizio e anche disabilitare il monitoraggio.
Testare il monitoraggio
Ora interrompi il servizio HTTP per i nostri test.
systemctl stop httpd
Attendi 30 secondi, Monit avvierà automaticamente il syslog. Puoi trovarlo nel registro di Monit.
cat /var/log/monit.log
Risultato:
[EST Jan 27 20:37:03] error : 'HTTPD' process is not running [EST Jan 27 20:37:03] info : 'HTTPD' trying to restart [EST Jan 27 20:37:03] info : 'HTTPD' start: '/usr/bin/systemctl start httpd.service' [EST Jan 27 20:37:38] info : 'HTTPD' process is running with pid 25270
Avvisi e-mail con Monit
In Monit sono disponibili modelli di avviso predefiniti per avvisare gli amministratori di sistema in caso di guasto di un particolare servizio. Per questa demo, utilizzeremo l'inoltro locale (server di posta elettronica) per avvisare l'utente root.
Modifica il file di configurazione.
vi /etc/monitrc
Puoi aggiornare il modello di avviso di seguito in base alle tue esigenze.
set mail-format { from: Monit <monit@$HOST> subject: monit alert -- $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Host: $HOST Description: $DESCRIPTION Your faithful employee, Monit }
Imposta qui l'indirizzo del destinatario per ricevere avvisi su tutti i tipi di azioni
set alert root@localhost
Imposta qui l'indirizzo del destinatario per non avvisare in caso di riavvio del servizio avviato dall'utente.
set alert root@localhost not on { instance, action }
Infine, imposta la configurazione del server di posta in modo da poter ricevere la posta.
set mailserver localhost
Qui sto usando il local relay dnf install -y sendmail &&systemctl start sendmail in modo che possiamo leggere gli avvisi e-mail sul terminale per confermare il meccanismo di avviso.
Ricarica il servizio.
systemctl reload monit
Visualizza avviso
Monit ha inviato e-mail all'utente root sul processo HTTP.
cat /var/spool/mail/root
Risultato:
To: [email protected] Subject: monit alert -- Does not exist HTTPD Date: Tue, 28 Jan 2020 01:44:05 GMT X-Mailer: Monit 5.27.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: <[email protected]> Does not exist Service HTTPD Date: Mon, 27 Jan 2020 20:44:05 Action: restart Host: centos8.itzgeek.local Description: process is not running Your faithful employee, Monit @ ITzGeek From [email protected] Mon Jan 27 20:44:47 2020 Return-Path: <[email protected]> Received: from centos8.itzgeek.local (localhost [127.0.0.1]) by centos8.itzgeek.local (8.15.2/8.15.2) with ESMTP id 00S1ilKL026285 for <root@localhost>; Mon, 27 Jan 2020 20:44:47 -0500 From: "Monit" <[email protected]> To: [email protected] Subject: monit alert -- Exists HTTPD Date: Tue, 28 Jan 2020 01:44:47 GMT X-Mailer: Monit 5.27.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: <[email protected]> Exists Service HTTPD Date: Mon, 27 Jan 2020 20:44:47 Action: alert Host: centos8.itzgeek.local Description: process is running with pid 26069 Your faithful employee, Monit @ ITzGeek
O
Usa mutt dnf install -y mutt, un client di posta elettronica per visualizzare gli avvisi.
Conclusione
È tutto. Abbiamo configurato correttamente Monit su CentOS 8 / RHEL 8.