![]() |
This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Introduzione
Probabilmente non tutti hanno la stessa concezione del termine "monitoraggio distribuito". In realtà il monitoraggio è sempre distribuito su più computer, a meno che il sistema di monitoraggio non stia monitorando solo se stesso, il che non sarebbe molto utile.
In questo manuale si parla sempre di monitoraggio distribuito quando il sistema di monitoraggio nel suo complesso è composto da più di un'istanza Checkmk. Ci sono diverse buone ragioni per suddividere il monitoraggio su più siti:
Prestazioni: Il carico del processore dovrebbe o deve essere condiviso su più macchine.
Organizzazione: Diversi gruppi devono essere in grado di amministrare i propri siti in modo indipendente.
Disponibilità: Il monitoraggio di una sede deve funzionare indipendentemente dalle altre sedi.
Sicurezza: I flussi di dati tra due domini di sicurezza devono essere controllati separatamente e con precisione (DMZ, ecc.).
Rete: Le sedi che hanno solo connessioni a banda stretta o inaffidabili non possono essere monitorate da remoto in modo affidabile.
Checkmk supporta diverse procedure per l'implementazione di un monitoraggio distribuito. Checkmk ne controlla alcune in quanto è in gran parte compatibile con Nagios o si basa su di esso (se Nagios è stato installato come core). Questo include, ad esempio, la procedura con mod_gearman
. Rispetto al sistema di monitoraggio di Checkmk, questo non offre alcun vantaggio ed è anche più complicato da implementare. Per questi motivi non lo consigliamo.
La procedura preferita da Checkmk si basa su Livestatus e su un ambiente di configurazione distribuito. Per situazioni con reti molto separate o addirittura con un trasferimento di dati unidirezionale dalla periferia al data center esiste un metodo che utilizza Livedump o, rispettivamente, CMCDump. Entrambi i metodi possono essere combinati.
2. Monitoraggio distribuito con Livestatus
2.1. Principi di base
Stato centrale
Livestatus è un'interfaccia integrata nel nucleo di monitoraggioche permette ad altri programmi esterni di interrogare i dati di stato ed eseguire comandi. Livestatus può essere reso disponibile attraverso la rete in modo da potervi accedere da un'istanza remota in Checkmk. L'utente dell'istanza Checkmk utilizza Livestatus per combinare tutti i siti collegati in una panoramica generale. In questo modo si ha l'impressione di un "grande" sistema di monitoraggio.
Il seguente diagramma mostra schematicamente la struttura di un monitoraggio con Livestatus distribuito su tre sedi. L'istanza Checkmk Central Site si trova nella sede centrale del processo. Da qui i sistemi centrali vengono controllati direttamente. Inoltre, ci sono il Sito Remoto 1 e il Sito Remoto 2 che si trovano in altre reti e sono controllati dai loro sistemi locali:

La particolarità di questo metodo è che lo stato di monitoraggio dei siti remoti non viene inviato continuamente al sito centrale. La GUI recupera sempre i dati in tempo reale dai siti remoti solo quando sono richiesti da un utente del centro di controllo. I dati vengono poi compilati in una visualizzazione centralizzata. Non c'è quindi un archivio centrale di dati, il che significa che offre enormi vantaggi in termini di scalabilità!
Ecco alcuni dei vantaggi di questo metodo:
Scalabilità: Il monitoraggio stesso non genera alcun traffico di rete tra la sede centrale e quella remota. In questo modo è possibile connettere centinaia di sedi o più.
Affidabilità: Se la connessione di rete a un sito remoto si interrompe, il monitoraggio locale continua comunque a funzionare normalmente. Non c'è nessun "buco" nella registrazione dei dati e nemmeno un "blocco" dei dati. La notifica locale continuerà a funzionare.
Semplicità: I siti possono essere incorporati o rimossi con estrema facilità.
Flessibilità: I siti remoti sono ancora autonomi e possono essere utilizzati per il funzionamento nella rispettiva località. Questo è particolarmente interessante se la "sede" non deve mai essere autorizzata ad accedere al resto del monitoraggio.
Configurazione centralizzata
In un sistema distribuito utilizzando Livestatus come descritto in precedenza, è possibile che i singoli siti siano gestiti in modo indipendente da diversi provider e che il sito centrale abbia solo il compito di fornire un dashboard centralizzato.
Nel caso di più siti o di tutti i siti che devono essere amministrati dallo stesso team, una configurazione centrale è molto più facile da gestire. Checkmk supporta questo aspetto e si riferisce a una configurazione di questo tipo come ambiente di configurazione distribuito. In questo modo tutti gli host e i servizi, gli utenti e i permessi, i periodi di tempo e le notifiche, ecc. saranno mantenuti e configurati nel sito centrale e poi, a seconda dei loro compiti, saranno distribuiti automaticamente ai siti remoti.
Un sistema di questo tipo non solo ha una panoramica comune dello stato, ma anche una configurazione comune e di fatto "sembra un grande sistema".
È possibile estendere questo sistema con istanze-viewer dedicate, ad esempio, che fungono solo da interfaccia di stato per sottoaree o gruppi specifici di utenti.
2.2. Installazione di un monitoraggio distribuito
L'installazione di un monitoraggio distribuito utilizzando l'ambiente di configurazione Livestatus/distribuito si realizza nei seguenti passaggi:
Per prima cosa installa il sito centrale, come si fa di solito per un singolo sito.
Installazione dei siti remoti e abilitazione di Livestatus tramite la rete.
Integrare i siti remoti nel sito centrale utilizzando Setup > General > Distributed monitoring
Per gli host e i servizi, specifica da quale sito devono essere monitorati.
Esegui una scoperta del servizio per gli host migrati e attiva le modifiche appena apportate.
Installazione di un sito centrale
Il sito centrale non richiede requisiti particolari: ciò significa che un sito consolidato da tempo può essere ampliato in un monitoraggio distribuito senza richiedere ulteriori modifiche.
Installazione di siti remoti e abilitazione di Livestatus tramite la rete
I siti remoti vengono generati come nuovi siti nel modo consueto con omd create
. Questo avviene naturalmente sul server (remoto) destinato al rispettivo sito remoto.
Note speciali:
Per i siti remoti, utilizza ID unici per il tuo monitoraggio distribuito.
La versione di Checkmk (ad es. 2.2.0) dell'istanza remota in Checkmk e di quella centrale è la stessa - leversioni miste sono supportate solo per facilitare gli aggiornamenti.
Così come Checkmk supporta istanze multiple su un server, anche i siti remoti possono essere eseguiti sullo stesso server.
Ecco un esempio di creazione di un sito remoto con il nome remote1
:
root@linux# omd create remote1
Adding /opt/omd/sites/remote1/tmp to /etc/fstab.
Creating temporary filesystem /omd/sites/remote1/tmp...OK
Updating core configuration...
Generating configuration for core (type cmc)...
Starting full compilation for all hosts Creating global helper config...OK
Creating cmc protobuf configuration...OK
Executing post-create script "01_create-sample-config.py"...OK
Restarting Apache...OK
Created new site remote1 with version 2.2.0p1.cee.
The site can be started with omd start remote1.
The default web UI is available at http://myserver/remote1/
The admin user for the web applications is cmkadmin with password: lEnM8dUV
For command line administration of the site, log in with 'omd su remote1'
After logging in, you can change the password for cmkadmin with 'cmk-passwd cmkadmin'.
Il passo più importante è ora quello di abilitare Livestatus via TCP sulla rete. Nota che Livestatus non è di per sé un protocollo sicuro e deve essere utilizzato solo all'interno di una rete sicura (LAN protetta, VPN, ecc.). L'abilitazione appare su omd config
come utente dell'istanza su un sito fermo:
root@linux# su - remote1
OMD[remote1]:~$ omd config
Ora seleziona Distributed Monitoring:

Imposta LIVESTATUS_TCP su ‘on’ e inserisci un numero di porta disponibile perLIVESTATUS_TCP_PORT che sia esplicito su questo server. Il valore predefinito è 6557:

Dopo aver salvato, avvia il sito come di consueto con omd start
:
OMD[remote1]:~$ omd start
Temporary filesystem already mounted
Starting mkeventd...OK
Starting liveproxyd...OK
Starting mknotifyd...OK
Starting rrdcached...OK
Starting cmc...OK
Starting apache...OK
Starting dcd...OK
Starting redis...OK
Starting xinetd...OK
Initializing Crontab...OK
Mantieni la password di cmkadmin
. Una volta che il sito remoto è stato subordinato al sito centrale, tutti gli utenti dell'istanza saranno sostituiti da quelli del sito centrale.
Il sito remoto è ora pronto. Verifica con netstat
che la porta 6557 sia aperta. La connessione a questa porta viene effettuata da un sito del superserver Internet xinetd
, che funziona direttamente nel sito:
root@linux# netstat -lnp | grep 6557
tcp6 0 0 :::6557 :::* LISTEN 10719/xinetd
Assegnare i siti remoti al sito centrale
La configurazione del monitoraggio distribuito avviene esclusivamente sul sito centrale nel menu Setup > General > Distributed monitoring, che serve a gestire le connessioni ai singoli siti. Per questa funzione il sito centrale stesso conta come sito ed è già presente nell'elenco:

