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

Oltre al monitoraggio convenzionale - cioè il monitoraggio dei dati di stato, di log e di misurazione - Checkmk include un'altra funzione completamente diversa e praticamente gratuita: l'inventario hardware/software (o inventario HW/SW in breve), che permette di identificare automaticamente elementi presenti nei tuoi host, come ad esempio:

  • Quali pacchetti software - e quali versioni - sono installati su un server?

  • Che tipo di componenti RAM ha un server?

  • Quale versione del BIOS è installata sulla scheda madre?

  • I numeri di serie dei dischi rigidi installati.

  • Se ci sono porte dello switch che non vengono utilizzate da tempo (e che quindi sono probabilmente libere)?

  • ... e molto altro ancora

I dati ottenuti in questo modo vengono visualizzati per host in un albero strutturato e in varie altre visualizzazioni e sono disponibili anche tramite un'API. Ecco un piccolo esempio con i dati della CPU:

Expanded inventory with CPU data.
Dati sulla CPU nel percorso dell'inventario hardware.cpu

Con l'Inventario hardware/software puoi eseguire una serie di compiti, come ad esempio:

  • Fornire dati sul software installato per un sistema di gestione delle licenze.

  • Determinare le denominazioni dei tipi per gli ordini di pezzi di ricambio (RAM, dischi rigidi, ventole).

  • Fornire dati generali sull'hardware e sul software da importare regolarmente nei CMDB, in modo che siano basati su dati aggiornati.

  • Tracciare le modifiche all'hardware o al software, ad es. per determinare quando è stato eseguito uno specifico aggiornamento del BIOS.

  • Essere informati se qualcosa è cambiato nell'hardware o nel software

  • Identificare i server su cui non è stato ancora installato uno specifico service pack.

Il vantaggio più importante rispetto ad altri sistemi analoghi è evidente: puoi semplicemente utilizzare l'infrastruttura esistente di Checkmk e risparmiarti lo sforzo di implementare e amministrare un altro ambiente software. Devi solo implementare un singolo plug-in dell'agente aggiuntivo. Questo non è nemmeno necessario con i dispositivi SNMP, perché lo scanner dell'inventario supporta anche SNMP e si limita a recuperare i dati attraverso questo percorso.

Inoltre, Checkmk non ha bisogno di nascondersi dietro altri scanner d'inventario. Come per i nostri plug-in di controllo, lavoriamo costantemente per espandere la scansione dei dati. Ogni versione di Checkmk porta con sé nuovi plug-in di controllo e le informazioni che possono essere raccolte diventano sempre più dettagliate ed estese.

2. Installazione

L'installazione dell'Inventario HW/SW avviene in due fasi. Il prerequisito è che l'agente Checkmk sia già stato installato sugli host (se questi non vengono monitorati tramite SNMP):

  1. Switchare l'inventario per gli host desiderati

  2. Installare il plug-in dell'agente per l'inventario su questi host.

2.1. Attivare l'inventario per gli host desiderati

Creare la regola

Come sempre, se vuoi configurare qualcosa per host specifici, questo è possibile anche con l'aiuto di una regola. Questo set di regole si trova alla voce Setup > Hosts > HW/SW inventory rules > Do hardware/software inventory.. Naturalmente è ancora più facile usare la ricerca delle regole con la parola inventory. Non confonderla con il set di regole Hardware/Software-Inventory (Linux, Windows, Solaris, AIX) che è per il plug-in dell'agente, come vedremo più avanti.

Nel set di regole Do hardware/software inventory, alcune regole che si riferiscono alle etichette dell'host sono già attive per impostazione predefinita. Se gli host che desideri hanno un'etichetta di questo tipo, il servizio per l'inventario HW/SW è già impostato. In caso contrario, devi creare una nuova regola.

Usa Add rule per creare una nuova regola per gli host per i quali vuoi attivare l'inventario. Qui troverai diverse impostazioni:

Dialog for inventory options.
Per impostazione predefinita, tutte le opzioni sono disabilitate e non sono necessarie.

