![]() |
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:

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):
Switchare l'inventario per gli host desiderati
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:

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:

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:

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 |
|
Linux |
|
AIX |
|
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):
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):
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:

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:

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:

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:

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:

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:

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:

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:

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):

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:
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:

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:

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:

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

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:

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:
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 |
---|---|
|
Plug-in dell'agente per Linux e Unix |
|
Plug-in dell'agente per Windows |
|
Dati di inventario dei singoli host come file Python (compressi e non compressi) |
8.2. Directory sugli host monitorati
Percorso | Descrizione |
---|---|
|
Percorso di archiviazione per il plug-in dell'agente Windows |
|
Percorso di memorizzazione del plug-in dell'agente Linux/Unix |
|
Configurazione per il plug-in dell'agente Linux/Unix |