Checkmk
to checkmk.com
Important

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

Affinché un sistema di monitoraggio riceva da un endpoint altre informazioni oltre a quelle semplicemente accessibili, è necessario l'aiuto del sistema di destinazione. Ad esempio, come può Checkmk sapere quanto è pieno il volume di archiviazione di un server senza che questo sistema fornisca in qualche modo le informazioni? Il componente che fornisce queste informazioni è sempre un software attivo, ovvero un agente di monitoraggio, solitamente chiamato semplicemente agente.Un agente raccoglie i dati rilevanti per il monitoraggio da un host a intervalli specifici e li trasmette al server di monitoraggio!

Per i server e le workstation, Checkmk fornisce i propri agenti, noti come agenti Checkmk. Gli agenti Checkmk sono disponibili per un'ampia varietà di sistemi operativi, da quelli più comuni come Windows e Linux a quelli esotici come OpenVMS. Gli agenti sono passivi in modalità pull e sono in ascolto sulla porta TCP 6556. Solo quando ricevono una query del server Checkmk si attivano e rispondono con i dati richiesti. In modalità push, invece, gli agenti Checkmk inviano periodicamente i dati di monitoraggio al server Checkmk in modo autonomo.

Tutti gli agenti Checkmk possono essere trovati tramite l'interfaccia web nel menu Setup. Da lì puoi scaricare gli agenti e installarli sul sistema di destinazione. Puoi imparare come installare, configurare ed estendere gli agenti Checkmk in questo articolo.

Tuttavia, ci sono situazioni in cui non è necessario installare un agente di monitoraggio, poiché uno che può essere utilizzato è già presente. L'esempio migliore è SNMP: tutti i dispositivi di rete e le appliance gestibili hanno un agente SNMP integrato. Checkmk accede a questo agente SNMP e recupera i dettagli sullo stato del sistema con query attive (GET).

Alcuni sistemi, tuttavia, non consentono né l'installazione di un agente né supportano SNMP in un modulo utilizzabile, ma offrono interfacce di programmazione dell'applicazione ( API) per la gestione, basate su Telnet, SSH o HTTP/XML. Checkmk interroga tali interfacce tramite questi cosiddetti agenti speciali in esecuzione sul server Checkmk.

Infine, il monitoraggio dei servizi di rete come HTTP, SMTP o IMAP è un caso a sé stante. Nel caso di un servizio di rete, la procedura più ovvia è quella di interrogare e monitorare il servizio attraverso la rete. Per questo Checkmk a volte utilizza dei plug-in propri, a volte già esistenti. Questi sono chiamati anche controlli attivi. Ad esempio, check_http è molto popolare per interrogare i siti web. Ma anche in questo caso di solito viene utilizzato un agente aggiuntivo che fornisce dati supplementari sul server per il monitoraggio.

L'immagine seguente mostra i vari modi in cui Checkmk può accedere ai sistemi da monitorare:

Illustration of the ways Checkmk accesses monitored systems.

Finora abbiamo parlato solo del monitoraggio attivo, la disciplina di punta di Checkmk. Esiste anche il metodo inverso, ovvero quello in cui è il sistema di destinazione stesso a inviare messaggi al monitoraggio, ad esempio tramite syslog o SNMP trap. Per queste funzioni Checkmk dispone della Console degli Eventi, descritta in un apposito articolo.

2. L'agente Checkmk

Per il monitoraggio di un server o di una workstation, è necessario un piccolo programma che deve essere installato sull'host: l'agente Checkmk.

Questo agente è un semplice script di shell, minimalista, sicuro e facilmente estendibile. Nella versione di Checkmk 2.1.0, a questo script è stato aggiunto un nuovo componente, l'Agent Controller. L'Agent Controller è collegato a monte dello script agente, interroga lo script agente e comunica con il server Checkmk al suo posto. Per farlo, il controller si registra con l'Agent Receiver, che gira sul server Checkmk.

Illustration of the communication between an agent and a site.
Interazione dei componenti software

Questa architettura è identica nell'agente Linux e nell'agente Windows e solo l'implementazione tecnica è specifica per ogni sistema operativo.

Lo script dell'agente è responsabile della raccolta dei dati di monitoraggio e della loro messa a disposizione dell'Agent Controller. Questo script è..:

  • minimalista, perché utilizza una quantità minima di RAM, CPU, spazio su disco e risorse di rete.

  • sicuro, perché non consente alcun accesso dalla rete.

  • facilmente estendibile, perché puoi scrivere plug-in dell'agente in qualsiasi linguaggio di programmazione o scripting e farli eseguire dallo script agente.