Utilizzando Add connection, definisci ora la connessione al primo sito remoto:

In Basic settings è importante utilizzare il nome ESATTO del sito remoto - definito con omd create
- come Site ID. Come sempre, l'alias può essere definito a piacere e può essere modificato in seguito.

Le impostazioni di Status connection determinano il modo in cui la centrale interroga lo stato dei siti remoti tramite Livestatus. L'esempio nella schermata mostra una connessione con il metodo Connect via TCP(IPv4). Questo è il metodo ottimale per connessioni stabili con brevi periodi di latenza (come ad es. in una LAN). Parleremo in seguito delle impostazioni ottimali per le connessioni WAN.
Inserisci qui l'URL HTTP dell'interfaccia web remota (solo la parte che precede il componente check_mk/
). Se accedi a Checkmk tramite HTTPS, sostituisci http
con https
. Ulteriori informazioni sono disponibili nella guida online o nell'articolo sulla protezione dell'interfaccia web con HTTPS.

La replica della configurazione e quindi l'utilizzo dell'ambiente di configurazione distribuito è, come abbiamo detto nell'introduzione, facoltativa. Attivala se desideri configurare il sito remoto con e dal sito centrale. In questo caso seleziona le impostazioni esatte come mostrato nell'immagine qui sopra.
L'impostazione corretta di URL of remote site è molto importante: l'URL deve sempre terminare con /check_mk/
. Si raccomanda una connessione con HTTPS, a condizione che Apache del sito remoto supporti HTTPS. Questo deve essere installato manualmente sul sito remoto a livello Linux. Per l'istanza remota in Checkmk Appliance, HTTPS può essere impostato tramite l'interfaccia web di configurazione. Se utilizzi un certificato self-signed, dovrai selezionare il box Ignore SSL certificate errors.
Una volta salvata la maschera, nella panoramica apparirà un secondo sito:

Lo stato di monitoraggio del sito remoto (finora vuoto) è ora correttamente integrato. Per utilizzare l'ambiente di configurazione distribuito è necessario disporre di un login per l'istanza remota Checkmk. A tal fine, il sito centrale scambia con il sito remoto un segreto di login generato in modo casuale, attraverso il quale avverranno tutte le comunicazioni future. In seguito, l'accesso cmkadmin
del sito remoto non sarà più utilizzato.
Per effettuare il login utilizza i dati di accesso cmkadmin
e la relativa password del sito remoto. Non dimenticare di selezionare il box Confirm overwrite prima di cliccare il pulsante Login:

Un login riuscito verrà confermato:

Se si verifica un errore durante il login, questo potrebbe essere dovuto a diversi motivi, ad esempio:
Il sito remoto è attualmente fermo.
Il sito Multisite-URL of the remote site non è stato configurato correttamente.
Il sito remoto non è raggiungibile con il nome host "dal sito centrale" specificato nell'URL.
Le versioni dell'istanza Checkmk del sito centrale e di quello remoto sono (troppo) incompatibili.
Sono stati inseriti un utente e/o una password non validi.
I punti 1. e 2. possono essere facilmente verificati richiamando manualmente l'URL del sito remoto nel browser.
Quando tutto è andato a buon fine, esegui Activate Changes. Questo ti porterà, come sempre, a una panoramica delle modifiche non ancora attivate. Contemporaneamente la panoramica mostrerà anche gli stati delle connessioni Livestatus e gli stati di sincronizzazione dell'ambiente di configurazione distribuito dei singoli siti:

La colonna Version mostra la versione di Livestatus del rispettivo sito. Se utilizzi il CMC come istanza Checkmk (edizioni commerciali), il numero di versione del core (indicato nella colonna ‘Core’ ) è identico a quello di Livestatus. Se utilizzi Nagios come core (Checkmk Raw), il numero di versione di Nagios sarà visibile qui.
I seguenti simboli mostrano lo stato di replica dell'ambiente di configurazione:
Questo sito ha modifiche in sospeso. La configurazione corrisponde al sito centrale, ma non tutte le modifiche sono state attivate. Con il pulsante è possibile eseguire un'attivazione mirata per questo sito. |
|
La configurazione di questo sito non è sincrona e deve essere riportata. Per attivarla sarà ovviamente necessario un riavvio. Entrambe le funzioni possono essere eseguite con un clic del pulsante. |
Nella colonna Status è possibile vedere lo stato della connessione Livestatus per il sito in questione. Questo viene mostrato a titolo puramente informativo poiché la configurazione non viene trasmessa tramite Livestatus, ma piuttosto tramite HTTP. Sono possibili i seguenti valori:
Il sito è raggiungibile tramite Livestatus. |
|
Il sito non è attualmente raggiungibile. Le query di Livestatus sono in timeout. Questo ritarda il caricamento della pagina. I dati di stato di questo sito non sono visibili nella GUI. |
|
Il sito non è attualmente raggiungibile, ma ciò è dovuto all'impostazione di uno stato dell'host o è noto attraverso il proxy Livestatus (vedi sotto). L'inaccessibilità non comporta timeout. I dati di stato di questo sito non sono visibili nella GUI. |
|
La connessione di Livestatus a questo sito è stata temporaneamente disattivata dall'amministratore (del sito centrale). L'impostazione corrisponde al box "Disattiva temporaneamente questa connessione" nelle impostazioni di questa connessione. |
Facendo clic sul pulsante Activate on selected sites, tutti i siti verranno sincronizzati e le modifiche verranno attivate. L'operazione viene eseguita in parallelo, in modo che il tempo complessivo corrisponda a quello richiesto dal sito più lento. Nel tempo sono inclusi la creazione di un'istantanea di configurazione per il rispettivo sito, la trasmissione via HTTP, lo scompattamento dell'istantanea sul sito remoto e l'attivazione delle modifiche.
Importante: Non abbandonare la pagina prima che la sincronizzazione sia stata completata su tutti i siti: l'abbandono della pagina interromperà la sincronizzazione.
Specificare agli host e alle cartelle quale sito li deve monitorare
Una volta installato l'ambiente distribuito, puoi iniziare a usarlo. In realtà devi solo indicare a ciascun host da quale sito deve essere monitorato. Il sito centrale è specificato per impostazione predefinita.
L'attributo richiesto è ‘Monitored on site’. Puoi impostarlo individualmente per ogni host, naturalmente anche a livello di cartella:

Esecuzione di una nuova scoperta del servizio e attivazione delle modifiche per gli host migrati
L'aggiunta di host funziona come al solito: a parte il fatto che il monitoraggio e la scoperta del servizio saranno eseguiti dal rispettivo sito remoto, non ci sono considerazioni particolari.
Quando si migrano gli host da un sito all'altro, ci sono un paio di punti da tenere in considerazione. Idati di stato dell'host, sia attuali che storici, non verranno trasferiti.Solo la configurazione dell'host viene mantenuta nell'ambiente di configurazione. In effetti è come se l'host fosse stato rimosso da un sito e installato di recente nell'altro sito:
I servizi scoperti automaticamente non verranno migrati. Esegui una scoperta del servizio dopo la migrazione.
Una volta riavviati, gli host e i servizi mostreranno IN SOSP. I problemi attualmente esistenti potrebbero essere notificati di nuovo.
I grafici storici andranno persi. Questo può essere evitato spostando manualmente i file RRD pertinenti. La posizione dei file si trova in File e directory.
I dati relativi alla disponibilità e agli eventi storici andranno persi. Purtroppo non è facile migrare questi dati perché sono costituiti da singole righe del log di monitoraggio.
Se la continuità della cronologia è importante per te, al momento di implementare il monitoraggio devi pianificare attentamente quale host deve essere monitorato e da dove.
2.3. Connessione di Livestatus con la crittografia
A partire dalla versione 1.6.0 le connessioni di Livestatus tra il sito centrale e un sito remoto possono essere crittografate. Per le nuove istanze Checkmk non è necessario fare nulla di più, in quanto si occupa automaticamente dei passaggi necessari. Non appena si utilizza il tasto omd config
per attivare Livestatus, anche la crittografia viene attivata automaticamente tramite TLS:

