La maggior parte dei siti web oggi utilizza grandi volumi di codice e applicazioni multiple, perché vuole offrire all'utente contenuti dinamici e fornire informazioni personalizzate. Anche se il volume di traffico e il numero di visitatori possono variare molto nel corso della giornata, gli sviluppatori web partono dal presupposto che l'infrastruttura IT che ospita le loro applicazioni funzioni al massimo delle prestazioni in qualsiasi momento. È quindi importante monitorare correttamente il server web, altrimenti si possono verificare tempi di caricamento lenti e altri problemi di prestazioni.

Questo articolo mostra come tenere sotto controllo gli elementi più importanti del server web con Checkmk. Oltre all'hardware del server, imparerete anche a monitorare le applicazioni del server web, un database, i cronjob, i log e i certificati SSL/TLS. Vi mostrerò anche come utilizzare le notifiche, in modo da poter risolvere qualsiasi problema in modo più efficiente, poiché Checkmk riunisce tutte le informazioni e vi dice esattamente quando e dove è il momento di agire.

Come esempio, utilizzerò Nginx (versione 1.21.4) come server web e MySQL (versione 8.0.28) come database in esecuzione sullo stesso server, ma con Checkmk i passaggi sono molto simili a quelli per altre applicazioni e database. Se il vostro server web gira su Apache o utilizzate Postgres come database, ad esempio, dovrete semplicemente utilizzare i plug-in Checkmk corrispondenti e seguire tutti gli altri passaggi.

Utilizzerò la versione 2.0.0.p20 di Checkmk Enterprise Edition. È possibile scaricare l'ultima versione dalla pagina di download di Checkmk. L'istanza di Checkmk deve essere in grado di accedere al server web e sarà necessario disporre dei diritti di amministratore per installare l'agente di monitoraggio sul server web. Il vostro server Checkmk dovrà inoltre disporre di una connessione Internet funzionante. Consiglio vivamente un hosting separato per il server web e Checkmk. Nel mio caso, l'hosting del mio sito Checkmk è su un server Linux separato, all'interno della stessa rete.

Passo 1: Accesso in sola lettura per il monitoraggio del database

Probabilmente vorrete monitorare un database che gira sul vostro server web. Per la maggior parte dei database, Checkmk ha bisogno di un account utente con accesso in sola lettura. Se non si dispone di tale utente, passare alla console e modificarlo prima di iniziare a eseguire azioni in Checkmk.

Nel mio caso, devo accedere a MySQL come utente con diritti di accesso sufficienti e poi creare un nuovo utente del database:

mysql> CREATEUSER 'monitoring'@'localhost' IDENTIFIED BY 'MyPassword';

L'utente ha bisogno di diritti di lettura per i siti. Aggiungere questi diritti con il seguente comando:

mysql> GRANT SELECT, SHOW DATABASES ON *.* TO 'monitoring'@'localhost';

Se si utilizza la replica di MySQL, l'utente deve avere almeno il diritto REPLICATION CLIENT per monitorare il server di replica:

mysql> GRANT REPLICATION CLIENT ON *.* TO 'monitoring'@'localhost';

Fase 2: Monitoraggio del sito web e del certificato SSL

Checkmk include meccanismi per la gestione di un gran numero di host. In questo tutorial ne utilizzerò uno: la gestione delle strutture di cartelle.

  • Passate all'istanza di Checkmk e aprite una cartella per gli host del vostro ambiente web server.
  • Andare Configurazione -> Host.
  • Fare clic su Aggiungi cartella.
Aggiungere una cartella in Checkmk
  • Aggiungete un nome alla voce Titolo, io ho usato "monitoraggio del server web", lasciando invariati gli altri campi.
  • Fate clic su Salva. Ora dovreste tornare alla directory principale e vedere la vostra nuova cartella.
  • Come primo host, dovreste aggiungere il vostro sito web attuale per assicurarvi che sia accessibile dal mondo online. Aprire la cartella appena creata facendo clic su di essa.
  • Fate clic su Aggiungi host. Aggiungete il dominio del vostro sito web come nome host. Nel mio esempio "www.checkmk.com".
  • Per impostazione predefinita, Checkmk presuppone che si utilizzi un agente di monitoraggio, quindi è necessario personalizzarlo. In Agenti di monitoraggio, modificare il campo Agente Checkmk / Integrazioni API in "Nessuna integrazione API, nessun agente Checkmk".
  • Fate clic su Salva e passare alla configurazione del servizio.