L'Agent Controller è il componente dell'agente responsabile del trasporto dei dati raccolti dall'agent script. In modalità pull, è in ascolto sulla porta TCP 6556 per le connessioni in arrivo dall'istanza Checkmk e interroga l'agent script.

L'architettura software dell'agente con l'Agent Controller è il prerequisito per offrire nuove funzioni, che non si sarebbero potute ottenere con il design minimalista dello script agente, come la crittografia della comunicazione tramite Transport Layer Security (TLS), la compressione dei dati e l'annullamento della direzione della comunicazione dalla modalità pull alla modalità push.

Nella modalità pull, il server Checkmk avvia la comunicazione e richiede i dati all'agente, mentre nella modalità push l'iniziativa proviene dall'agente. La modalità push è necessaria per una configurazione basata sul cloud e in alcune reti compartimentate. In entrambi i casi, il server Checkmk non può accedere alla rete in cui si trovano gli host da monitorare. L'agente trasmette quindi automaticamente i dati al server Checkmk su base regolare.

L'Agent Receiver è il componente del server Checkmk che funge da endpoint generale per la comunicazione dell'Agent Controller, ad es. per registrare la connessione e ricevere i dati inviati dall'Agent Controller in modalità push. Nella modalità push, i dati ricevuti vengono archiviati dall'Agent Receiver nel file system e quindi messi a disposizione degli agenti Checkmk Fetcher, che nelle edizioni commerciali sono i fetcher di Checkmk. Al contrario, nella modalità pull, lo scambio di dati avviene direttamente tra i fetcher del sito e l'Agent Controller senza bisogno di un Agent Receiver.

La crittografia TLS e la compressione dei dati avvengono tramite l'Agent Controller e l'Agent Receiver, cioè il server Checkmk e l'agente devono avere almeno la versione 2.1.0. Il primo passo dopo l'installazione è la registrazione dell'Agent Controller con l'Agent Receiver del sito Checkmk, che stabilisce una relazione di fiducia tra questi due componenti. La crittografia TLS della comunicazione sarà configurata durante questa registrazione. Per la modalità push, il server Checkmk e l'agente devono avere almeno la versione 2.2.0.

La seguente tabella riassume le varie funzioni dell'agente Checkmk e mostra in quali edizioni di Checkmk sono disponibili:

Funzione Descrizione Disponibilità

Registrazione

Viene stabilita la relazione di fiducia tra l'Agent Controller dell'host e l'Agent Receiver dell'istanza Checkmk.

In tutte le edizioni a partire dalla versione 2.1.0

Crittografia TLS

Dopo l'avvenuta registrazione, i dati vengono scambiati in modulo criptato utilizzando il protocollo TLS.

Tutte le edizioni a partire dalla versione 2.1.0

Compressione

I dati vengono scambiati in modulo compresso.

Tutte le edizioni a partire dalla versione 2.1.0

Modalità pull

L'agente Checkmk invia i dati su richiesta dell'istanza Checkmk.

Tutte le edizioni

Modalità push

L'agente invia i dati al sito Checkmk in modo autonomo.

Checkmk Cloud a partire dalla versione 2.2.0, Checkmk MSP a partire da 2.3.0

Configurazione individuale degli agenti

Con Agent bakery, gli agenti possono essere configurati individualmente per singoli o gruppi di host e i pacchetti di agenti possono essere creati per l'installazione.

Edizioni commerciali

Aggiornamento automatico dell'agente

Il pacchetto dell'Agent bakery viene installato manualmente o tramite script e da quel momento in poi viene aggiornato automaticamente.

Edizioni commerciali

Creazione automatica di host

La registrazione dell'agente Checkmk e la creazione dell'host avvengono automaticamente.

Checkmk Cloud a partire dalla versione 2.2.0, Checkmk MSP a partire dalla versione . 2.3.0

3. Scaricare l'agente dalla pagina di download

Attualmente il progetto Checkmk gestisce agenti per undici diverse famiglie di operatori. Tutti questi agenti sono componenti di Checkmk e sono disponibili per il download tramite l'interfaccia web del server Checkmk. Si accede a questi agenti tramite Setup > Agents.

In Checkmk Raw, le voci di menu Linux, Windows e Other operating systems ti porteranno direttamente alle pagine di download dove troverai gli agenti preconfigurati e i plug-in dell'agente, nell'esempio seguente alla pagina di download di Linux, Solaris, AIX:

List of Linux agents for download in Checkmk Raw.