Per ora lascia tutto come preimpostato. Le varie opzioni che vedrai sono descritte di seguito.

Alla prossima attivazione delle modifiche, la regola appena creata genererà, per ogni host, un active check che raccoglie tutti i dati dell'inventario per quell'host - sia dai dati ricevuti da un normale agente Checkmk, sia attraverso query SNMP aggiuntive. Il nuovo servizio Check_MK HW/SW Inventory può essere trovato sugli host nell'elenco dei servizi e avrà un aspetto simile a questo:

Status display of a fresh inventory service.
Senza il plug-in dell'agente vengono segnalate solo alcune voci predefinite.

Non preoccuparti se il controllo ha trovato solo pochi elementi: questo perché non abbiamo ancora implementato il plug-in di controllo.

Definire l'intervallo

I dati dell'inventario sono qualcosa che cambia raramente e il riconoscimento di un cambiamento non è in genere critico dal punto di vista temporale. Per questo motivo ha senso utilizzare un intervallo di tempo adeguato durante il quale viene eseguito il controllo dell'inventario piuttosto che utilizzare il solito intervallo di un minuto, soprattutto perché il processo di elaborazione dei dati dell'inventario nell'active check richiede un tempo di calcolo significativamente maggiore rispetto a quello necessario per un normale servizio.

Le istanze Checkmk hanno di serie un set di regole Setup > Service monitoring rules > Service Checks > Normal check interval for service checks che imposta l'intervallo a un giorno per tutti i servizi con il nome Check_MK HW/SW Inventory:

The rule for setting the interval.
Un inventario giornaliero è sufficiente nella pratica, mentre per i test sono adatti periodi più brevi.

Naturalmente, se ritieni che una volta al giorno non sia sufficiente, puoi anche personalizzare questa regola, ad es. a quattro o otto ore. Naturalmente c'è anche la possibilità di impostare la regola in modo diverso, utilizzando più regole per host diversi.

2.2. Installazione del plug-in dell'agente dell'inventario su questi host

Il passo più importante è l'installazione del plug-in dell'agente per l'inventario sugli host interessati. Puoi farlo manualmente o con l'Agent bakery (solo edizioni commerciali).

Installazione manuale

Per un'installazione manuale hai bisogno del plug-in, che puoi trovare nelle edizioni commerciali alla pagina Setup > Agents > Windows, Linux, Solaris, AIX > Related e in Checkmk Raw direttamente alla voce Setup > Agents.In tutte le edizioni, troverai le voci di menu per i vari sistemi operativi. A seconda del sistema operativo, utilizza il seguente plug-in nel box Plugins:

Sistema operativo Plug-in

Windows

mk_inventory.vbs

Linux

mk_inventory.linux

AIX

mk_inventory.aix

Solaris

mk_inventory.solaris

Puoi trovare questi file anche alla riga di comando nell'istanza Checkmk nella sottodirectoryshare/check_mk/agents/plugins (Linux/Unix) o in share/check_mk/agents/windows/plugins (Windows).

Copia il plug-in negli host di destinazione nella directory corretta per i plug-in. Per l'agente Windows è C:\ProgramData\checkmk\agent\plugins. Per maggiori dettagli, consulta l'articolo sull'agente Windows.

Per Linux e Unix la directory è /usr/lib/check_mk_agent/plugins. Assicurati che il file sia eseguibile (chmod +x). Per maggiori dettagli consulta gli articoli sugli agenti Linux.

L'importante è che l'agente Checkmk lo chiami, di solito una volta al minuto. Il plug-in dell'agente per l'inventario, tuttavia, richiede più tempo di elaborazione rispetto ai normali plug-in perché, ad esempio, deve cercare i software installati in molte directory. Inoltre, genera una quantità di dati significativamente maggiore. Per questo motivo è stato progettato per generare e fornire nuovi dati solo ogni quattro ore (14400 secondi).