La configurazione del monitoraggio distribuito rimane quindi semplice come lo è stata finora. Per le nuove connessioni ad altri siti, l'opzioneEncryption viene attivata automaticamente.
Dopo aver aggiunto il sito remoto, noterai due cose: in primo luogo, la connessione è contrassegnata come crittografata da questo nuovo simbolo e, in secondo luogo, Checkmk ti dirà che il CA non si fiderà più del sito remoto. Clicca su per accedere ai dettagli dei certificati utilizzati. Un clic su ti permette di aggiungere comodamente la CA tramite l'interfaccia web. A questo punto entrambi i certificati saranno elencati come attendibili:

Dettagli sulle tecnologie utilizzate
Per ottenere la crittografia Checkmk utilizza il programma stunnel
insieme al proprio certificato e alla propria Autorità di Certificazione (CA) per firmare il certificato. Questi saranno generati automaticamente con un nuovo sito e non si tratta di CA o certificati statici predefiniti. Si tratta di un fattore di sicurezza molto importante per evitare che gli aggressori utilizzino certificati falsi, perché qualsiasi aggressore potrebbe accedere a una CA disponibile pubblicamente.
I certificati generati hanno anche le seguenti proprietà:
Entrambi i certificati sono in formato PEM. I certificati firmati per il sito contengono anche la catena completa dei certificati.
Le chiavi utilizzano RSA a 2048 bit e il certificato è firmato con SHA512.
Il certificato del sito è valido per 999 anni.
Il fatto che il certificato standard sia valido per così tanto tempo impedisce efficacemente che si verifichino problemi di connessione che non si possono classificare. Allo stesso tempo è ovviamente possibile che una volta che un certificato è stato compromesso sia di conseguenza aperto ad abusi. Quindi, se temi che un malintenzionato possa accedere alla CA o al certificato del sito firmato con essa, sostituisci sempre entrambi i certificati (CA e sito)!
Migrazione da versioni precedenti
Durante un aggiornamento di Checkmk, le due opzioni LIVESTATUS_TCP
e LIVESTATUS_TCP_TLS
non vengono mai modificate automaticamente. L'attivazione automatica di TLS potrebbe comportare l'impossibilità di interrogare i tuoi siti remoti.
Se finora hai usato Livestatus in chiaro e ora decidi di usare la crittografia, devi attivarla manualmente. Per farlo, arresta prima i siti interessati e poi attiva il TLS con il seguente comando:
OMD[mysite]:~$ omd config set LIVESTATUS_TCP_TLS on
Poiché i certificati sono stati generati automaticamente durante l'aggiornamento, il sito utilizza immediatamente la nuova funzione di crittografia. Per poter accedere al sito dal sito centrale, verifica che l'opzione Encryption sia impostata su Encrypt data using TLS nel menu alla voce Setup > General > Distributed Monitoring:

L'ultimo passo è quello descritto in precedenza; anche in questo caso devi prima contrassegnare la CA del sito remoto come attendibile.
2.4. Caratteristiche speciali di una configurazione distribuita
Un monitoraggio distribuito opera tramite Livestatus come un sistema singolo, ma ha un paio di caratteristiche speciali:
Accesso agli host monitorati
Tutti gli accessi a un host monitorato vengono effettuati dal sito a cui l'host è assegnato. Questo vale non solo per il monitoraggio vero e proprio, ma anche per la scoperta del servizio, la pagina di diagnostica, lenotifiche, i gestori di avvisi e tutto il resto. Questo punto è molto importante perché non si presume che il sito centrale abbia effettivamente accesso a questo host.
Specificare il sito nelle visualizzazioni
Alcune delle visualizzazioni standard sono raggruppate in base al sito da cui l'host sarà monitorato: questo vale ad es. per All hosts:

Il sito verrà mostrato anche nei dettagli dell'host o del servizio:

Queste informazioni sono generalmente disponibili per essere utilizzate in una colonna quandocrei le tue visualizzazioni. Esiste anche un filtro con il quale è possibile filtrare la visualizzazione degli host di un sito specifico:

Snap-in sullo stato del sito
Esiste uno snap-in Site status per la barra laterale che può essere aggiunto utilizzando . Questo visualizza lo stato dei singoli siti. Offre inoltre la possibilità di disabilitare e riabilitare temporaneamente un singolo sito cliccando sullo stato - o tutti i siti in una volta sola cliccando su Disable all o Enable all.

I siti disabilitati saranno contrassegnati dallo stato. Con questa funzione puoi anche disabilitare un sito che sta generando timeout, evitando così timeout superflui. Questa disabilitazione non è uguale alla disabilitazione della connessione Livestatus utilizzando la configurazione della connessione in Setup. In questo caso la "disabilitazione" riguarda solo l'utente dell'istanza attualmente connesso e ha una funzione puramente visuale. Facendo clic sul nome di un sito verrà visualizzata la visualizzazione di tutti i suoi host.
Snap-in di controllo master
In un monitoraggio distribuito, lo snap-in Master control ha un aspetto diverso:ogni sito ha il proprio switch globale:

Host del cluster Checkmk
Se effettui il monitoraggio con l'istanza Checkmk HA, i singoli nodi del cluster devono essere assegnati allo stesso sito del cluster stesso. Questo perché la determinazione dello stato dei servizi del cluster accede ai file di cache generati dal monitoraggio del nodo. Questi dati si trovano localmente nel rispettivo sito.
Dati piggyback (es. ESXi)
Alcuni plug-in di controllo utilizzano dati piggyback, ad esempio per assegnare i dati di monitoraggio recuperati da un host ESXi alle singole macchine virtuali. Per lo stesso motivo del monitoraggio distribuito, l'host piggyback e gli host dipendenti devono essere monitorati dallo stesso sito. Nel caso di ESXi, ciò significa che le macchine virtuali devono essere assegnate allo stesso sito in Checkmk del sistema ESXi da cui vengono raccolti i dati di monitoraggio. Questo può significare che è meglio interrogare direttamente il sistema host ESXi piuttosto che interrogare un vCenter globale. I dettagli a riguardo si trovano nella documentazione sul monitoraggio di ESXi.
Inventario hardware/software
L'inventario hardware/software di Checkmk funziona anche in ambienti distribuiti. A tal fine, i dati dell'inventario della directoryvar/check_mk/inventory
devono essere trasmessi regolarmente dai remoti al sito centrale. Per motivi di prestazioni, l'interfaccia utente accede sempre a questa directory a livello locale.
Nelle edizioni commerciali la sincronizzazione viene effettuata automaticamente su tutti i siti in connessione con il proxy Livestatus.
Se esegui le istanze Checkmk Raw in sistemi distribuiti, la directory deve essere regolarmente sincronizzata con il sito centrale con strumenti propri (es. rsync
).
Cambiare una password
Anche quando tutti i siti sono monitorati centralmente, è possibile e spesso opportuno effettuare un login sull'interfaccia di un singolo sito. Per questo motivo Checkmk fa in modo che la password dell'utente dell'istanza Checkmk sia sempre la stessa per tutti i siti.
Una modifica della password effettuata dall'amministratore avrà effetto automaticamente non appena sarà condivisa con tutti i siti con Activate Changes.
Una modifica apportata dall'utente stesso tramite la barra laterale delle sue impostazioni personali funziona in modo diverso. Questo non può essere autorizzato da Activate changes poiché l'utente non ha un'autorizzazione generale per questa funzione. In questo caso Checkmk condividerà automaticamente la password modificata su tutti i siti, direttamente dopo averla salvata.
Come tutti sappiamo, le reti non sono mai disponibili al 100%. Se un sito non è raggiungibile al momento della modifica della password, non riceverà la nuova password. Fino a quando l'amministratore non eseguirà con successo un Activate changes o, rispettivamente, fino alla successiva modifica della password, questo sito manterrà la vecchia password per l'utente. Un simbolo di stato informerà l'utente dello stato della condivisione della password nei singoli siti.