Nelle edizioni commerciali, la voce di menu Windows, Linux, Solaris, AIX ti porta a una pagina che ti dà anche accesso all'agent bakery. Da questa pagina, la voce di menu Related ti porterà alle pagine dei file dell'agente Checkmk Raw.

I pacchetti di agenti per Linux (nei formati RPM e DEB) e per Windows (nel formato MSI) si trovano nel primo box della corrispondente pagina di download. In questi pacchetti software troverai il nuovo agente con Agent Controller dalla versione 2.1.0. L'installazione e la configurazione sono descritte in dettaglio negli articoli sugli agenti Linux e sugli agenti Windows.

Nel box Agents puoi trovare gli script dell'agente appropriati per i vari sistemi operativi. Per i sistemi operativi su cui l'agente deve essere configurato in modalità legacy (cioè senza Agent Controller), sono disponibili gli articoli Monitoraggio di Linux in modalità legacy e Monitoraggio di FreeBSD.

4. L'agent bakery

4.1. Introduzione

Se utilizzi una delle edizioni commerciali, puoi creare pacchetti di agenti personalizzati con l'Agent Bakery. In questo modo, oltre agli agenti esistenti, puoi creare (o "cuocere") pacchetti di agenti che contengono configurazioni personalizzate e plug-in aggiuntivi o opzionali. Puoi installare questi pacchetti con un solo comando. Tali pacchetti sono ideali per la distribuzione e l'installazione automatica. Puoi anche creare agenti personalizzati per cartelle o gruppi specifici di host. Ciò consente una grande flessibilità grazie all'uso degli aggiornamenti automatici degli agenti.

Anche se è vero che l'agente Checkmk può funzionare immediatamente "nudo", senza bisogno di configurazione e senza plug-in, in alcuni casi l'agente deve essere configurato. Alcuni esempi:

  • Limitazione dell'accesso a indirizzi IP specifici

  • Monitoraggio di database Oracle (sono necessari un plug-in e una configurazione)

  • Monitoraggio di file di log di testo (sono necessari un plug-in, nomi di dati e modelli di testo).

  • Utilizzo dell'inventario hardware/software (è necessario un plug-in).

Tip

Per ogni processo di cottura è possibile generare una revisione consecutiva per distinguere i diversi processi di cottura, visibile solo nei metadati del pacchetto cotto. Da Checkmk 2.3.0, questa funzione è disattivata per impostazione predefinita per evitare che gli agenti Bake agents perdano la loro firma valida. Se vuoi comunque attivare la revisione del bake, ad esempio per un'elaborazione unica in un gestore di pacchetti, attiva l'opzione Setup > Global settings > Setup > Apply bake revision. E se attivata: Per gli agenti cotti automaticamente in un secondo momento tramite la regola Automatically create monitoring agents, la revisione precedente rimane in ogni caso e non viene incrementata ulteriormente, anche in questo caso per non perdere la firma. Se hai bisogno di Bake agents cotti automaticamente con revisioni consecutive, dovresti utilizzare l'API REST invece della regola, ad esempio.

4.2. Scaricare l'agente

Puoi accedere all'agent bakery tramite il sito Setup > Agents > Windows, Linux, Solaris, AIX:

Entry page to the Agent Bakery.

Checkmk supporta i sistemi operativi Windows, Linux, Solaris e AIX con l'Agent bakery. Per Linux puoi scegliere tra i formati di pacchetto RPM (per i sistemi basati su Red Hat Enterprise Linux (RHEL), SLES) e DEB (per Debian, Ubuntu), oltre a un cosiddetto "tarball" nel formato TGZ che viene semplicemente scompattato come root sotto /. Allo stesso modo, per AIX è disponibile un tarball, che però non prevede l'integrazione automatica in inetd. L'integrazione deve essere eseguita manualmente come azione una tantum. Per Solaris ci sono ancora il tarball e un pacchetto PKG.

Se non hai ancora effettuato alcuna impostazione per host specifici, esiste un'unica configurazione predefinita dell'agente. Nelle prossime due sezioni verrà fornita una spiegazione delle varie configurazioni possibili dell'agente.

Ogni configurazione dell'agente ha un ID esplicito: il suo hash. I primi otto caratteri di un hash vengono visualizzati nella GUI. Questo hash fa parte della versione del pacchetto ed è incorporato nel nome del file del pacchetto. Ogni volta che modifichi qualcosa nella configurazione di un pacchetto o aggiorni Checkmk, anche l'hash del pacchetto viene modificato. In questo modo il gestore di pacchetti del sistema operativo riconosce che si tratta di un pacchetto diverso ed esegue un aggiornamento. Il numero di versione di Checkmk non è sufficiente per fare una distinzione.