Quindi, se per qualche motivo importante hai specificato un intervallo più breve di quattro ore per il tuo controllo dell'inventario, riceverai effettivamente nuovi dati solo ogni quattro ore. Se vuoi davvero raccogliere più dati, in questo caso dovrai modificare l'intervallo di calcolo predefinito.

Per Windows, sostituisci il numero direttamente nel file del plug-in: cerca il numero 14400 e sostituiscilo con un numero diverso di secondi. Il percorso in cui si trova questo numero è il seguente (dettaglio):

mk_inventory.vbs
Dim delay
Dim exePaths
Dim regPaths

'These three lines are set in the agent bakery
delay = 14400
exePaths = Array("")
regPaths =
Array("Software\Microsoft\Windows\CurrentVersion\Uninstall","Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall")

Con Linux e Unix il funzionamento è un po' diverso. A questo scopo, crea un file di configurazione /etc/check_mk/mk_inventory.cfg con la seguente riga (nell'esempio con 7200 secondi):

/etc/check_mk/mk_inventory.cfg
INVENTORY_INTERVAL=7200

Un'ultima nota: il plug-in dell'agente per l'inventario prevede che venga eseguito solo ogni quattro ore. Pertanto, non utilizzare il meccanismo dell'agente per l'esecuzione asincrona dei plug-in a intervalli più lunghi. Installa il plug-in nel modo semplice e consueto per l'esecuzione diretta.

Configurazione con l'Agent bakery

Naturalmente, se utilizzi l'Agent bakery nelle edizioni commerciali per configurare i tuoi agenti, le cose sono molto più semplici. Esiste un solo set di regole chiamato Hardware/Software-Inventory (Linux, Windows, Solaris, AIX), indipendente dal sistema operativo. Questo set di regole controlla il lancio del plug-in necessario e la sua configurazione. Si trova all'indirizzo Setup > Agents > Windows, Linux, Solaris, AIX > Agents > Agent rules:

Input mask with options for the inventory agent plug-in.
È possibile includere programmi portatili direttamente tramite directory

Per Windows, oltre all'intervallo puoi anche specificare i percorsi in cui cercare i file eseguibili di .EXE quando si tratta di trovare il software installato sul sistema. Puoi anche configurare i percorsi nel registro di Windows, da tenere in considerazione come indicatore del software installato.

2.3. Test

Se il plug-in di controllo è stato implementato correttamente, la prossima volta che eseguirai il controllo dell'inventario dell'host dovresti trovare un numero significativamente maggiore di record. Il risultato sarà quindi simile a questo:

Status display of an inventory service with a running agent plug-in.
Troverai un numero così basso di voci solo nei sistemi appena configurati.

3. Lavorare con i dati dell'inventario

I dati dell'inventario sono ovviamente disponibili per ogni singolo host, in parte sotto forma di albero e in parte come rappresentazione tabellare. Di seguito ti spieghiamo come funzionano esattamente e come puoi accedervi. Tuttavia, ci sono anche delle visualizzazioni, in particolare delle ricerche, che riguardano l'intero paesaggio dell'host. Puoi accedervi tramite la voce Inventory nel menu Monitor:

Inventory entries in the Monitor menu.
Visualizzazioni globali dei dati d'inventario

3.1. Visualizzazione a struttura ad albero

I dati dell'inventario degli host vengono visualizzati da un lato in una struttura ad albero per host e dall'altro in forma di tabella. Puoi aprire il diagramma ad albero, ad esempio, in una visualizzazione host tramite la voce di menu Host > Inventory > Inventory of host.

In alternativa, nelle visualizzazioni che elencano gli host, puoi richiamare il menu di un host e a sua volta richiamare l'inventario da esso:

Context menu for viewing the inventory of a host.
Accesso all'inventario da un elenco di host

In entrambi i casi si ottiene una visualizzazione ad albero dei dati dell'inventario dell'host. Partendo dalle tre categorie di base Hardware, Networking e Software, puoi espandere e chiudere i rami secondari dell'albero:

Expanded inventory with CPU information.
Una piccola parte dell'albero dell'inventario