Aggiungere il sito www.checkmk.com come host in Checkmk

Checkmk creerà un host con un solo servizio per il ping del vostro sito web. Nella fase successiva, aggiungerete il servizio attivo "Check HTTP" all'host appena creato. Questo servizio consente di verificare l'età del certificato SSL.

  • Cliccate su Setup e digitate "http" nella barra di ricerca.
  • Cliccate sul servizio Check HTTP.
Cercare 'http' nella configurazione di Checkmk per trovare il servizio Check HTTP
  • Aggiungete un nome di servizio, io ho usato 'SSL.check'.
  • In Impostazioni host -> Nome host / indirizzo IP aggiungete il vostro sito web. Nel mio caso "www.checkmk.com".
  • Checkmk utilizza la porta 80 come valore predefinito (HTTP). Se si utilizza SSL/TLS, è necessario selezionare la casella Porta TCP. La porta predefinita è 443 (HTTPS), ma è possibile personalizzare la porta e altri dettagli a seconda del proprio ambiente informatico.
  • Regolate la modalità di controllo per verificare l'età del certificato SSL e aggiungete le soglie in cui Checkmk deve cambiare lo stato del servizio da OK a Attenzione e Critico. Io ho usato 14 e 3 giorni.
Impostazione del servizio Check HTTP per l'host www.checkmk.com in Checkmk
  • Di seguito, alla voce Condizioni, selezionate la casella Host espliciti e aggiungete il nome dell'host del vostro sito web, nel mio caso "www.checkmk.de". In questo modo, la regola si applicherà solo a questo host.
  • Fare clic su Salva.
Utilizzo dell'opzione per legare una regola a un host esplicito in Checkmk

Prima di andare avanti, vi forniamo solo una breve informazione sulle condizioni di Checkmk. Oltre a un singolo host, avete anche la possibilità di utilizzare cartelle, etichette e tag per applicare le regole. Se avete un po' di tempo dopo questo tutorial, vi consiglio di guardare il video tutorial di Checkmk, episodio 7. Le tre parti spiegheranno meglio il monitoraggio basato su regole, le etichette degli host e le strutture di cartelle di Checkmk.

Se avete già lavorato con Checkmk, probabilmente potete immaginare il passo successivo: dovrete attivare le modifiche prima che entrino in produzione.

  • Fare clic sul campo evidenziato con il punto esclamativo giallo (!) nell'angolo in alto a destra per visualizzare le modifiche in sospeso.
  • Fare clic su Attiva nei siti selezionati.

A questo punto, avrete creato una cartella con un host in Checkmk per verificare se il vostro sito web è online e se il vostro certificato è ancora valido. Avrete anche preparato l'account utente di sola lettura per il database. Una volta completata questa preparazione, sarà facile preparare un agente Checkmk con l'esatta configurazione necessaria.

Nel mio esempio, il certificato è in ordine. A partire da 14 giorni prima della scadenza, il servizio passa a WARN e diventa giallo. Se il certificato scadrà tra 3 giorni o meno, Checkmk lo evidenzierà in rosso e passerà allo stato CRIT.

Il certificato di www.checkmk.com monitorato in Checkmk, lo stato è ok

Passo 3: Creare un agente di monitoraggio in Checkmk

Nella fase successiva, si estende l'agente Checkmk con i plug-in di monitoraggio necessari per il proprio ambiente web server. Questo tutorial utilizza l'Agent Bakery di Checkmk per configurare un agente. L'Agent Bakery non è incluso nella Raw Edition di Checkmk. Se si desidera monitorare i server web con Checkmk Raw Edition invece che con Checkmk Enterprise Edition, si dovrà configurare l'agente manualmente. Poiché la configurazione dell'agente è legata alla cartella creata in precedenza, sarà possibile utilizzare gli aggiornamenti automatici in seguito. Questa funzione di Agent Bakery è davvero potente, ma va oltre lo scopo di questa guida. Una volta creato l'agente, è necessario installarlo sul server web.

