Una soluzione di monitoraggio completa come Checkmk è un po' eccessiva solo per monitorare i certificati Let's Encrypt? Assolutamente no! Checkmk è facile da configurare grazie all'installazione di un singolo pacchetto, ha requisiti hardware moderati ed è facilmente estendibile. Soprattutto quando inizierai a notare che semplici dashboard "solo uptime" non soddisfano più tutte le tue esigenze, sarai felici di aggiungere il monitoraggio basato su agenti agli host che lo richiedono, senza dover cambiare soluzione di monitoraggio.
A proposito di requisiti hardware: L'esecuzione come applicazione sidecar su un NAS con almeno 4 GB di RAM è possibile, così come in una macchina virtuale (anche se non in funzione 24 ore su 24, 7 giorni su 7) o su un server virtuale o fisico. Per questo esempio di installazione, ho scelto una piccola macchina Hetzner Cloud con 4GB di RAM e 2 processori Intel, situata a Helsinki (dove l'energia è più economica e quindi l'intera macchina costa 4€/mese). Assicurati di scegliere un server con CPU Intel o AMD (x86/64), poiché Checkmk non offre ancora pacchetti di installazione per ARM. Nel caso in cui il server Checkmk non sia in funzione 24 ore su 24 (ad esempio sul desktop Linux), si verrà avvisati dei cambiamenti di stato all'avvio, poiché l'ultimo stato noto verrà memorizzato allo spegnimento.
Quale edizione di Checkmk scegliere?
Per le installazioni più piccole, Checkmk offre due edizioni:
- Checkmk Raw è 100% Open Source e per questo motivo libero (come un linguaggio e come una birra) per il monitoraggio di qualsiasi numero di servizi, ed è limitato solo dalla capacità dell'hardware su cui viene eseguito e dalle competenze dell'amministratore per configurare correttamente il tutto.
- Checkmk Cloud è una delle edizioni commerciali e può essere utilizzato per 30 giorni senza limiti. Se si rimane al di sotto dei 750 servizi, dopo questi 30 giorni si passerà automaticamente al livello gratuito per sempre.
Poiché Checkmk Cloud include un nucleo di monitoraggio più performante (Checkmk Micro Core) e una maggiore comodità nell'impostazione delle notifiche, consigliamo di utilizzare Checkmk Cloud. Se sei un fanatico dell'Open Source, scegli Checkmk Raw e calcola mezz'ora in più per configurare il relaying della posta. È possibile cambiare edizione in un secondo momento, con uno sforzo relativamente basso, nel caso in cui si richiedano più servizi o il nucleo più performante.
Installazione: semplice
Andate alla pagina di download, scegli un'edizione e la distribuzione Linux in uso per generare la riga di comando wget
per il download:
wget https://download.checkmk.com/checkmk/2.3.0pXX/check-mk-raw-2.3.0pXX_0.distri_amd64.deb
Poiché l'installazione richiederà alcune dipendenze, assicurati che la cache dei pacchetti sia aggiornata:
apt update
apt install ./check-mk-raw-2.3.0pXX_0.distri_amd64.deb
In questo caso il punto-slash iniziale è necessario per indicare ad apt di installare da un file locale, altrimenti tratterebbe l'argomento come il nome di un pacchetto da cercare nella cache.
Sites for the win
L'installazione del pacchetto non darà luogo a un server Checkmk funzionante. Perché? Checkmk utilizza il concetto di sito. Ciò consente di eseguire più sistemi Checkmk in parallelo su un host. Questa funzione può essere utilizzata, ad esempio, per eseguire in parallelo un sistema di produzione e uno di staging o per testare gli aggiornamenti. Quando si inizia a lavorare con Checkmk, si può essere certi di non rovinare completamente il proprio server: Se si incasina un sito, lo si smonta e si ricomincia con un nuovo sito.
omd create my1stcheckmk
Ora passa all'utente del sito...
omd su my1stcheckmk
Imposta la password...
cmk-passwd cmkadmin
E infine avvia il sito...
omd start
Checkmk è ora attivo e funzionante e si può tornare all'utente root:
exit
Un agente per localhost
Per monitorare lo stato di salute del server Checkmk stesso, si consiglia di installare e configurare correttamente un agente di monitoraggio. Checkmk include pacchetti di agenti per la maggior parte delle distribuzioni Linux. Questi pacchetti possono essere scaricati dall'interfaccia web di Checkmk. Invece di scaricare e poi caricare di nuovo, si può semplicemente prendere il pacchetto di installazione dal file system:
find /opt/omd/ -name '*agent*.deb'
E installarlo (assicurarsi di essere l'utente root):
apt install /opt/omd/versions/2.3.0pXX.cre/share/check_mk/agents/check-mk-agent_2.3.0pXX-1_all.deb
Creare la prima cartella e il primo host
Accedi ora all'interfaccia grafica di Checkmk che si trova all'indirizzo
http://hostname/sitename
Accedere come cmkadmin con la password appena definita. Andare su Setup > Hosts e creare una prima cartella per contenere il server Checkmk stesso. Io ho usato infrastructure come nome della cartella. In questa cartella, creare un host localhost che utilizzi le impostazioni predefinite. Fare clic su Save & run service discovery.
Nota: in Checkmk si può usare Help > Show inline help per leggere informazioni dettagliate sulle opzioni disponibili per ogni impostazione.
Nel rilevamento dei servizi, di solito è necessario fare clic su Accept all due volte per confermare i servizi trovati. Ora fai clic sull'ottagono giallo che indica che alcune modifiche non sono state attivate. In Checkmk le modifiche non vengono attivate automaticamente al momento del salvataggio per consentire agli amministratori di attivare le modifiche che possono dipendere l'una dall'altra.
Avrete notato che il Check_MK Agent service (sì, questo usa la vecchia grafia) ha lo stato WARN. Questo perché la comunicazione tra l'agente Checkmk e il server non è criptata a questo punto. Andare in una shell di root un'ultima volta per abilitare mTLS registrando l'agente al sito:
cmk-agent-ctl register --hostname localhost --server localhost --site my1stcheckmk --user cmkadmin
Attempting to register at localhost, port 8000. Server certificate details:
PEM-encoded certificate:
-----BEGIN CERTIFICATE-----
MIIFSDCCAzCgAwIBAgIUHG9nA6WWO8J6TySCuhF4LBWTCQEwDQYJKoZIhvcNAQEN
q5oZixF2aR7DVvTKz6W8d72wlaOmNTzmlxmBBeWc9keMCCuUD9jNPBKQ8oJg0R2v
1b9kYDypqoukSYZV
-----END CERTIFICATE-----
Issued by:
Site 'my1stcheckmk' local CA
Issued to:
my1stcheckmk
Validity:
From Fri, 14 Feb 2025 16:35:36 +0000
To Wed, 14 Feb 2035 16:35:36 +0000
Do you want to establish this connection? [Y/n]
> y
Dopo la conferma, nella GUI di Checkmk ci vorrà circa un minuto prima che il servizio Check_MK Agent passi da WARN a OK.
Una cartella per il monitoraggio dei certificati
Checkmk utilizza un approccio basato su regole per configurare quasi tutto. I criteri per le regole possono essere le cartelle, le etichette e il nome degli oggetti. Per il monitoraggio dei certificati, è opportuno creare una cartella letsencrypt, dove saranno collocati tutti gli host che corrispondono ai certificati. Questa volta, fate attenzione ai dettagli della cartella e impostate No API integrations, No Checkmk agent. Questo è il modo più diretto per definire che tutti gli host in questa cartella sono monitorati solo con controlli attivi. I controlli attivi sono quelli che controllano direttamente un servizio esposto e non interpretano l'output dell'agente. Quindi, per gli host che verranno inseriti in questa cartella non è necessaria l'installazione dell'agente come fatto in precedenza per localhost.
Come passo successivo, si consiglia di aggiungere gli host da controllare: Andate su Setup > Hosts, apri la nuova cartella e fai clic sul menu Hosts. Qui si trova la voce Import hosts via CSV file. È possibile caricare un file CSV o incollare il contenuto di un file CSV in un campo di testo. Se si tratta di aggiungere solo una decina di host, si può semplicemente digitare i nomi degli host, uno per riga, nel campo. Nominare la singola colonna digitando 'hostname' nella prima riga:
hostname docs.checkmk.com checkmk.com download.checkmk.com play.checkmk.com trust.checkmk.com
Naturalmente il CSV può contenere altre colonne - per i dettagli si veda la Guida ufficiale dell'utente di Checkmk. Dopo il caricamento, è possibile verificare ancora una volta. Infine, importare gli host e non dimenticare di applicare le modifiche. Facendo clic sul logo di Checkmk si torna alla dashboard principale, che ora mostra il numero totale di host. Facendo clic su uno dei nuovi host, si noterà che non ha ancora un servizio.
Il potere delle regole
Ora puoi sperimentare tutta la potenza delle regole: Apri il menu Setup e digitate "certificate" nel campo di ricerca. Sotto HTTP, TCP, Email verranno presentati i certificati di controllo. Fai clic su questo suggerimento per modificare/aggiungere le regole.
È ora possibile aggiungere una nuova regola per il controllo dei certificati. Segui i suggerimenti della schermata seguente per quanto riguarda il prefisso, il nome e l'endpoint. Qui abbiamo creato un avviso a 22 giorni di durata residua del certificato. Se si tenta di rinnovare quotidianamente, si potrebbero usare 28 giorni. Infine, la cosa più importante è la condizione: Applica la regola alla cartella appena creata senza ulteriori limitazioni. In questo modo, la regola viene associata ai parametri specificati per ogni host di questa cartella.
Applica ancora una volta le modifiche e attendi qualche minuto fino a quando tutti gli host saranno stati controllati per la prima volta: Missione compiuta! Ora basta un breve sguardo alla dashboard per capire se ci sono stati problemi nel rinnovo dei certificati.
Non c'è monitoraggio corretto senza notifiche!
Naturalmente, dover guardare una dashboard per individuare i problemi non è il modo più intelligente per identificarli. La strada da percorrere è quella delle notifiche e degli avvisi, e le e-mail dominano ancora i metodi di notifica. Per questo motivo, ha senso iniziare con le e-mail.
C'è una differenza significativa tra Checkmk Raw e Checkmk Cloud per quanto riguarda le e-mail: Checkmk Raw si affida interamente all'MTA ('mail transfer agent') del sistema, quindi come minimo è necessario configurare qualcosa come il Nullmailer, che è solo un relay. In alternativa, per le e-mail HTML Checkmk Cloud offre la cosiddetta "consegna sincrona", che esclude l'MTA locale e consegna direttamente a uno smarthost. Questa soluzione è più semplice da configurare e consente di rilevare meglio le consegne di e-mail non riuscite.
A questo punto si consiglia di creare un normale utente di monitoraggio con un indirizzo e-mail, per separare le attività di amministrazione da quelle di monitoraggio. Compila almeno il nome, il nome utente e l'indirizzo e-mail, quindi aggiungi questo utente al gruppo di contatti Everything. Quando il tuo ambiente di monitoraggio diventa più grande, potresti voler creare gruppi di contatto dedicati per determinati progetti e rimuovere il gruppo di contatto Everything da tutti gli utenti.
Per le notifiche, una regola predefinita per notificare tutti i contatti di un host/servizio sarà già abilitata. Poiché il nuovo utente è stato aggiunto al gruppo Everything, riceverà una notifica se un servizio passa a WARN o CRIT. Fare clic sul simbolo della matita per modificare la regola predefinita: quasi certamente si vorrà cambiare il campo da nelle e-mail generate.
Per verificare se le notifiche arrivano effettivamente a destinazione, andare in Setup > Events > Notifications. Qui si trova il pulsante Test notifications. Fare clic su di esso per selezionare un host e un servizio, impostare il segno di spunta per HTML/ASCII e procedere. Pochi secondi dopo, ti verrà presentato un protocollo che mostra chi ha ricevuto l'e-mail e, naturalmente, troverai anche un'e-mail nella tua casella di posta.
Cosa c'é dopo?
Oltre al controllo dei certificati che hai appena imparato a configurare, potresti dare un'occhiata al servizio web Check HTTP. Questo controllo può sondare un'intera gamma di parametri relativi all'HTTP, come il codice di risposta, il contenuto, i reindirizzamenti e i tempi di risposta. Può anche eseguire il controllo di base dei certificati, quindi nei casi più semplici può sostituire il controllo del solo certificato. Nei casi più complicati, come il controllo di un elenco di SNI (Server Name Indication) o il controllo di un protocollo diverso da HTTPS, ad esempio, il controllo del certificato rimane la scelta migliore.
Inoltre, per monitorare lo spazio su disco, la salute dell'hardware, le prestazioni del database e molto altro ancora, è possibile aggiungere l'agente Checkmk ad altri host. Come avrai notato, le sue impostazioni predefinite forniscono già alcune preziose informazioni sul carico del sistema e sull'utilizzo del disco.