Nell'immagine qui sopra puoi vedere dietro le singole voci i percorsi dell'inventario tra parentesi, che puoi visualizzare utilizzando Display > Modify display options e l'opzione Show internal tree paths:

Option for displaying inventory paths.

Vedrai quindi le denominazioni interne dell'inventario: ad esempio, il percorso interno della sezione Processor si chiama hardware.cpu. Le denominazioni del modello e dell'architettura della CPU -model e arch- si trovano in basso nei dati della CPU.

Puoi utilizzare queste denominazioni interne per abilitare solo percorsi individuali per i gruppi di contatto. Gli utenti di un gruppo di contatto a cui sono state assegnate solo le voci hardware.cpu, modello e architettura mostrate sopra vedranno quindi solo un inventario ridotto:

Inventory with selected records.

3.2. Visualizzazioni tabellari

Molti dei dati dell'inventario sono valori individuali che si trovano in percorsi molto specifici dell'albero, come ad es. la voce Hardware > System > Manufacturer > Apple Inc.. Ma ci sono anche luoghi dell'albero con tabelle di oggetti simili. Una molto importante è, ad esempio, la tabella Software > Packages:

Software packages in the inventory tree.
L'elenco dei pacchetti è molto dettagliato e ritagliato nell'immagine.

La particolarità di questa parte dei dati dell'inventario è che puoi richiamare i pacchetti in una visualizzazione separata tramite Host > Inventory > Software packages. Qui troverai dei filtri specifici per la ricerca nei pacchetti (fortemente abbreviati nell'immagine):

Filter list for software packages.
Il filtro per il nome host è già precompilato.

Puoi anche cercare i pacchetti software su più host. La visualizzazione corrispondente si trova nel menu Monitor alla voce Monitor > Inventory > Search Software packages o nello snap-in Views della barra laterale alla voce Inventory.Qui sono elencate anche tutte le altre visualizzazioni delle tabelle dell'inventario, con ulteriori ricerche, ad esempio per dati specifici di Oracle.

Tieni presente che molti filtri generali per gli host non sono disponibili di default nelle visualizzazioni, ma si ottengono modificando la visualizzazione e aggiungendo ulteriori filtri per gli host.

Altre cose che puoi fare con le visualizzazioni:

  • Includerle nei report

  • Esportarle in formato PDF o CSV

  • Integrarle con dashboard

Tra l'altro, puoi anche includere i dati dell'inventario in visualizzazioni che non sono tabelle. Esiste un tipo di colonna per ogni percorso noto dell'inventario, che puoi aggiungere alle visualizzazioni degli host. Un esempio è la visualizzazione predefinita di esempio CPU inventory of all hosts. Si tratta di una tabella di host che mostra dati aggiuntivi dall'inventario per host. Ecco un esempio di una delle definizioni di colonna che aggiunge una colonna alla tabella del numero di CPU fisiche nell'host:

Dialog for including columns with inventory data in views.
I dati dell'inventario sono disponibili in tutte le visualizzazioni

4. Cronologia dei dati di inventario

Una volta impostato l'inventario HW/SW di un host, Checkmk registrerà ogni modifica dei dati dell'inventario e ne memorizzerà anche la cronologia. Puoi trovarla nelle visualizzazioni con i dati dell'inventario via Host > Inventory > Inventory history of host.

Ecco un estratto della cronologia. Nella tabella puoi vedere alcuni dati IP che sono cambiati dall'ultimo controllo:

History of entries in the inventory.
Le modifiche all'inventario sono immediatamente visibili nella cronologia.

Se lo desideri, puoi essere informato ogni volta che si verifica un cambiamento nel software o nell'hardware. Questo avviene tramite lo stato del servizio Check_MK HW/SW Inventory. Per farlo, modifica la regola che hai creato all'inizio di questo articolo (nel set di regole Do hardware/software inventory ). Lì, per il valore della regola, troverai una serie di impostazioni che influenzano la cronologia. L'esempio seguente imposta il servizio WARN se si verificano cambiamenti nel software o nell'hardware:

Dialog for state change of the inventory check.
Un buon modo per rendersi conto dell'IT ombra sulle postazioni di lavoro.

La prossima volta che il controllo dell'inventario rileverà delle modifiche, passerà a WARN. L'aspetto sarà quindi il seguente:

Inventory check with warning about detected changes.
WARN nell'elenco dei servizi di un singolo host

Alla successiva esecuzione del controllo, se nel frattempo non è cambiato nulla, il servizio si ripristina automaticamente su OK. Attivando manualmente l'esecuzione, hai anche la possibilità di ripristinare manualmente il servizio su OK se non vuoi aspettare la prossima normale esecuzione periodica.

5. Dati di stato

L'albero dei dati d'inventario può essere aggiornato automaticamente con i dati di stato più recenti. Questo è molto utile in alcuni casi. Un esempio è quello dei tablespace Oracle.I dati d'inventario attuali contengono solo informazioni relativamente statiche come il SID, il nome e il tipo. I dati di stato attuali possono essere integrati con informazioni sulla dimensione attuale, sullo spazio libero, ecc.

Se vuoi vedere i dati di stato nella tua struttura (e non c'è niente di male), devi solo attivare l'opzione corrispondente nella regola che hai creato all'inizio in Do hardware/software inventory:

Dialog for activating the status data.
I dati di stato ampliano il monitoraggio, in alcuni casi in modo considerevole

A proposito, una modifica dei dati di stato non comporterà cambiamenti nella cronologia: ciò porterebbe quasi sempre a continue modifiche e renderebbe questa funzione inutile. Idati di stato non sono archiviati in file, ma come i risultati dei controlli sono conservati direttamente nella memoria principale del kernel di monitoraggio.

6. Accesso esterno ai dati

6.1. Accesso tramite la propria API web

Puoi esportare i dati dell'inventario HW/SW di un host tramite l'API web dell'inventario stesso.

Nota: l'API web dell'inventario qui menzionata non è l'API web che è stata rimossa da Checkmk nella versione 2.2.0.

Il suo URL è:

http://myserver/mysite/check_mk/host_inv_api.py?host=myhost

Il formato di output in questo caso è il codice sorgente Python. Se preferisci JSON, aggiungi un &output_format=json all'URL:

http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&output_format=json

Il risultato è simile a questo modulo abbreviato:

myhost.json
result:
    Attributes: {}
    Nodes:
        hardware:
            Attributes: {}
            Nodes:
                memory:
                    Attributes:
                        Pairs:
                            total_ram_usable: 16495783936
                            total_swap: 1027600384
                            total_vmalloc: 35184372087808
                        Nodes: {}
                        Table: {}
                Table: {}
 ... usw. ...
result_code: 0

Allo stesso modo, puoi richiedere l'output in XML:

http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&output_format=xml.

Se inserisci il rispettivo URL nella barra degli indirizzi del browser, vedrai immediatamente un risultato poiché sei già loggato a Checkmk. I dati dell'inventario HW/SW si trovano nel file di output nella sezione successiva alla chiave del risultato. Da uno script, è meglio autenticare come utente automazione.

In caso di errore, ad es. se l'host specificato non è stato trovato, il codice di risultato viene impostato a 1 e viene stampato un messaggio di errore appropriato:

{"result": "Found no inventory data for this host.", "result_code": 1}

Interrogare più host

Puoi anche interrogare i dati dell'inventario HW/SW di più host in un unico output. Per farlo, estendi la query a tutti gli host richiesti:

http://myserver/mysite/check_mk/host_inv_api.py?request={"hosts":["myhost","myhost2"]}&output_format=json

Il risultato di questa query sarà quasi identico a quello dell'output precedente. Tuttavia, al livello superiore, i nomi degli host sono utilizzati come chiavi. Le informazioni relative agli host seguono poi negli alberi delle directory:

result:
    myhost:
        Attributes: {}
        Nodes:
            hardware:
                Attributes: {}
                Nodes:
                    memory:
                        Attributes:
                            Pairs:
                                total_ram_usable: 16495783936
                                total_swap: 1027600384
                                total_vmalloc: 35184372087808
                            Nodes: {}
                            Table: {}
                    Table:
            networking:
                Attributes:
                    Pairs:
                        available_ethernet_ports: 1
                        hostname: "MyServer"
                        total_ethernet_ports: 3
                        total_interfaces: 4
... etc. ...
    myhost2:
        Attributes: {}
        Nodes: {}
        Table: {}
result_code: 0

Se non vengono trovati dati di inventario per un host, questo host avrà una voce di inventario vuota al posto del messaggio di errore.

Limitare la ricerca a dati specifici

Potresti non voler interrogare tutti i dati dell'inventario, ma cercare solo informazioni specifiche. In questo caso, specifica i cosiddetti percorsi dell'inventario per indirizzare le informazioni che desideri. Riceverai quindi informazioni solo dagli host che hanno questi percorsi/informazioni.

Ad esempio, per visualizzare solo le informazioni sullo spazio di archiviazione e di swap totale dell'host myhost, utilizza questo URL:

http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&request={"paths":[".hardware.memory.total_ram_usable",".hardware.memory.total_swap"]}&output_format=json

Riceverai le informazioni richieste:

result:
    Attributes: {}
    Nodes:
        hardware:
            Attributes: {}
            Nodes:
                memory:
                    Attributes:
                        Pairs:
                            total_ram_usable: 16495783936
                            total_swap: 1027600384
                        Nodes: {}
                        Table: {}
                Table: {}
        Table: {}
result_code: 0

6.2. Accesso tramite file

In alternativa, puoi semplicemente leggere i file generati da Checkmk, che si trovano in formato Python nella directory ~/var/check_mk/inventory. Per ogni host c'è un file non compresso (ad es. myhost) e uno in versione compressa (ad es. myhost.gz).

7. Inventario in ambienti distribuiti

Nelle edizioni commerciali HW/SW Inventory funziona anche in ambienti distribuiti. In questo caso i dati dell'inventario vengono determinati dai siti locali e archiviati localmente sotto ~/var/check_mk/inventory.

Il demone proxy Livestatus trasferisce periodicamente tutti i dati aggiornati dell'inventario dal sito remoto al sito centrale e li archivia sotto ~/var/check_mk/inventory. Questo è importante perché questi dati sono troppo grandi per essere raccolti in diretta quando vengono interrogati in questo momento.

Non appena il sito centrale effettua delle interrogazioni sui dati dell'inventario, questi file vengono letti e poi uniti ai dati sullo stato attuale, che vengono recuperati dai siti remoti tramite Livestatus.

In breve, non devi preoccuparti di nulla.

Non c'è un proxy Livestatus in Checkmk Raw - quindi l'inventario HW/SW è incompleto nella GUI del sito centrale e mostra solo i dati di stato. Puoi aiutarti trasferendo regolarmente i file della directory ~/var/check_mk/inventory al sito centrale con uno script o simili. È sufficiente copiare i file senza l' estensione .gz. Per una trasmissione efficiente dei dati è adatto rsync, ad esempio.

8. File e directory

8.1. Directory presenti sul server Checkmk

Percorso Descrizione

~/share/check_mk/agents/plugins/

Plug-in dell'agente per Linux e Unix

~/share/check_mk/agents/windows/plugins/

Plug-in dell'agente per Windows

~/var/check_mk/inventory/

Dati di inventario dei singoli host come file Python (compressi e non compressi)

8.2. Directory sugli host monitorati

Percorso Descrizione

C:\ProgramData\checkmk\agent\plugins\

Percorso di archiviazione per il plug-in dell'agente Windows

/usr/lib/check_mk_agent/plugins/

Percorso di memorizzazione del plug-in dell'agente Linux/Unix

/etc/check_mk/mk_inventory.cfg

Configurazione per il plug-in dell'agente Linux/Unix

In questa pagina