Checkmk è uno strumento di monitoraggio dei server web flessibile, poiché dispone di integrazioni di monitoraggio per molti tipi diversi di applicazioni. Nel mio esempio utilizzerò i plugin dell'agente per monitorare Nginx, i file di log e MySQL.

Passo 3.1. Aggiungere il plug-in Nginx per monitorare l'applicazione del server web

Per monitorare Nginx con Checkmk, il modulo di stato di Nginx deve essere attivato. Nella maggior parte delle distribuzioni Linux, la versione di Nginx viene fornita con il modulo ngx_http_stub_status_ attivato, ma è possibile verificare con il comando:

nginx -V 2>&1 | grep -o with-http_stub_status_module

Questo dovrebbe restituire '--with-http_stub_status_modul', se il modulo di stato è attivo. Se non lo è, si può seguire questo tutorial per attivarlo. Quando si è sicuri che il modulo di stato di Nginx è attivato, tornate a Checkmk:

  • Andate in Configurazione -> Agenti e fare clic su Windows, Linux, Solaris, AIX. Se nessun altro ha creato agenti, si dovrebbe vedere solo un agente "Configurazione predefinita".
  • Fate clic su Regole agenti nel menu in alto, l'ultimo pulsante a destra.
  • Verranno quindi visualizzate tutte le regole degli agenti disponibili. Consiglio di utilizzare la funzione di ricerca e di iniziare con il plug-in Nginx. Cercare 'nginx', premere invio e fare clic sul plug-in NGINX webservers (Linux).
Ricerca del plug-in nginx in Checkmk
  • Cambiate il campo dopo il pulsante Crea regola nella cartella con la cartella creata in precedenza, nel mio caso 'monitoraggio del server web', quindi fate clic sul pulsante.
  • Nel campo successivo potete lasciare quasi tutti i campi vuoti, ma se volete potete aggiungere una descrizione e altri dettagli. Tuttavia, controllate le porte. Queste decidono su quale porta l'agente Checkmk si metterà in ascolto. 443 è lo standard per HTTPS e quindi l'impostazione predefinita. È possibile modificarla, se necessario. Quindi fare clic su Salva.

È stata appena creata una prima regola per questa cartella, ma è necessario aggiungerne altre.

Modifica del plug-in Nginx in Checkmk

Passo 3.2. Aggiungere il plug-in Logwatch per monitorare i log

Per monitorare qualsiasi tipo di registro su un host Linux, è necessario aggiungere il plug-in Checkmk Logwatch. La procedura è esattamente la stessa, ma è necessario aggiungere gli eventi che si desidera monitorare.

  • Andate in Configurazione e cercate "logfiles". Si dovrebbe trovare un plug-in dell'agente chiamato Text logfiles (Linux, Solaris, Windows).
  • Fate clic su di esso e passate alla cartella creata all'inizio di questa esercitazione. Fate clic su Crea regola nella cartella e aggiungete la cartella.

In Text logfiles (Linux, Solaris, Windows) è necessario indicare a Checkmk quali registri si desidera monitorare. Una volta aggiunto il percorso dei file di log, è necessario indicare a Checkmk quale evento deve attivare il passaggio del servizio di log a WARN o CRIT.

  • Spuntate la casella prima della sezione Configura un file di log e aggiungete il percorso del file in cui sono salvati i file di log. Per un server web, si devono aggiungere i log degli errori dell'applicazione del server web. Per esempio, i file di log del mio server Nginx saranno scritti nel file '/var/log/nginx/error.log'.