I pacchetti Baked per Linux e Windows vengono installati nello stesso modo dei pacchetti disponibili nella pagina di download di Checkmk.

4.3. Configurazione tramite regole

La configurazione dell'agente Checkmk può essere modificata, come spesso accade in Checkmk, attraverso delle regole. Queste ti offrono la possibilità di dotare host diversi di impostazioni o plug-in dell'agente differenti. Il pulsante Agent rules ti porta a una pagina che elenca tutti i set di regole che influenzano gli agenti:

List of rules for the agents.

Facciamo un esempio: vuoi limitare l'elenco degli indirizzi IP a cui è consentito l'accesso all'agente. Per questo seleziona il set di regole Generic Options > Allowed agent access via IP address (Linux, Windows). Inserisci uno o più indirizzi IP come valore della regola:

Rule to restrict IP addresses to access the agent.

Lascia invariati i valori predefiniti nel box Conditions in modo che questa regola si applichi a tutti gli host. Salva la nuova regola.

4.4. Le configurazioni dell'agente

Dopo aver salvato, torna alla pagina Windows, Linux, Solaris, AIX. Il pulsante assicura che l'agente sia di pertinenza. Il risultato: ora hai due configurazioni individuali:

List with two agent configurations to download.

Nella colonna Agent type puoi leggere a quali host è assegnata la rispettiva configurazione. Per motivi di spazio, questo elenco potrebbe non essere completo.

Vanilla (factory settings)

I pacchetti agente contengono solo la configurazione predefinita e quindi nessuna regola agente.

Folders

I pacchetti agente contengono tutte le regole agente in cui non sono definite condizioni per gli host e che si applicano alle cartelle elencate.
I pacchetti di agenti vengono creati specificamente per una cartella se l'attributo Bake agent packages è impostato su Bake a generic agent package for this folder nella cartella Folder properties. Questo attributo si applica solo alla cartella e non viene ereditato.
Questa voce è utile per creare agenti per host che non esistono ancora in Checkmk. La cartella può anche essere vuota per crearvi automaticamente degli host in un secondo momento. Per impostazione predefinita, i pacchetti agente vengono creati solo per la cartella Main (o root folder).

Hosts

I pacchetti agente contengono tutte le regole agente che si applicano agli host dell'elenco.

Nell'esempio mostrato sopra, la regola Allowed agent access via IP address (Linux, Windows) è stata creata senza condizioni per gli host. La nuova configurazione dell'agente si applica quindi alla cartella Main e a localhost, attualmente l'unico host del sito.

Più regole specifiche per gli host distribuisci, più varianti di agenti saranno costruite. L'Agent bakery si preoccupa di costruire solo le configurazioni che sono utilizzate da almeno una delle cartelle o degli host esistenti.

Inoltre, puoi accedere ai pacchetti agente di un host comodamente dalle proprietà dell'host cliccando sull'host in Setup > Hosts > Hosts e selezionando Monitoring agent nel menu Hosts:

List of agents for a host to download.

Perché per ogni host vengono forniti i pacchetti per tutti i sistemi operativi? La risposta è molto semplice: se su un sistema non è installato alcun agente Checkmk non è in grado di riconoscere il sistema operativo. In ogni caso, una volta attivato l'aggiornamento automatico dell'agente, non dovrai fare altro.

4.5. Estensione tramite plug-in

Molte regole riguardano l'installazione di vari plug-in. Questi estendono l'agente di monitoraggio di componenti piuttosto specifici. La maggior parte di questi sono applicazioni speciali come, ad esempio, i database. Accanto alla regola che attiva un plug-in troverai anche i set di regole per configurare il plug-in. Ecco, ad esempio, la regola per il monitoraggio di MySQL:

Rule for the MySQL plug-in of the agent.

4.6. File di configurazione

Fai attenzione a non modificare manualmente i file di configurazione generati dall'Agent bakery sul sistema di destinazione. Anche se le modifiche manuali funzionano per il momento, al successivo aggiornamento dell'agente le modifiche andranno perse. Tuttavia è possibile installare plug-in e file di configurazione aggiuntivi senza problemi.

4.7. Attivare il log

Nelle impostazioni globali puoi attivare il log per i processi di panificazione sotto Agent bakery logging. I risultati si trovano nel file ~/var/log/agent_bakery.log.

Option to enable bakery logging.

Senza l'attivazione della registrazione, potrai vedere queste informazioni solo se fai il bake agent con cmk --bake-agents -v al comando.