2.5. Tethering di siti esistenti
Come accennato in precedenza, i siti esistenti possono essere collegati a posteriori a un monitoraggio distribuito. Se sono state soddisfatte le condizioni preliminari descritte in precedenza (versioni di Checkmk compatibili), l'operazione sarà completata esattamente come per la creazione di un nuovo sito remoto. Condividi Livestatus con TCP, quindi aggiungi il sito a Setup > General > Distributed monitoring e il gioco è fatto!
La seconda fase - il passaggio a una configurazione centralizzata - è un po' più complicata: prima di integrare il sito nell'ambiente di configurazione distribuito come descritto sopra, devi sapere che così facendo l'intera configurazione locale del sito verrà sovrascritta!
Se desideri integrare gli host esistenti e, eventualmente, anche le regole, dovrai seguire tre passaggi:
Adeguare lo schema dei tag degli host
Copiare le directory (dell'host)
Modificare le caratteristiche della cartella madre
1. I tag degli host
È evidente che i tag degli host utilizzati nel sito remoto devono essere noti anche al sito centrale per poter essere trasferiti. Controllali prima della migrazione e aggiungi manualmente i tag mancanti al sito centrale. In questo caso è essenziale che i Tag-ID corrispondano: il titolo del tag è irrilevante.
2. Cartelle
Successivamente, sposta gli host e le regole nell'ambiente di configurazione del sito centrale. Questo funziona solo per gli host e le regole presenti nelle sottocartelle (cioè non nella cartella Main ). Gli host presenti nella cartella principale devono essere spostati nella sottocartella di un sito remoto tramite Setup > Hosts > Hosts.
La migrazione vera e propria può essere effettuata semplicemente copiando le cartelle appropriate. Ogni cartella nell'ambiente di configurazione corrisponde a una directory all'interno di ~/etc/check_mk/conf.d/wato/
. Queste possono essere copiate con uno strumento a tua scelta (es. scp
) dal sito collegato alla stessa posizione nel sito centrale. Se esiste già una directory con lo stesso nome, è sufficiente rinominarla. Tieni presente che gli utenti e i gruppi Linux sono utilizzati anche dal sito centrale.
Dopo la copia, gli host appariranno nella cartella Setupdel sito centrale, così come le regole che hai creato in queste cartelle. Anche le proprietà delle cartelle saranno incluse nella copia. Queste possono essere trovate nella directory nel file nascosto .wato
.
3. Modifica e salvataggio una tantum
Affinché gli attributi delle funzioni della cartella madre del sito centrale vengano ereditati correttamente, come ultimo passo dopo la migrazione è necessario aprire e salvare una volta le caratteristiche della cartella madre: in questo modo gli attributi dell'host padre saranno definiti con pertinenza.
2.6. Impostazioni globali specifiche del sito
Una configurazione centralizzata significa innanzitutto che tutti i siti hanno una configurazione comune e (a parte gli host) uguale. Cosa succede però quando i singoli siti richiedono impostazioni globali diverse? Un esempio potrebbe essere l'impostazione del CMC Maximum concurrent Checkmk checks. Potrebbe essere necessaria un'impostazione personalizzata per un sito particolarmente piccolo o particolarmente grande.
In questi casi esiste un'impostazione globale specifica per il sito, raggiungibile tramite il simbolo nel menu Setup > General > Distributed monitoring:

Tramite questo simbolo troverai una selezione di tutte le impostazioni globali, anche se qualsiasi cosa tu definisca qui sarà efficace solo per il sito scelto. Un valore che si discosta dallo standard sarà visivamente evidenziato e si applicherà solo a questo sito:

2.7. Console degli Eventi distribuita
La Console degli Eventi processa messaggi syslog, SNMP trap e altri tipi di eventi di natura asincrona.
Checkmk offre anche la possibilità di eseguire una Console degli Eventi distribuita. In questo modo ogni sito eseguirà la propria istanza di monitoraggio IT che catturerà gli eventi di tutti gli host monitorati dal sito. Gli eventi non saranno quindi inviati al sistema centrale, ma rimarranno nei siti e saranno recuperati solo a livello centrale. Questo avviene in modo simile a quello degli stati di monitoraggio attivi tramite Livestatus e funziona sia con Checkmk Raw che con le edizioni commerciali.
La conversione a una Console degli Eventi distribuita secondo il nuovo schema richiede i seguenti passaggi:
Nelle impostazioni della connessione, attiva l'opzione(Replicate Event Console configuration to this site).
Commuta la posizione del syslog e le destinazioni SNMP trap per gli host interessati nel sito remoto. Questa è l'operazione più laboriosa.
Se utilizzi il set di regole Check event state in Event Console, switcha nuovamente a Connect to the local Event Console.
Se utilizzi il set di regole Logwatch Event Console Forwarding, switcha allo stesso modo alla Console degli Eventi locale.
Nella Console degli Eventi Settings, switcha Access to event status via TCP a no access via TCP.
2.8. NagVis

Il programma open source NagVis visualizza i dati di stato del monitoraggio su mappe, diagrammi e altri grafici autoprodotti. NagVis è integrato in Checkmk e può essere utilizzato immediatamente. L'accesso è più semplice tramite l'elemento della barra laterale NagVis Maps. L'integrazione di NagVis in Checkmk è descritta in un articolo specifico.
NagVis supporta il monitoraggio distribuito tramite Livestatus più o meno allo stesso modo di Checkmk. I link ai singoli siti sono indicati come Backends. I back-end sono impostati automaticamente e correttamente da Checkmk in modo da poter iniziare immediatamente a generare grafici NagVis, anche nel monitoraggio distribuito.
Seleziona il back-end corretto per ogni oggetto che inserisci in un grafico, ovvero il sito Checkmk da cui l'oggetto deve essere monitorato. NagVis non è in grado di trovare automaticamente l'host o il servizio, soprattutto per motivi di prestazioni. Pertanto, se sposti gli host in un altro sito remoto, dovrai aggiornare i grafici NagVis di conseguenza.
I dettagli sui back-end sono disponibili nella documentazione qui:NagVis.
3. Connessioni instabili o lente
La panoramica sullo stato generale nell'interfaccia dell'utente consente un accesso sempre disponibile e affidabile a tutti i siti connessi. L'unico inconveniente è che una visualizzazione può essere visualizzata solo quando tutti i siti hanno risposto. Il processo prevede sempre che prima venga inviata una query Livestatus (ad esempio, "Elenca tutti i servizi il cui stato non è OK."). La visualizzazione può quindi essere effettuata solo quando l'ultimo sito ha risposto.
È fastidioso quando un sito non risponde affatto. Per tollerare brevi interruzioni (ad es. dovute al riavvio di un sito o alla perdita di un pacchetto TCP), la GUI attende un certo tempo prima che un sito venga dichiarato "OK" e poi continua a processare le risposte dei siti rimanenti. In questo modo la GUI rimane "sospesa". Il timeout è impostato di default a 10 secondi.
Se questo accade di tanto in tanto nella tua rete, dovresti installare gli Status host o (meglio ancora) il proxy Livestatus.
3.1. Gli host di stato
La configurazione degli host di stato è la procedura consigliata con Checkmk Raw per riconoscere in modo affidabile le connessioni difettose. L'idea è semplice: Il sito centrale monitora attivamente la connessione di ogni singolo sito remoto. La GUI sarà quindi a conoscenza dei siti irraggiungibili e potrà immediatamente escluderli e segnalarli come. I timeout saranno così ridotti al minimo.
Ecco come impostare uno stato dell'host per una connessione:
Aggiungi al sito centrale in monitoraggio l'host su cui è in esecuzione il sito remoto.
Inseriscilo come stato dell'host nella connessione al sito remoto:

A questo punto, una connessione fallita a un sito remoto può portare solo a un breve blocco della GUI, ovvero fino a quando il monitoraggio non la riconosce. Riducendo l'intervallo di prova dello stato dell'host dall'impostazione predefinita di sessanta secondi a, ad es. cinque secondi, puoi ridurre al minimo la durata di un blocco.
Se hai impostato uno stato dell'host, ci sono altri stati possibili per le connessioni:
Il computer su cui è in esecuzione il sito remoto non è raggiungibile per il monitoraggio perché un router è fuori uso (lo stato dell'host ha uno stato NON RAGGIUNGIBILE ). |
|
Lo stato dell'host che monitora la connessione al sistema remoto non è ancora stato verificato dal monitoraggio (ha ancora uno stato di SOSPESA ). |
|
Lo stato dell'host ha un valore non valido (questo non dovrebbe mai accadere). |
In tutti e tre i casi la connessione al sito sarà esclusa e si eviteranno così i timeout.
3.2. Connessioni persistenti
Con il box Use persistent connections puoi chiedere alla GUI di mantenere le connessioni Livestatus stabilite con i siti remoti sempre in uno stato "up" e di continuare a usarle per le interrogazioni. Soprattutto per le connessioni che hanno tempi di risposta più lunghi (es. intercontinentali), questo può rendere la GUI sensibilmente più reattiva.
Poiché l'interfaccia grafica di Apache è condivisa da più processi indipendenti, è necessaria una connessione per ogni processo Apache-Client in esecuzione contemporaneamente. Se hai molti utenti simultanei, assicurati che la configurazione preveda un numero sufficiente di connessioni Livestatus nel core Nagios remoto. Queste sono configurate nel file etc/mk-livestatus/nagios.cfg
. Il valore predefinito è di venti (num_client_threads=20
).
Per impostazione predefinita, Apache è configurato in Checkmk in modo da consentire fino a 128 connessioni utente simultanee. Questo viene configurato nella sezione seguente del file etc/apache/apache.conf
:
<IfModule prefork.c>
StartServers 1
MinSpareServers 1
MaxSpareServers 5
ServerLimit 128
MaxClients 128
MaxRequestsPerChild 4000
</IfModule>
Ciò significa che in condizioni di carico elevato possono avviarsi fino a 128 processi Apache che generano e mantengono fino a 128 connessioni Livestatus. Se non si imposta num_client_threads
in modo sufficientemente elevato, si possono verificare errori o tempi di risposta molto lenti nella GUI.
Per le connessioni con reti LAN o WAN veloci si consiglia di nonutilizzare connessioni persistenti.
3.3. Il proxy Livestatus
Il proxy Livestatus, nelle edizioni commerciali, è dotato di un sofisticato meccanismo di rilevamento delle connessioni morte e ottimizza le prestazioni delle connessioni con lunghi Round Trip Time. I vantaggi del proxy Livestatus sono:
Rilevamento molto veloce e proattivo dei siti che non rispondono
Cache locale delle query che forniscono dati statici
Connessioni TCP permanenti, che richiedono meno viaggi di andata e ritorno e di conseguenza consentono risposte molto più rapide da siti lontani (es. USA ⇄ Cina)
Controllo preciso del numero massimo di connessioni Livestatus richieste
Consente l'inventario hardware/software in ambienti distribuiti
Installazione
L'installazione del proxy Livestatus è molto semplice. È attivato per impostazione predefinita nelle edizioni commerciali, come si può vedere all'avvio di un sito:
OMD[central]:~$ omd start
Temporary filesystem already mounted
Starting mkeventd...OK
Starting liveproxyd...OK
Starting mknotifyd...OK
Starting rrdcached...OK
Starting cmc...OK
Starting apache...OK
Starting dcd...OK
Starting redis...OK
Starting stunnel...OK
Starting xinetd...OK
Initializing Crontab...OK
Seleziona l'impostazione "Use Livestatus Proxy-Daemon" per la connessione ai siti remoti invece di "Connetti via TCP":

I dettagli relativi a host e porta sono quelli di sempre. Non è necessario apportare alcuna modifica al sito remoto. In Number of channels to keep open inserisci il numero di connessioni TCP parallele che il proxy deve stabilire e mantenere verso il sito di destinazione.
Il pool di connessioni TCP è condiviso da tutte le richieste GUI. Il numero di connessioni limita il numero massimo di query che possono essere processate simultaneamente, limitando indirettamente il numero di utenti. In situazioni in cui tutti i canali sono riservati, questo non porterà immediatamente a un errore. Il GUI attende un determinato tempo per trovare un canale libero. La maggior parte delle interrogazioni richiede solo pochi millisecondi.
Se la GUI deve aspettare più a lungo di Timeout waiting for a free channel per un canale, verrà interrotta con un errore e l'utente riceverà un messaggio di errore. In questo caso, il numero di connessioni dovrebbe essere aumentato. Tieni comunque presente che sul sito remoto devono essere consentite un numero sufficiente di connessioni parallele in entrata: l'impostazione predefinita è 20. Questa impostazione si trova nelle opzioni globali alla voceMonitoring core > Maximum concurrent Livestatus connections.
Il sito Regular heartbeat fornisce un monitoraggio costantemente attivo delle connessioni direttamente a livello di protocollo. Nel processo il proxy invia regolarmente una semplice domanda Livestatus alla quale il sito remoto deve rispondere entro un tempo prestabilito (default: 2 secondi). Con questo metodo viene rilevata anche una situazione in cui il server di destinazione e la porta TCP sono effettivamente raggiungibili, ma il nucleo di monitoraggio non risponde più.
Se la risposta non arriva, tutte le connessioni vengono dichiarate "morte" e, dopo un tempo di "raffreddamento" (predefinito: 4 secondi), vengono ristabilite. Tutto questo avviene in modo proattivo, cioè senza che l'utente debba aprire una finestra GUI. In questo modo le interruzioni possono essere rilevate rapidamente e, tramite un recupero, le connessioni possono essere ristabilite immediatamente e, nel migliore dei casi, essere disponibili prima che l'utente si accorga dell'interruzione.
Il sito Caching garantisce che le query statiche debbano essere risposte una sola volta dal sito remoto e che da quel momento possano essere risposte direttamente e localmente, senza ritardi. Un esempio è l'elenco degli host monitorati richiesto da Quicksearch.
Diagnosi degli errori
Il proxy Livestatus ha un proprio file di log che si trova all'indirizzo var/log/liveproxyd.log
. In un sito remoto correttamente configurato con cinque canali (standard) avrà un aspetto simile a questo:
2021-12-01 15:58:30,624 [20] ----------------------------------------------------------
2021-12-01 15:58:30,627 [20] [cmk.liveproxyd] Livestatus Proxy-Daemon (2.0.0p15) starting...
2021-12-01 15:58:30,638 [20] [cmk.liveproxyd] Configured 1 sites
2021-12-01 15:58:36,690 [20] [cmk.liveproxyd.(3236831).Manager] Reload initiated. Checking if configuration changed.
2021-12-01 15:58:36,692 [20] [cmk.liveproxyd.(3236831).Manager] No configuration changes found, continuing.
2021-12-01 16:00:16,989 [20] [cmk.liveproxyd.(3236831).Manager] Reload initiated. Checking if configuration changed.
2021-12-01 16:00:16,993 [20] [cmk.liveproxyd.(3236831).Manager] Found configuration changes, triggering restart.
2021-12-01 16:00:17,000 [20] [cmk.liveproxyd.(3236831).Manager] Restart initiated. Terminating site processes...
2021-12-01 16:00:17,028 [20] [cmk.liveproxyd.(3236831).Manager] Restart master process
Il proxy Livestatus registra regolarmente il suo stato nel file var/log/liveproxyd.state
:
Current state:
[remote1]
State: ready
State dump time: 2021-12-01 15:01:15 (0:00:00)
Last reset: 2021-12-01 14:58:49 (0:02:25)
Site's last reload: 2021-12-01 14:26:00 (0:35:15)
Last failed connect: Never
Last failed error: None
Cached responses: 1
Channels:
9 - ready - client: none - since: 2021-12-01 15:01:00 (0:00:14)
10 - ready - client: none - since: 2021-12-01 15:01:10 (0:00:04)
11 - ready - client: none - since: 2021-12-01 15:00:55 (0:00:19)
12 - ready - client: none - since: 2021-12-01 15:01:05 (0:00:09)
13 - ready - client: none - since: 2021-12-01 15:00:50 (0:00:24)
Clients:
Heartbeat:
heartbeats received: 29
next in 0.2s
Inventory:
State: not running
Last update: 2021-12-01 14:58:50 (0:02:25)
Quando un sito è attualmente fermo, lo stato sarà simile a questo:
----------------------------------------------
Current state:
[remote1]
State: starting
State dump time: 2021-12-01 16:11:35 (0:00:00)
Last reset: 2021-12-01 16:11:29 (0:00:06)
Site's last reload: 2021-12-01 16:11:29 (0:00:06)
Last failed connect: 2021-12-01 16:11:33 (0:00:01)
Last failed error: [Errno 111] Connection refused
Cached responses: 0
Channels:
Clients:
Heartbeat:
heartbeats received: 0
next in -1.0s
Inventory:
State: not running
Last update: 2021-12-01 16:00:45 (0:10:50)
In questo caso lo stato è 'starting
'. Il proxy sta quindi tentando di stabilire delle connessioni. Non ci sono ancora canali. In questo stato le richieste al sito riceveranno una risposta di errore.
4. Livestatus a cascata
Come già accennato nell'introduzione, è possibile estendere il monitoraggio distribuito includendo istanze remota in Checkmk dedicate che visualizzano i dati di monitoraggio provenienti da siti remoti che di per sé non sono direttamente accessibili. L'unico prerequisito è che il sito centrale sia ovviamente accessibile. Tecnicamente, questo viene implementato tramite il proxy Livestatus. Il sito centrale riceve i dati dal sito remoto tramite Livestatus e agisce esso stesso come proxy, ossia può trasmettere i dati a siti terzi. Puoi estendere questa catena a tuo piacimento, ad esempio collegando un secondo sito di instanza-viewer tramite il primo.
Questo è pratico, ad esempio, in uno scenario come il seguente: il sito centrale supporta tre reti indipendenti -cliente1, cliente2 e cliente3, ed è gestito dall'operatore di rete1. Se la direzione dell'operatore di rete1 desidera vedere lo stato di monitoraggio dei siti dei clienti, questo potrebbe essere regolato tramite un accesso dal sito centrale. Per motivi tecnici e legali, tuttavia, il sito centrale potrebbe essere riservato esclusivamente al personale che ne è responsabile. Si può quindi evitare un accesso diretto configurando un sito viewer dedicato alla visualizzazione dei siti remoti. Il sito viewer mostra quindi gli host e i servizi dei siti connessi, ma la sua configurazione rimane completamente vuota.
La configurazione avviene nelle impostazioni di connessione del monitoraggio distribuito, prima sul sito centrale e poi sul sito dell'instanza-viewer (che in realtà non deve ancora esistere).
Sul sito centrale, apri le impostazioni di connessione per il sito remoto desiderato tramite Setup > General > Distributed monitoring. Alla voce Use Livestatus Proxy Daemon attiva l'opzione Allow access via TCP e inserisci una porta disponibile (in questo caso 6560
). In questo modo, il proxy Livestatus sul sito centrale si connette al sito remoto e apre una porta per le richieste del sito di instanza-viewer, che vengono poi inoltrate al sito remoto.

Ora crea un sito di instanza-viewer e apri nuovamente le impostazioni di connessione tramite Setup > General > Distributed monitoring. Nel pannello Basic settings inserisci - come sempre per le connessioni nel monitoraggio distribuito - il nome esatto del sito centrale come Site ID.

Nel pannello Status connection, inserisci il sito centrale come host e la porta libera assegnata manualmente (qui 6560
).

Non appena la connessione viene stabilita, nelle visualizzazioni di monitoraggio dell'instanza-viewer vedrai gli host e i servizi desiderati sul sito remoto.
Se vuoi procedere a cascata, devi anche consentire l'accesso TCP al proxy Livestatus sull'istanza-viewer, come fatto in precedenza sul sito centrale, questa volta con una porta libera diversa.
5. Livedump e CMCDump
5.1. Motivazione
Il concetto di monitoraggio distribuito con Checkmk descritto finora è una soluzione valida e semplice nella maggior parte dei casi. Tuttavia, richiede l'accesso alla rete dalla sede centrale alle istanze remote. Ci sono situazioni in cui l'accesso non è possibile o non è desiderato, ad esempio perché:
I siti remoti si trovano nella rete del tuo cliente e non hai accesso.
I siti remoti si trovano in un'area di sicurezza in cui l'accesso è severamente vietato.
I siti remoti non dispongono di una connessione di rete permanente o di indirizzi IP fissi e metodi come il DNS dinamico non sono possibili.
Il monitoraggio distribuito con Livedump o, rispettivamente, con CMCDump ha un approccio molto diverso. In primo luogo, i siti remoti sono collegati in modo da operare in modo completamente indipendente dal sito centrale e sono amministrati in modo decentralizzato. Si rinuncia a un ambiente di configurazione distribuito.
Tutti gli host e i servizi dei siti remoti saranno replicati come copie nel sito centrale. Livedump/CMCDump può aiutare generando una copia della configurazione dei siti remoti che può essere caricata nel sito centrale.
Durante il monitoraggio, ogni sito remoto scriverà una copia dello stato attuale su un file a intervalli predeterminati (es. ogni minuto), che verrà trasmesso al sito centrale con un metodo definito dall'utente e salvato come aggiornamento dello stato. Non è stato previsto o specificato alcun protocollo particolare per il trasferimento dei dati. Si possono utilizzare tutti i protocolli di trasferimento che possono essere automatizzati. Non è essenziale utilizzare scp
- anche un trasferimento via e-mail è concepibile!
Questa configurazione si differenzia da un "normale" monitoraggio distribuito per i seguenti aspetti:
L'attualizzazione degli stati e dei dati sulle prestazioni nel sito centrale sarà ritardata.
Il calcolo della disponibilità sul sito centrale darà risultati minimamente diversi da quelli ottenuti sul sito remoto.
I cambiamenti di stato che si verificano più rapidamente dell'intervallo di attualizzazione saranno invisibili al sito centrale.
Se un sito remoto è "morto", gli stati diventeranno obsoleti sul sito centrale - i servizi saranno "in stallo", ma comunque ancora visibili. I dati sulle prestazioni e sulla disponibilità per questo periodo di tempo saranno "persi" (ma saranno ancora disponibili sul sito remoto).
I comandi del sito centrale come Schedule downtimes e Acknowledge problems non possono essere trasmessi al sito remoto.
Il sito centrale non può mai accedere ai siti remoti.
L'accesso ai dettagli dei file di log da parte di logwatch è impossibile.
La Console degli Eventi non sarà supportata da Livedump/CMCDump.
Poiché i brevi cambiamenti di stato - a seconda del periodo di notifica selezionato sul sito centrale - potrebbero non essere visibili, una notifica attraverso il sito centrale non è l'ideale. Tuttavia, se il sito centrale viene utilizzato come sito dipura visualizzazione- ad esempio come panoramica centrale di tutti i clienti - questo metodo ha sicuramente i suoi vantaggi.
Tra l'altro, Livedump/CMCDump può essere utilizzato contemporaneamenteal monitoraggio distribuito tramite Livestatus senza problemi. Alcuni siti sono semplicemente connessi direttamente tramite Livestatus, altri utilizzano Livedump. Livedump può anche essere aggiunto a uno dei siti remoti di Livestatus.
5.2. Installazione di Livedump
Se stai installando Checkmk Raw (o le edizioni commerciali con core Nagios), utilizza lo strumento livedump
. Il nome deriva da Livestatus e status dump.livedump
si trova direttamente nel percorso di ricerca ed è quindi disponibile come comando.
Facciamo le seguenti ipotesi:
il sito remoto è stato completamente configurato e sta monitorando attivamente host e servizi,
il sito centrale è stato avviato ed è in funzione,
almeno un host è monitorato localmente sul sito centrale (perché la centrale monitora se stessa).
Trasferimento della configurazione
Per prima cosa, sul sito remoto, crea una copia delle configurazioni dei suoi host e servizi in formato Nagios-configuration. Inoltre, reindirizza l'output di livedump -TC
in un file:
OMD[remote1]:~$ livedump -TC > config-remote1.cfg
L'inizio del file sarà simile a questo:
define host {
name livedump-host
use check_mk_default
register 0
active_checks_enabled 0
passive_checks_enabled 1
}
define service {
name livedump-service
register 0
active_checks_enabled 0
passive_checks_enabled 1
check_period 0x0
}
Trasmetti il file al sito centrale (ad es. con scp
) e salvalo nella directory ~/etc/nagios/conf.d/
- qui Nagios si aspetta di trovare i dati di configurazione di host e servizi. Scegli un nome di file che finisca con.cfg
, ad esempio ~/etc/nagios/conf.d/config-remote1.cfg
. Se è possibile un accesso SSH dal sito remoto a quello centrale, si può fare, ad esempio, come segue:
OMD[remote1]:~$ scp config-remote1.cfg central@myserver.mydomain:etc/nagios/conf.d/
central@myserver.mydomain's password:
config-remote1.cfg 100% 8071 7.9KB/s 00:00
Ora effettua il log-in al sito centrale e attiva le modifiche:
OMD[central]:~$ cmk -R
Generating configuration for core (type nagios)...OK
Validating Nagios configuration...OK
Precompiling host checks...OK
Restarting monitoring core...OK
Ora tutti gli host e i servizi del sito remoto dovrebbero apparire nel sito centrale, inizialmente con lo stato IN SOSP:

Nota:
Con l'opzione
-T
inlivedump
vengono create definizioni di modelli in Livedump da cui attingere la configurazione. Senza queste definizioni Nagios non può essere avviato. Tuttavia, può essere presente solo uno di questi. Se importi una configurazione da un altro sito remoto, non deve utilizzare l'opzione-T
!Un dump della configurazione è possibile anche su un Checkmk Micro Core (CMC), la cui importazione richiede Nagios. Se il CMC è in esecuzione sul sito centrale, usa CMCDump.
La copia e il trasferimento della configurazione devono essere ripetuti per ogni modifica agli host o ai servizi del sito remoto.
Trasferimento dello stato
Una volta che gli host sono visibili nel sito centrale, dovremo impostare una trasmissione (regolare) dello stato di monitoraggio dei remoti. Crea nuovamente un file con livedump
, ma questa volta senza opzioni secondarie:
OMD[remote1]:~$ livedump > state
Questo file contiene gli stati di tutti gli host e i servizi in un formato che Nagios può leggere direttamente dai risultati dei controlli. L'inizio del file è simile a questo:
host_name=myhost1900
check_type=1
check_options=0
reschedule_check
latency=0.13
start_time=1615521257.2
finish_time=16175521257.2
return_code=0
output=OK - 10.1.5.44: rta 0.066ms, lost 0%|rta=0.066ms;200.000;500.000;0; pl=0%;80;100;; rtmax=0.242ms;;;; rtmin=0.017ms;;;;
Copia questo file sul sito centrale nella directory ~/tmp/nagios/checkresults
.Importante: il nome di questo file deve iniziare con c
ed essere lungo sette caratteri. Con scp
avrà un aspetto simile a questo:
OMD[remote1]:~$ scp state central@mycentral.mydomain:tmp/nagios/checkresults/caabbcc
central@mycentral.mydomain's password:
state 100% 12KB 12.5KB/s 00:00
Infine, crea un file vuoto sul sito centrale con lo stesso nome e l'estensione .ok
. In questo modo Nagios saprà che il file di stato è stato trasferito completamente e può essere letto:
OMD[central]:~$ touch tmp/nagios/checkresults/caabbcc.ok
Lo stato degli host/servizi dei telecomandi sarà ora immediatamente aggiornato sul sito centrale:

D'ora in poi la trasmissione dello stato deve avvenire regolarmente. Purtroppo Livedump non supporta questa operazione e dovrai quindi guardare tu stesso. Lo script livedump-ssh-recv
si trova in ~/share/check_mk/doc/treasures/livedump
, che puoi utilizzare per ricevere gli aggiornamenti di Livedump (compresi quelli della configurazione) sul sito centrale tramite SSH. Per i dettagli, vedi i commenti nello script stesso.
Il dump della configurazione e dello stato può anche essere limitato utilizzando i filtri di Livestatus. Ad esempio, puoi limitare gli host ai membri del gruppo di host mygroup
:
OMD[remote1]:~$: livedump -H "Filter: host_groups >= mygroup" > state
Ulteriori informazioni su Livedump sono disponibili nel file README
nella directory ~/share/doc/check_mk/treasures/livedump
.
5.3. Implementare CMCDump
CMCDump è per Checkmk Micro Core quello che Livedumpè per Nagios - ed è quindi lo strumento preferito per le edizioni commerciali. A differenza di Livedump, CMCDump può replicare lo stato completo dell'host e dei servizi (Nagios non ha le interfacce necessarie per questo compito).
Per fare un confronto: Livedump trasferisce i seguenti dati:
Gli stati attuali: IN SOSPESA, OK, WARN, CRIT, SCONOSCIUTO, UP, DOWN o NON RAGGIUNGIBILE.
L'output dei plug-in di controllo
I dati sulle prestazioni
CMCDump sincronizza inoltre:
L'output lungo del plug-in
Se l'oggetto sta attualmente irregolando
Le marche temporali dell'ultima esecuzione del controllo e dell'ultimo cambiamento di stato
La durata dell'esecuzione del controllo
La latenza dell'esecuzione del controllo
Il numero di sequenza del tentativo di controllo corrente e se lo stato corrente è "hard" o "soft".
conferma, se presente
Se l'oggetto è attualmente in manutenzione programmata.
Quando importa lo stato, il CMC non si limita a simulare l'esecuzione di un controllo, ma, utilizzando un'interfaccia di stato progettata per questo compito, trasmette uno stato accurato. Tra le altre cose, questo significa che in qualsiasi momento il centro operativo può vedere se i problemi sono stati confermati o se sono stati inseriti tempi di manutenzione.
L'installazione è quasi identica a quella di Livedump, ma è più semplice perché non è necessario preoccuparsi di eventuali modelli duplicati o simili.
La copia della configurazione viene fatta con cmcdump -C
. Memorizza questo file sul sito centrale in etc/check_mk/conf.d/
. È necessario utilizzare l'estensione del file .mk
:
OMD[remote1]:~$ cmcdump -C > config.mk
OMD[remote1]:~$ scp config.mk central@mycentral.mydomain:etc/check_mk/conf.d/remote1.mk
Attiva la configurazione sul sito centrale:
OMD[central]:~$ cmk -O
Come nel caso di Livedump, gli host e i servizi appariranno ora sul sito centrale nello statoIN SOSP. Il simbolo indica che si tratta di un oggetto ombra. In questo modo è possibile distinguerlo da un oggetto monitorato direttamente sul sito centrale o su un sito remoto "normale":

La generazione regolare dello stato si ottiene con cmcdump
senza argomenti aggiuntivi:
OMD[remote1]:~$ cmcdump > state
OMD[remote1]:~$ scp state central@mycentral.mydomain:tmp/state_remote1
Per importare lo stato nel sito centrale, il contenuto del file deve essere scritto nell'UNIX-Sockettmp/run/live
con l'aiuto dello strumento unixcat
.
OMD[central]:~$ unixcat tmp/run/live < tmp/state_remote1
Se disponi di una connessione dal sito remoto a quello centrale tramite SSH senza password, tutti e tre i comandi possono essere combinati in un unico comando, senza creare nemmeno un file temporaneo:
OMD[remote1]:~$ cmcdump | ssh central@mycentral.mydomain "unixcat tmp/run/live"
È davvero così semplice! Ma, come già accennato, ssh
/scp
non è l'unico metodo per trasferire i file: una configurazione o uno stato possono essere trasferiti altrettanto bene utilizzando l'e-mail o un altro protocollo desiderato.
6. Notifiche in ambienti distribuiti
6.1. Centralizzato o decentralizzato?
In un ambiente distribuito ci si chiede da quale sito debbano essere inviate le notifiche (es. e-mail): dai singoli telecomandi o dal sito centrale. Ci sono argomenti a favore di entrambe le procedure.
Argomenti a favore dell'invio dai telecomandi:
Più semplice da configurare
La notifica locale è ancora possibile se il link al sito centrale non è disponibile.
Funziona anche con Checkmk Raw
Argomenti a favore dell'invio dal sito centrale:
Le notifiche possono essere ulteriormente processate da una postazione centrale (es. essere inoltrate a un sistema di ticket)
I siti remoti non necessitano di alcuna impostazione per l'invio di e-mail o SMS.
L'invio di un SMS via hardware è necessario solo una volta, sul sito centrale.
6.2. Notifica decentralizzata
Non sono necessari passaggi particolari per una notifica decentralizzata, poiché questa è l'impostazione standard. Ogni notifica generata in un sito remoto passa attraverso la catena di regole di notifica. Se si implementa un ambiente di configurazione distribuito, queste regole sono le stesse in tutti i siti. Le notifiche risultanti da queste regole saranno consegnate come di consueto, per le quali gli script di notifica appropriati saranno stati eseguiti localmente.
È sufficiente assicurarsi che il servizio appropriato sia stato installato correttamente sui siti, ad esempio che sia stato definito uno smarthost per le e-mail, in altre parole la stessa procedura che si segue per la configurazione di una singola istanza Checkmk.
6.3. Notifica centralizzata
Fondamenti
Le edizioni commerciali prevedono un meccanismo integrato per le notifiche centralizzate che possono essere attivate individualmente per ogni sito remoto. Tali siti remoti inviano tutte le notifiche al sito centrale per un'ulteriore elaborazione. La notifica centralizzata è quindi indipendente dal fatto che il monitoraggio distribuito sia stato impostato nel modo standard, con CMCDump o utilizzando una combinazione di questi processi. Tecnicamente parlando, il server di notifica centrale non deve nemmeno essere "centrale". Questo compito può essere svolto da qualsiasi istanza Checkmk.
Se un sito remoto è stato impostato su "inoltro", tutte le notifiche verranno inoltrate direttamente al sito centrale come se provenissero dal core, ovvero in formato grezzo. Una volta arrivate, verranno valutate le regole di notifica che decidono chi deve essere notificato e come. Gli script di notifica necessari verranno invocati sul sito centrale.
Impostazione delle connessioni TCP
Gli spooler di notifica dei siti remoti e centrali comunicano tra loro tramite TCP. Le notifiche vengono inviate dal sito remoto a quello centrale. La centrale conferma ai remoti che le notifiche sono state ricevute, evitando così che le notifiche vadano perse anche in caso di interruzione della connessione TCP.
Esistono due alternative per la creazione di una connessione TCP:
Una connessione TCP è configurata dalla centrale al sito remoto. In questo caso il remoto è il server TCP.
Una connessione TCP è configurata dal sito remoto a quello centrale. In questo caso il server TCP è il sito centrale.
Di conseguenza, non c'è nulla che impedisca di inoltrare le notifiche se per motivi di rete è possibile stabilire connessioni solo in una direzione specifica. Le connessioni TCP sono supervisionate dallo spooler di notifica con un segnale heartbeat e vengono immediatamente ristabilite se necessario, non solo in caso di notifica.
Poiché il sito remoto e quello centrale richiedono impostazioni globali diverse, è necessario effettuareimpostazioni specifiche per tutti i telecomandi. La configurazione del sito centrale viene eseguita utilizzando le normali impostazioni globali. Nota: queste impostazioni verranno ereditate automaticamente da tutti i telecomandi per i quali non sono state definite impostazioni specifiche.
Vediamo prima un esempio in cui il sito centrale stabilisce le connessioni TCP con i siti remoti.
Passo 1: sul sito remoto, modifica l'impostazione globale specifica del sitoNotifications > Notification Spooler Configuration e attivaAccept incoming TCP connections. La porta TCP 6555 sarà consigliata per le connessioni in entrata. Se non ci sono obiezioni, adotta queste impostazioni.

Fase 2: Ora, allo stesso modo, nel sottomenu Notification Spooling solo sul sito remoto, seleziona l'opzioneForward to remote site by notification spooler.

Fase 3: ora, sul sito centrale, cioè nelle normali impostazioni globali, configura la connessione al sito remoto (e poi ad altri telecomandi se necessario):

Fase 4: imposta l'impostazione globale Notification Spooling suAsynchronous local delivery by notification spooler, in modo che anche le comunicazioni del sito centrale vengano processate attraverso lo stesso spooler centrale.

Passo 5: attiva le modifiche.
Stabilire connessioni da un sito remoto
Se la connessione TCP deve essere stabilita da un sito remoto, la procedura è identica e differisce solo dalla descrizione precedente per il semplice scambio dei ruoli di sito centrale e remoto.
È possibile anche una combinazione delle due procedure. In questo caso, il sito centrale deve essere installato in modo da ascoltare le connessioni in entrata e connettersi ai siti remoti. Tuttavia, in ogni relazione centrale/remotasolo uno dei due è autorizzato a stabilire la connessione!
Test e diagnosi
Lo spooler di notifica registra nel file var/log/mknotifyd.log
. Nella configurazione dello spooler è possibile aumentare il livello di log in modo da ricevere un maggior numero di messaggi. Con un livello di log standard si dovrebbe vedere qualcosa di simile sul sito centrale:
2021-11-17 07:11:40,023 [20] [cmk.mknotifyd] -----------------------------------------------------------------
2021-11-17 07:11:40,023 [20] [cmk.mknotifyd] Check_MK Notification Spooler version 2.0.0p15 starting
2021-11-17 07:11:40,024 [20] [cmk.mknotifyd] Log verbosity: 0
2021-11-17 07:11:40,025 [20] [cmk.mknotifyd] Daemonized with PID 31081.
2021-11-17 07:11:40,029 [20] [cmk.mknotifyd] Connection to 10.1.8.44 port 6555 in progress
2021-11-17 07:11:40,029 [20] [cmk.mknotifyd] Successfully connected to 10.1.8.44:6555
In ogni momento il file var/log/mknotifyd.state
contiene lo stato attuale dello spooler e di tutte le sue connessioni:
Connection: 10.1.8.44:6555
Type: outgoing
State: established
Status Message: Successfully connected to 10.1.8.44:6555
Since: 1637129500 (2021-11-17 07:11:40, 140 sec ago)
Connect Time: 0.002 sec
Una versione dello stesso file è presente anche sul sito remoto, dove la connessione avrà un aspetto simile a questo:
Connection: 10.22.4.12:56546
Type: incoming
State: established
Since: 1637129500 (2021-11-17 07:11:40, 330 sec ago)
Per testare, seleziona un qualsiasi servizio remoto monitorato e impostalo manualmente su CRIT con il comando Fake check results.
Ora sul sito centrale dovrebbe apparire una notifica in arrivo nel file di log delle notifiche (notify.log
):
2021-11-17 07:59:36,231 ----------------------------------------------------------------------
2021-11-17 07:59:36,232 [20] [cmk.base.notify] Got spool file 307ad477 (myremotehost123;Check_MK) from remote host for local delivery.
Lo stesso evento apparirà come segue sul sito remoto:
2021-11-17 07:59:28,161 [20] [cmk.base.notify] ----------------------------------------------------------------------
2021-11-17 07:59:28,161 [20] [cmk.base.notify] Got raw notification (myremotehost123;Check_MK) context with 71 variables
2021-11-17 07:59:28,162 [20] [cmk.base.notify] Creating spoolfile: /omd/sites/remote1/var/check_mk/notify/spool/307ad477-b534-4cc0-99c9-db1c517b31f
Nelle impostazioni globali puoi cambiare sia il normale file di log per le notifiche (notify.log
) che il file di log dello spooler di notifica con un livello di log più alto.
Monitoraggio dello spooling
Dopo aver configurato tutto come descritto, noterai che sul sito centrale, e rispettivamente sui remoti, sarà presente un nuovo servizio che dovrà essere assolutamente monitorato. Ogni connessione sarà quindi monitorata due volte: una volta dal sito centrale e una volta dal sito remoto:

7. Un sito centrale e i suoi siti remoti utilizzano versioni diverse
Come regola generale, le versioni di tutti i siti remoti e del sito centrale devono corrispondere. Le eccezioni si applicano solo durante l'esecuzione degli aggiornamenti. In questo caso, bisogna distinguere tra le seguenti situazioni:
7.1. Livelli di patch diversi (ma stessa versione principale)
In genere i livelli di patch (ad es. p11) possono differire senza problemi. In rari casi, tuttavia, anche questi possono essere incompatibili tra loro, quindi in una situazione del genere devi mantenere esattamente lo stesso livello di versione (ad es. 2.0.0p11) su tutti i siti per permettere ai siti di lavorare insieme senza errori. Per questo motivo, annota sempre le modifiche incompatibili di ogni versione patch nei Werk.
Come regola generale - le eccezioni sono possibili e sono indicate nei Werk - aggiorna prima i siti remoti e per ultimo il sito centrale.
7.2. Versioni principali diverse
Per un'esecuzione senza problemi degli aggiornamenti principali (ad esempio da 2.1.0 a 2.2.0) in ambienti distribuiti di grandi dimensioni, a partire dalla versione 2.0.0 Checkmk consente di eseguire operazioni miste in cui i siti centrali e remoti possono differire di una versione principale. Quando esegui un aggiornamento, assicurati di aggiornare prima i siti remoti e poi di aggiornare il sito centrale solo quando tutti i siti remoti sono stati aggiornati alla versione superiore.
Anche in questo caso, assicurati di controllare le note di aggiornamento di Werk e della versione prima di iniziare l'aggiornamento! Per garantire un funzionamento misto senza problemi, sul sito centrale è sempre necessario un livello di patch specifico (prerequisito) della versione precedente.
Una caratteristica particolare degli ambienti misti è la gestione centralizzata dei pacchetti di estensione, che ora possono essere conservati in varianti sia per la versione precedente che per quella più recente di Checkmk. I dettagli a riguardo sono spiegati nell'articolo sulla gestione degli MKP.
8. File e directory
8.1. File di configurazione
Percorso | Descrizione |
---|---|
|
Qui Checkmk memorizza la configurazione per le connessioni ai singoli siti. Se l'interfaccia si blocca a causa di un errore nella configurazione, per cui diventa inutilizzabile, puoi modificare la voce che la disturba direttamente nel file. Tuttavia, se il proxy Livestatus viene attivato, sarà necessario modificare e salvare almeno una connessione, poiché solo con questa azione verrà generata una configurazione adatta a questo daemon. |
|
Configurazione per il proxy Livestatus. Questo file verrà generato di pertinenza da Checkmk ad ogni modifica della configurazione di un monitoraggio distribuito. |
|
Configurazione dello spooler di notifica. Questo file viene generato da Checkmk quando salva le impostazioni globali. |
|
Viene creato sui siti remoti per garantire che monitorino solo i propri host. |
|
Luogo di archiviazione per i file di configurazione di Nagios creati dal cliente con host e servizi. Questi sono necessari per l'utilizzo di Livedump sul sito centrale. |
|
La configurazione di Livestatus per l'utilizzo di Nagios come core. Qui puoi configurare il numero massimo di connessioni simultanee consentite. |
|
La configurazione degli host e delle regole per Checkmk. Memorizza qui i file di configurazione generati da CMCDump. Solo la sottodirectory |
|
Per i servizi trovati dalla scoperta del servizio. Questi sono sempre memorizzati localmente sul sito remoto. |
|
Posizione del Database Round Robin (RRD) per l'archiviazione dei dati sulle prestazioni quando si utilizza il formato Checkmk-RRD (predefinito nelle edizioni commerciali). |
|
Ubicazione del database Round-Robin con il formato PNP4Nagios (Checkmk Raw). |
|
File di log per i proxy Livestatus. |
|
Lo stato attuale dei proxy Livestatus in un modulo leggibile. Questo file viene aggiornato ogni 5 secondi. |
|
File di log per il file system di notifica di Checkmk. |
|
File di log per lo spooler di notifica. |
|
Lo stato attuale dello spooler di notifica in un modulo leggibile. Questo file viene aggiornato ogni 20 secondi. |