Ci sono molte ragioni per passare da Nagios a un altro strumento di monitoraggio. I consulenti IT di tribe29 hanno già assistito diverse organizzazioni nella sostituzione di Nagios e in questo blog post vorrei mostrarti come puoi migrare il tuo monitoraggio da Nagios a Checkmk con uno poco sforzo. Checkmk è ideale come alternativa a Nagios perché, in quanto fork di Nagios, supporta molti concetti familiari e collaudati di Nagios. Tuttavia, Checkmk risolve la maggior parte dei punti deboli di Nagios con nuovi concetti e quindi rende il monitoraggio molto più semplice.
In questo post ti guiderò nella migrazione di un piccolo ambiente Nagios a Checkmk. Le istruzioni si basano su funzionalità offerte da Checkmk che non sono disponibili in Nagios. In teoria, è possibile usare Checkmk anche per prendere il controllo diretto di gran parte di un’installazione Nagios esistente, ma ciò richiede solitamente uno sforzo maggiore. Non è necessaria alcuna esperienza pregressa con Checkmk, né la configurazione di database o plug-in aggiuntivi: Checkmk include già tutto il necessario per effettuare la migrazione.
In queste istruzioni eviterò per lo più l’uso della riga di comando, anche se Checkmk può essere configurato anche tramite API. È possibile importare i plug-in di Nagios, ma in genere servono solo in casi particolari. L’interfaccia utente di Checkmk semplifica notevolmente la configurazione, e i plug-in ufficiali offrono prestazioni più efficienti e affidabili.
Esistono naturalmente altri modi per sostituire il proprio ambiente Nagios. Ad esempio, la configurazione di Nagios e tutti gli host potrebbero essere letti da Livestatus e trasferiti direttamente a Checkmk utilizzando le API di Checkmk (tra l'altro, Livestatus è stato sviluppato anche dal team di Checkmk). In questo modo sarebbe possibile migrare anche ambienti di grandi dimensioni senza tempi di inattività.
Tuttavia, questa operazione richiede una buona conoscenza di Linux e può essere piuttosto impegnativa in termini di tempo. La soluzione ideale dipende ovviamente dalla configurazione e dalla complessità della propria installazione di Nagios. Questa guida dovrebbe comunque essere adatta alla maggior parte degli scenari di utilizzo. I tuoi commenti e suggerimenti a fine articolo sono più che benvenuti. Ti invito anche a condividere le tue idee o i tuoi problemi nel forum di Checkmk.
Prima di iniziare: La configurazione della mia istanza Nagios
In questo capitolo elencherò i dettagli della mia istanza Nagios. Nella mia configurazione eseguo Nagios Core versione 4.4.5 e sposto il monitoraggio su Checkmk Raw Edition 2.0.0.7b. Anche il passaggio da un ambiente Nagios commerciale a Checkmk è possibile senza problemi, utilizzando queste istruzioni. È anche possibile utilizzare direttamente Checkmk Enterprise Edition come alternativa a Nagios o, in seguito, spostare semplicemente il monitoraggio dalla Raw Edition alla Enterprise Edition di Checkmk. Io uso le versioni open-source di Nagios e Checkmk. In ogni caso, dovresti usare una versione aggiornata di Checkmk, che puoi trovare nella pagina dei download. La mia istanza di Nagios gira su un server CentOS 7 (versione 7.9.2009). Oltre a Nagios, ho installato i plug-in standard di Nagios e il Nagios Remote Plugin Executer (NRPE). Ho quattro host con un totale di 24 servizi da monitorare: Il mio server host Nagios (localhost), un altro server Linux, un server Windows e uno switch Cisco (sw-01.lan.tribe29.com). Ho creato definizioni corrispondenti per tutti questi host e servizi. Come mostra la schermata di Nagios, sono tutti online e accessibili per il mio host Nagios. Ho configurato alcuni servizi Nagios standard per gli host Linux e Windows. Sul mio server Linux ho installato NRPE v4.0.3. per inviare i dati alla mia istanza Nagios. Sul sistema Windows ho installato l'agente di monitoraggio NSClient++ come servizio Windows per inviare i dati a Nagios. Monitoro lo switch tramite il plug-in SNMP standard di Nagios. Ho configurato manualmente ogni host sul server Nagios tramite la riga di comando.
Per il mio monitoraggio di Nagios ho definito tre gruppi di contatto, ciascuno con due utenti. Il numero di host, servizi, utenti e gruppi di contatto nel mio ambiente Nagios è relativamente piccolo, ma anche ambienti molto più grandi possono essere migrati senza problemi.
Preparazione: Configurazione di Checkmk
Per prima cosa installeremo Checkmk su un altro server, in quanto non è consigliabile eseguire Nagios e Checkmk sullo stesso server. Checkmk funziona in modo molto più efficiente di Nagios, ma è comunque necessario fornire risorse hardware sufficienti per il server. Un vantaggio di Checkmk è che non è più necessario configurare manualmente i servizi. Con il rilevamento automatico dei servizi, puoi ottenere un maggior numero di servizi importanti per host e ridurre al tempo stesso lo sforzo necessario per il processo di monitoraggio. Nel mio caso, ho lo stesso numero di host di prima, ma il numero di servizi è quadruplicato.
Per questa esercitazione ho configurato Checkmk Raw 2.0.0b7 su un server Linux (Ubuntu 20.04) come descritto nella documentazione. La "b" in 2.0.0b7 sta per beta. Ovviamente, per la migrazione si dovrebbe sempre utilizzare una versione attuale e stabile.
Per la migrazione di Nagios si deve innanzitutto configurare un'istanza con l'edizione di Checkmk scelta, e avviarla. Poiché Checkmk viene fornito come pacchetto integrato, l'installazione avviene in poco tempo e non richiede l'installazione separata di un database o di un server web. Dopo aver effettuato l'accesso tramite l'interfaccia grafica, vedrai una schermata di monitoraggio vuota.
Includere i dispositivi SNMP in Checkmk
Iniziamo modificando la situazione, includendo nel monitoraggio in Checkmk un dispositivo che non può essere monitorato tramite agenti. In genere si tratta di dispositivi di rete che possono essere monitorati solo con SNMP. Le opinioni su SNMP sono discordanti: per me SNMP è un male necessario. Checkmk è fortunatamente in grado di astrarre la complessità di SMNP e include plug-in per quasi tutti i dispositivi di rete, il che significa che come utente non devo lottare con le idiosincrasie di SNMP.
Se hai intenzione di monitorare molto la rete, ti consiglio di leggere l'articolo del nostro blog 'Network Monitoring: Four Rules to rule them all' prima della migrazione e di seguire le istruzioni contenute nell'articolo. Nel mio caso, ho un solo switch e utilizzo le impostazioni predefinite fornite da Checkmk.
Per aggiungere il tuo host, vai su Setup ➳ Hosts. In alto a sinistra si trova il pulsante Add host. Cliccaci sopra e compila i campi necessari per questo host.
Vorrei assegnare un nome alias come nel mio vecchio ambiente Nagios. In BASIC SETTINGS sono presenti 'Hostname' e 'Alias'. Se il nome host è scritto correttamente e il DNS è impostato correttamente nella rete, Checkmk può risolverlo e identificare l'indirizzo IP da solo. A scopo dimostrativo, tuttavia, inserisco anche l'indirizzo IP. In DATA SOURCES, imposto 'Checkmk Agent' su 'No agent' e la versione SNMP desiderata nel campo 'SNMP' sottostante, in questo caso 'SNMP v2 or v3'.
Nel campo successivo è necessario inserire o meno le 'SNMP credentials'. Come la maggior parte delle organizzazioni, utilizzo SNMP v2c, quindi non ho modificato la Community standard del mio switch e posso procedere utilizzando il Default value. In questo caso, Checkmk utilizza 'public' come valore predefinito per la community SNMP. Se ci si discosta dai dati di accesso SNMP standard, è necessario regolare questo valore di conseguenza. Per il mio switch si presenta così:
Dopo aver inserito i dati, clicca su Save & go to service configuration. Checkmk cercherà ora di recuperare i dati di monitoraggio dallo switch. Se l'operazione è riuscita, Checkmk mostrerà un elenco di porte e chiederà se si desidera includerle come servizi nel monitoraggio.
Proprio come me, ora ti mancheranno alcune porte perché Checkmk per ora scopre solo le porte che sono attualmente online. Questo è il prezzo della scorciatoia. La soluzione migliore è presentata dal mio collega nel già citato articolo del blog su SNMP. Ha perfezionato il monitoraggio SNMP in Checkmk con l'aiuto di regole e tag, in modo da includere nel monitoraggio anche le porte temporaneamente offline e distinguere tra porte di accesso, uplink e così via. Per il mio switch di esempio, mi accontento delle porte attualmente online.
Ora è necessario selezionare i servizi che desidero aggiungere al monitoraggio. Se non è stata effettuata una selezione individuale, Checkmk seleziona tutte le porte rilevate e le include nel monitoraggio. Il modo più semplice è fare clic su Fix all. Checkmk non solo aggiungerà tutti i servizi monitorati, ma assegnerà anche le etichette corrispondenti. Utilizzando il plug-in Check snmp_info, Checkmk ha riconosciuto che l'host è uno switch e gli ha quindi assegnato automaticamente un Host Label adeguato. Checkmk ora mostra le porte come servizi e il monitoraggio del mio switch è quasi completo.
Tuttavia, devo ancora accettare le modifiche. Per farlo, clicco su Changes nell'angolo in alto a destra per accedere alla panoramica Pending changes. Seleziono la casella Activation status nella parte anteriore della relativa istanza di Checkmk e clicco su Activate on selected sites. A questo punto è stato aggiunto il primo host al nuovo monitoraggio.
Creare cartelle per gli host in Checkmk
Effettuare questa operazione è stato relativamente facile rispetto a Nagios, ma ovviamente non voglio includere manualmente ogni singolo host nel monitoraggio. Lavorare con le cartelle in Checkmk è un buon inizio, per rendere più semplici le tue attività quotidiane di monitoraggio.
In Setup ➳ Hosts è possibile creare tali cartelle per i propri host. Le cartelle non esistevano nel mio ambiente Nagios. Tuttavia, poiché la gestione tramite cartelle in Checkmk è uno strumento potente, proviamo qui, proprio all'inizio, a scopo dimostrativo.
Clicca su Add subfolder e rinomina la cartella secondo le tue esigenze. Io ho creato tre cartelle per i miei host: "Server Linux", "Server Windows" e "Dispositivi di rete". Tutti gli host ereditano automaticamente le impostazioni delle loro cartelle. Quindi, ad esempio, è possibile impostare la configurazione di SNMP soltanto una volta nella cartella appropriata, e in futuro sarà sufficiente assegnare l'host a quella cartella al momento della creazione dell'host.
Ho quindi impostato 'No agent' e 'SNMP v2 or v3' come DATA SOURCES per la mia cartella 'Dispositivi di rete', proprio come ho fatto in precedenza per il mio switch Cisco. In futuro, potrò inserire i miei dispositivi di rete in questa cartella durante la creazione dell'host e non dovrò più effettuare ulteriori configurazioni. Inoltre, posso assegnare gli host esistenti alle cartelle desiderate nella Main directory, tramite il simbolo della cartella con la freccia. Ho spostato il mio switch Cisco direttamente nella cartella.
Non dimenticare di accettare le modifiche. È possibile creare facilmente dei modelli utilizzando le cartelle, in modo da poter importare successivamente un gran numero di host nel monitoraggio con pochi clic. Checkmk supporta anche Bulk import di host tramite elenchi CSV o script automatici tramite la riga di comando. Tuttavia, è consigliabile includere i primi host nel monitoraggio tramite l'interfaccia grafica, al fine di acquisire esperienza con Checkmk.
Oltre alle cartelle, con Etichette e Tag Checkmk offre buone funzioni per gestire facilmente ambienti di monitoraggio di grandi dimensioni con un gran numero di host.
Installazione degli agenti Checkmk sui sistemi da monitorare
Adesso, dobbiamo dotare gli host degli agenti Checkmk appropriati. Per farlo, è necessario avere accesso ai sistemi come root. Nella Raw Edition, gli agenti si trovano in Setup ➳ Agents.
Nel mio monitoraggio ho tre server che voglio monitorare tramite agenti: un server Linux di produzione e uno Windows, oltre al mio sistema host di monitoraggio. Per i sistemi Linux, accedo come root e installo il pacchetto agente corrispondente. Sul server Windows, eseguo il file MSI localmente e installo l'agente Checkmk come servizio Windows. Nel mio esempio, mi sono così assicurato di poter prelevare i dati dai miei server utilizzando gli agenti Checkmk.
Nel manuale troverai istruzioni dettagliate su come installare i rispettivi agenti sulle tue piattaforme server. Sono inoltre disponibili plug-in per molti altri sistemi per un monitoraggio più approfondito. Poiché le estensioni di Checkmk forniscono solitamente più informazioni con un minor consumo di risorse, vale la pena di sostituire i vecchi plug-in di Nagios con i corrispondenti plug-in di Checkmk.
Nota inoltre che Checkmk può essere esteso anche con check locali. È possibile convertire i plug-in di Nagios in check locali per Checkmk. Se non esiste un plug-in ufficiale per un sistema, puoi adattare le estensioni esistenti di altri strumenti di monitoraggio per renderle conformi alle linee guida di Checkmk. Molti dei nostri clienti hanno implementato con successo questa soluzione. Tieni presente però che tribe29 non può garantire il supporto in questo caso.
Includere i sistemi come host nel monitoraggio
Una volta che gli agenti sono in esecuzione sui sistemi, possiamo includerli nel monitoraggio. Per il mio piccolo sistema Nagios e a scopo esplicativo, lo faremo di nuovo tramite la GUI.
Iniziamo con il nostro server di monitoraggio localhost. Vado di nuovo in Setup ➳ Hosts, apro la cartella corrispondente e creo l'host con Add Host. Inserisco "localhost" come hostname. Non devo far altro: posso lasciare vuoti gli altri campi. Senza modificare le impostazioni dell'host, Checkmk presuppone sempre che si voglia monitorare un host tramite l'agente. Quindi, mi basta inserire correttamente il nome dell'host e avere una risoluzione ragionevole del nome nella rete.
Clicco nuovamente su Save & go to service configuration per avviare la scoperta automatica del servizio. I passaggi restanti sono identici a quelli utilizzati per il monitoraggio dello switch.
Non dimenticare di accettare nuovamente le modifiche. Questa è esattamente la procedura che ho utilizzato per aggiungere il mio localhost, il mio server Windows e l'altro server Linux.
Configurazione di gruppi di host, utenti e altri allarmi
Checkmk offre naturalmente anche la possibilità di gestire host e utenti in gruppi, oltre a disporre di numerosi meccanismi di notifica. Come già accennato a proposito di etichette, tag e cartelle, queste funzionalità spesso superano quelle offerte da Nagios e possono essere combinate liberamente.
Inoltre, non dovrai più necessariamente effettuare queste operazioni tramite la riga di comando, ma puoi anche eseguirle comodamente nell'interfaccia utente. Quindi, dimenticati del lavoro con gli oggetti di Nagios, faticosamente definiti usando file di configurazione. Troverai invece istruzioni precise nel manuale di Checkmk e potrai semplicemente cercare lì gli elementi desiderati, come l'amministrazione degli utenti e la gestione degli allarmi degli host.
A questo punto, ho creato di nuovo i miei sei utenti in tre gruppi di contatto, compresi i dettagli di contatto. Ho anche ricreato rapidamente i gruppi di host. Sta a te decidere come configurare Checkmk, ma con l'aiuto del manuale è relativamente facile personalizzarlo a tuo piacimento. Una volta configurato il monitoraggio secondo i tuoi desideri, puoi completare la migrazione.
Completare la migrazione
Ho quasi finito. Tuttavia, adesso sto monitorando alcuni sistemi due volte. Soprattutto nel mio switch, Nagios e Checkmk accedono ora all'agente SNMP. Ho quindi disattivato la mia istanza di Nagios - e ti consiglio di fare lo stesso. Puoi procedere eliminando i vecchi agenti Nagios dai tuoi host. Come previsto, Checkmk ha trovato adesso più servizi. Con Nagios c'erano 24 servizi, ora ce ne sono 107, senza bisogno di alcuna configurazione manuale.
Questa è solo una delle diverse opzioni a tua disposizione, per migrare da Nagios. Per ambienti molto grandi, può valere la pena di migrare gli host tutti in una volta tramite uno script dalla riga di comando. L'interfaccia Checkmk Livestatus può eseguire questa operazione leggendo i dati di tutti gli oggetti Nagios dall'ambiente Nagios. Però, dato che è molto facile creare host con Checkmk, l'approccio descritto qui è generalmente più sicuro e semplice.
Il tuo entusiasmante viaggio con Checkmk è appena iniziato. Senza dubbio ti orienterai facilmente e sono sicuro che non sentirai la mancanza di Nagios. Oltre al manuale di Checkmk, puoi partecipare a un corso di formazione su Checkmk o postare nel nostro forum se vuoi approfondire argomenti specifici o porre delle domande.
Buon monitoraggio!