È possibile monitorare più file di log e aggiungerli anche qui. A seconda della struttura dei file di log, sarebbe più sensato utilizzare più regole agente per diversi tipi di log, invece di inserirli tutti nella stessa regola.

  • Consiglio di utilizzare l'opzione Osserva la dimensione totale del file di log con il valore predefinito di 100 Megabyte. In questo modo si può reagire rapidamente se il server web inizia a scrivere dati di log inutili.
  • È possibile utilizzare altre opzioni per monitorare i file di log effettivi, ma ciò dipende dal singolo server. Se non si è sicuri, fare clic su Aiuto -> Mostra aiuto in linea nel menu per avere maggiori dettagli sulle opzioni della vista corrente di Checkmk.
Utilizzare l'opzione di aiuto in linea di Checkmk
  • Ora la parte più importante: il monitoraggio effettivo degli eventi: Fate clic sul pulsante Aggiungi modello di messaggio e indicate a Checkmk quali eventi devono far sì che il servizio diventi critico o passi a un altro stato.
  • È necessario conoscere l'aspetto di un determinato evento nel file di log e quindi aggiungere tale evento alla voce Pattern. Nel mio caso, voglio che Checkmk mi informi ogni volta che si verifica un errore critico. Pertanto, aggiungo '.*(errore|critico).*' sotto Espressioni regolari per la classificazione dei messaggi.
  • Lasciate Condizioni e collegare la regola alla cartella creata.
  • Fate clic su Salva come prima.
Aggiunta di soglie per mk-job per monitorare i cronjob con Checkmk

Se si volesse monitorare il 'syslog' o i log dei database, ad esempio, lo schema dovrebbe essere diverso. Inoltre, se avessi omesso il 'critical' per i log di Nginx, ogni log critico avrebbe fatto sì che il mio servizio risultasse critico, cosa che in realtà non aggiunge valore al monitoraggio. Cercate invece di abbinarlo in modo più preciso alle stringhe che volete monitorare. Se si vuole, si può andare su www.regex101.com per verificare la sintassi della regex.

Passo 3.3. Configurare mk-job per monitorare i cronjob

È possibile monitorare qualsiasi tipo di cronjob con Checkmk grazie a mk-job, una parte del pacchetto agente di Checkmk. Poiché voglio monitorare un cronjob di backup, aggiungo la configurazione in Checkmk come esempio.

  • Il processo è simile a quello dell'aggiunta di un plug-in; cercate "mk-job job age" in Setup.
  • Create la regola nella cartella e fate clic su Salva.
  • In Valore, spuntate la casella Tempo massimo dall'ultimo avvio dell'esecuzione del lavoro e aggiungete le soglie desiderate. Per il mio backup del database, uso 3 per Avviso e 5 per Critico.
  • Fate clic su Salva.

Naturalmente esistono altre opzioni. A seconda del server, è possibile adattare il monitoraggio dei cronjob come si desidera. È anche possibile saltare questo passaggio, se non si desidera definire le soglie WARN e CRIT. Si potrà comunque aggiungere l'esecuzione dei cronjob al monitoraggio in un secondo momento (passo 4 di questa guida), ma senza aver definito le soglie per Checkmk.

Configurazione del plug-in HTTPS in Checkmk per monitorare l'età dei certificati

Passo 3.4. Aggiunta del plug-in MySQL all'agente

Per monitorare MySQL, è necessario aggiungere il plug-in e le credenziali dell'utente.

  • Andate di nuovo alle regole dell'agente, fate semplicemente clic sul pulsante e cercate 'mysql'. Dovreste trovare un plug-in dell'agente chiamato MySQL Databases.
  • Fate clic su questo e passare alla cartella creata all'inizio. Fate clic su Crea regola nella cartella come fatto in precedenza.
  • Una differenza importante: In MySQL Databases è necessario spuntare la casella prima di Credenziali per l'accesso al database, in modo che Checkmk possa utilizzare l'utente di sola lettura per accedere ai dati di monitoraggio.
  • Aggiungete le credenziali dell'utente creato nel primo passo di questa guida; nel mio caso l'utente si chiama 'monitoring' e la password è 'MyPassword'.
  • In 'Socket' e 'Host' è possibile modificare alcuni parametri, se necessario. Nel mio esempio i valori predefiniti '/var/run/mysqld/mysqld.sock' e '127.0.0.1' vanno bene, quindi non devo modificare nulla.
  • Fate clic su Salva.