5. Quando deve essere aggiornato l'agente?

Indipendentemente dal fatto che tu monitorizzi solo una manciata o addirittura migliaia di host, l'aggiornamento dell'agente Checkmk su tutti gli host è sempre un'operazione di grande portata. L'aggiornamento automatico dell'agente nelle edizioni commerciali è comunque di grande aiuto. Tuttavia, dovresti aggiornare l'agente solo quando:

  • l'aggiornamento risolve un problema che ti riguarda, oppure

  • l'aggiornamento include nuove funzioni necessarie.

Affinché ciò sia possibile, in Checkmk vige una regola generale: le versioni più recenti di Checkmk sono in grado di gestire l'output degli agenti più vecchi.

Se la versione di Checkmk di un agente è più recente di quella del server Checkmk, è possibile che i plug-in di controllo non riescano a interpretare correttamente l'output dell'agente. In questo caso, i servizi interessati passano allo stato SCONOSCIUTO:

List of services in UNKNOWN status due to a failed check.

Anche se l'output dell'immagine precedente suggerisce il contrario, non inviare un report sui crash in questo caso.

6. Diagnosi degli errori

6.1. Testare l'agente tramite la linea di comando

Un agente correttamente installato può essere facilmente interrogato dalla linea di comando. Il modo migliore per farlo è direttamente dall'istanza Checkmk che sta monitorando attivamente l'agente. In questo modo puoi essere certo che l'indirizzo IP del server sarà accettato dall'agente. I comandi adatti sono ad es. telnet e netcat (o nc).

OMD[mysite]:~$ echo | nc 10.1.1.2 6556
16

L'output di 16 indica che la connessione stabilita tramite la porta TCP 6556 è andata a buon fine e l'handshake TLS può ora avere luogo. L'agente Checkmk è stato registrato presso l'istanza Checkmk tramite l'Agent Controller, quindi la comunicazione è criptata TLS e non verrà visualizzato alcun output dell'agente. Per i dettagli sulla registrazione, consulta gli articoli sull'agente Linux e sull'agente Windows.

Se la comunicazione tra l'agente e il server Checkmk è ancora non criptata (come nella modalità legacy pull) o è e rimane non criptata (come nella modalità legacy), questo comando ti fornirà l'output completo dell'agente non criptato invece di 16 (di cui sono mostrate solo le prime righe):

OMD[mysite]:~$ echo | nc 10.1.1.2 6556
<<<check_mk>>>
Version: 2.1.0p1
AgentOS: linux
Hostname: mycmkserver
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/lib/check_mk_agent/plugins

L'output inizia sempre con la riga <<<check_mk>>>. Le righe incluse in <<< e >>> sono chiamate header sezioni. Queste dividono l'output dell'agent in sezioni. Ogni sezione contiene informazioni correlate e di solito è semplicemente l'output di un comando diagnostico. La sezione check_mk ha un ruolo speciale: contiene informazioni generali sull'agent, come ad es. il numero di versione.

Se l'host è già monitorato, puoi ottenere i dati con il comando cmk -d, che utilizza l'indirizzo IP configurato in Setup, consente di riconfigurare il numero di porta e di individuare eventuali agenti speciali presenti: con l'opzione --debug -v puoi ottenere anche alcune informazioni di debug.

OMD[mysite]:~$ cmk -d mycmkserver
<<<check_mk>>>
Version: 2.1.0p1

Se il monitoraggio è già in corso regolarmente per l'host in questione, una copia aggiornata dell'output si trova sempre nella directory del sito ~/tmp/check_mk/cache:

OMD[mysite]:~$ cat tmp/check_mk/cache/mycmkserver
<<<check_mk>>>
Version: 2.1.0p1
Tip

Per informazioni su altri comandi di diagnostica che possono essere eseguiti sull'host dell'agente, consulta gli articoli sull'agente Linux e sull'agente Windows.

6.2. Testare l'agente tramite l'interfaccia web

Puoi anche eseguire una diagnosi dell'agente tramite l'interfaccia web, che tiene conto di tutte le impostazioni e supporta anche i dispositivi SNMP e quelli interrogati tramite special agent. In effetti, Checkmk tenta sempre di interrogare contemporaneamente la porta TCP 6556 e SNMP.

Puoi accedere al test di connessione tramite le proprietà dell'host: nella pagina Properties of host, seleziona Host > Connection tests dal menu e avvia il test facendo clic su Run tests:

Result of the connection test to a host.

Puoi provare subito alcune di queste impostazioni (ad esempio, la comunità SNMP) e salvarle in caso di successo.

In questa pagina