L'opzione "Esegui in modo asincrono" è utile se si vuole tenere conto di tempi di esecuzione più lunghi con istanze MySQL di grandi dimensioni, o quando i dati di stato non sono semplicemente richiesti ogni minuto. Nel mio caso, il database è piuttosto piccolo, quindi non utilizzo questa opzione.

Configurazione del plug-in MySQL in Checkmk

I plug-in dell'agente espandono le capacità dell'agente Checkmk e aggiungono automaticamente i dati di configurazione necessari. È possibile continuare ad aggiungere tutti i plug-in dell'agente di cui si ha bisogno. Se non esiste un plug-in ufficiale per un'applicazione che si desidera monitorare, è possibile consultare Checkmk Exchange, dove i membri della comunità condividono i loro plug-in scritti in proprio, oppure scrivere il proprio plug-in Checkmk. Tuttavia, la maggior parte degli scenari di utilizzo dovrebbe essere coperta dai plug-in ufficiali di Checkmk.

  • Se si è terminato di aggiungere le regole dell'agente per la propria cartella, andare in Configurazione -> Agenti -> Windows, Linux, Solaris, AIX.
  • Fate clic su Bake agents.
  • Accettate di nuovo le modifiche in sospeso, si dovrebbe trovare un nuovo agente in Setup -> Agenti -> Windows, Linux, Solaris, AIX.
  • Scaricate l'agente facendo clic sul pacchetto adatto al sistema operativo del server web e installarlo sul server che si desidera monitorare.
Un nuovo agente "baked" di Checkmk pronto per il download

Passo 4: Monitoraggio del cronjob con mk-job

mk-job è semplicemente uno script ed è quindi abbastanza facile aggiungere cronjob di propria scelta al monitoraggio. Avete già installato mk-job con l'agente Checkmk e ora dovete modificare il cronjob sul vostro server web che volete monitorare. È sufficiente aggiungere mk-job e il nome di un servizio come prefisso, con un editor di propria scelta.

Per esempio, il cronjob di backup del mio database, che viene eseguito ogni giorno cinque minuti dopo la mezzanotte, in etc/cron.d/backup ha questo aspetto:

crontab

# Syntax: <minute> <hour> <day> <month> <day of month> <user> mk-job <service name> <command>

5 0 * * * root /usr/local/bin/backup >/dev/null

Devo cambiare il mio crontab in questo modo:

5 0 * * * root mk-job DB-Backup /usr/local/bin/backup >/dev/null

Quando esegue il cronjob appena definito, mk-job cercherà di memorizzare i risultati della misurazione nella directory /var/lib/check_mk_agent/job/root. Poiché la directory job appartiene anche all'utente root, non è un problema per mk-job creare la directory utente root se questa non esiste già.

Il cronjob deve essere eseguito una volta per scrivere i dati. A ogni chiamata, l'agente guarderà nelle directory sotto /var/lib/check_mk_agent/job/. Se ci sono dati, l'agente può aggiungerli all'output dell'agente. Lo stato del cronjob sarà incluso nel monitoraggio come servizio. È quindi importante utilizzare un nome di servizio univoco.

Passo 5: Aggiungere il server web a Checkmk

  • Tornate a Checkmk e cliccate su Configurazione -> Hosts e aprire la cartella creata.
  • Fate clic su Aggiungi host.
  • Aggiungete il nome dell'host e fate clic su Salva e passare alla configurazione del servizio.
  • Eseguite una scansione completa del servizio e attendete il rilevamento del servizio. Checkmk dovrebbe trovare diversi servizi. Oltre ai servizi standard, come l'utilizzo della CPU e così via, dovrebbero essere visualizzati anche i dati di Nginx, dei registri e del database MySQL.
  • Fate clic su Correggi tutti per aggiungerli al monitoraggio e accettate le modifiche.

Sotto Monitoraggio -> Tutti host si dovrebbe vedere ora il server web e tutti i suoi servizi dopo aver fatto clic su di esso.

Un server web monitorato con Checkmk, compresi i servizi per Nginx, cronjobs e MySQL

Passo 6: Notifiche

Checkmk dispone di diversi meccanismi per l'attivazione delle notifiche, basta dire a Checkmk quando inviare una notifica e a chi inviarla. Le notifiche sono un argomento molto vasto nell'ambito del monitoraggio, ma per questo tutorial voglio solo mostrarvi un semplice esempio, per farvi capire come funzionano.

Forse conoscete la sensazione che si prova quando si dimentica di rinnovare il certificato SSL/TLS in tempo. Per evitarlo, lascio che Checkmk mi scriva una breve e-mail, in modo che possa occuparmene io. Checkmk non contiene un server di posta. Prima di poter utilizzare la notifica via e-mail, è necessario installare un server di posta sul server host di Checkmk. Io ho installato postfix, potete seguire questo tutorial su postfix.

  • Andate a Configurazione -> Eventi -> Notifiche.
  • Fate clic su Aggiungi regola.
  • Alla voce Metodo di notifica, impostate il primo punto su Email ASCII. Vedrete che ci sono molte opzioni.
  • Inoltre, aggiungete un indirizzo e-mail esistente del server di posta in esecuzione sul server host di monitoraggio alla voce Da, poiché altrimenti la maggior parte dei server di posta elettronica rifiuterà di accettare questa e-mail. Per me si tratta di "webserver@cmkmonitoring.com".
  • In Selezione contatti, deselezionate la casella Tutti i contatti dell'oggetto notificato e selezionate la casella Indirizzi e-mail espliciti. Aggiungete un indirizzo e-mail di vostra scelta. Checkmk invierà una notifica a questo indirizzo. Nel mio caso "webmaster@checkmk.com".
  • Le opzioni più importanti sono le Condizioni. Nel mio semplice esempio, seleziono la casella Abbina servizi e aggiungo il nome 'HTTPS SSL.check', il nome del servizio che controlla il certificato.
  • Quindi, selezionate la casella Tipo di evento del servizio Match e scegliete quando si desidera ricevere una notifica. Io voglio ricevere un messaggio solo quando il mio servizio per il certificato diventa critico o Checkmk non può accedere al sito web. Pertanto, deseleziono le prime due caselle.
  • Fate clic su Salva e accettare le modifiche.
Aggiunta di una notifica per il servizio HTTPS SSL.check in Checkmk

Ho già aggiunto le soglie WARN (14 giorni) e CRIT (3 giorni) per il servizio 'HTTPS SSL.check' nel secondo passo di questa guida, quindi il gioco è fatto, ma naturalmente ci sono molte altre opzioni di notifica. Questo è solo un semplice esempio per guidarvi e mostrare come funzionano le notifiche. Il mio esempio non vi avviserebbe, per esempio, nel caso in cui il vostro host si guastasse.

Probabilmente ci sono persone diverse che gestiscono i vostri server e i vostri certificati. Il motivo per cui Checkmk offre così tante opzioni per le condizioni è che le notifiche sono estremamente importanti per migliorare i tempi di attività. Prima di iniziare a impostare le notifiche, soprattutto per gli altri utenti, vi consiglio di consultare la guida di Checkmk sulle notifiche. È inoltre possibile commettere molti errori inviando troppi falsi avvisi o notifiche inutili alle persone sbagliate. Checkmk dispone quindi di una serie di opzioni per la gestione dei gruppi di contatti.

Riassunto

Ogni amministratore di server web ha bisogno di un buon monitoraggio del server web. Se avete seguito questo tutorial fino a questo punto, dovreste essere in grado di costruire il vostro sistema di monitoraggio adeguato. Probabilmente dovrete apportare alcune modifiche in base al vostro ambiente, ma Checkmk è flessibile e dovrebbe fornirvi una soluzione per le vostre esigenze individuali. Inoltre, l'approccio basato su regole e molti altri meccanismi sono simili, nel caso in cui vogliate monitorare altri server o risorse IT. Se vi trovate in difficoltà, potete sempre consultare il forum di Checkmk per ricevere assistenza. Per il resto, spero che questo articolo vi sia piaciuto e vi sia stato utile.