26 novembre 2020

Nagios e monitoraggio Windows

Un post veramente lungo, dedicato agli amministratori di rete. Da leggere solo in caso di bisogno!

Nagios è un complesso sistema di monitoraggio di risorse informatiche, cioè un programma che interroga o riceve messaggi sullo stato dei computer e dispositivi sulla rete e le aggrega in un unico posto.

La sola visualizzazione sarebbe utile, ma insufficiente. La vera forza dei sistemi di monitoraggio è quella di avvisare il responsabile di sistema di eventuali malfunzionamenti o stress dei dispositivi monitorati, cosa che normalmente avviene tramite email.

Chiaramente è meglio avere il sistema di monitoraggio su una macchina diversa da quelle che si vogliono controllare, perché, normalmente, non si guastano contemporaneamente. Inoltre sarà improbabile che il monitoraggio interferisca con altri processi produttivi, ma rimarrà un "osservatore esterno", distaccato e imparziale. 

Nagios è disponibile in versione a pagamento, denominata 'Nagios XI' e nella versione gratuita, 'Nagios Core', che è la versione di cui mi sto segnando alcuni appunti.

Premetto subito che, se installare Nagios Core non è complesso, questo non si può dire per la sua configurazione. Infatti, la semplicità di configurazione la potete avere in cambio della licenza della versione a pagamento.

Nagios è pensato per essere installato su Linux, ma, evidentemente, è attrezzato per dialogare via rete con svariati dispositivi, usando protocolli e linguaggi diversi.

Nel 2016 ...

Nel 2016 avevo installato Nagios Core su Centos7 per monitorare dei server Windows, utilizzando NSClient++, un 'agente' gratuito per Windows, che vorrebbe parlare con Nagios attraverso il protocollo NRPE (Nagios Remote Plugin Executor).   

Quattro anni dopo le cose sono abbastanza cambiate.

NSClient++ è ancora disponibile, ma l'ultima versione risale al 2018.

NRPE è sconsigliato o 'deprecated', e riceve solo aggiornamenti per la sicurezza. Nonostante questo troverete sul web diverse pagine recenti che vi guidano nell'installazione di NRPE e NSClient.

As of NRPE version 4.0.1, this project is deprecated.

Qual'è la strada attualmente consigliata per il monitoraggio di macchine Windows da Nagios Core?

Nel 2020

Dalle indicazioni di Nagios e dallo stato di sviluppo delle varie librerie su GitHub, ho capito che il sistema più aggiornato si chiama NCPA, o Nagios Cross-Platform Agent.

La documentazione Nagios è molto chiara:

NSClient++ is one of many agents that can be used to monitor Windows devices. [...] However, for ease of use and greater functionality, Nagios Enterprises recommends using a multi-platform agent called NCPA

Installando NCPA su Windows, Nagios ha due possibilità:

  1. interrogare direttamente le macchine in modalità 'attiva', 
  2. ricevere in maniera 'passiva', dei bollettini periodici, utilizzando il protocollo NRDP, o Nagios Remote Data Processor.

Vediamo un po' in dettaglio alcuni passaggi e collegamenti a pagine web con istruzioni o specifiche dettagliate.

Lato Nagios: installazione Nagios

E' tutto abbastanza regolare, la cosa importante è seguire una guida specifica per la salsa e revisone di Linux che avete scelto. Molti scelgono Centos o Debian, nel mio caso ho usato Ubuntu 18 LTS.
 
Vedi:
Dopo Nagios è necessario installare i suoi plugin.
Vedi:   

Lato Windows: installazione NCPA

Nulla di più semplice. Scaricate l'ultimo installer e seguite il 'wizard'. 
Segnatevi la chiave di sicurezza (il 'token') che avete scelto per far comunicare le due parti, dovrete usarla nella configurazione di Nagios.

Lato Nagios: installazione client/plugin NCPA

Dovrete aggiungere a Nagios il plugin o client, in python, per parlare in NCPA.  
Si chiama 'check_ncpa.py' e si scarica a parte.
 
Dopo l'installazione, verificate il funzionamento del plugin:
  1. portatevi nella cartella del plugin
  2. eseguite:
    ./check_ncpa.py -H <indirizzo server> -t <mytoken> -M 'system/agent_version' 
    Se funziona potete chiedere a NCPA l'elenco di tutte le voci che può inviare:
  3. ./check_ncpa.py -H <indirizzo server> -t mytoken --list

Lato Windows: configurazione NCPA attivo

Istruzioni per la configurazione di NCPA attivo: i default dovrebbero andare bene nella maggior parte dei casi. Segnatevi la chiave di sicurezza (API token) che vi servirà nella configurazione di Nagios.

Ricordatevi di riavviare i servizi NCPA a conclusione delle modifiche dei file di configurazione

Lato Nagios: configurazione Nagios + NCPA

Qui cominciano i dolori. Dovete armarvi di pazienza, e imparare a muovervi tra i file e le cartelle di Nagios. Dovete imparare cosa sono i 'template' o modelli, che vi faranno risparmiare un po' di ripetizioni (voce 'use' dei file di configurazione).

I passaggi, a grandi linee, sono:

  1. Configurazione generale di Nagios. File nagios.cfg. Abilitare il monitoraggio Windows.
  2. Configurazione dei comandi, in objects/commands.cfg. Aggiunta del comando ncpa
  3. Configurazione dei server (host) e delle voci di monitoraggio (services) per ciascun server. File objects/windows.cfg

Se tutto va bene, ad un certo punto, nella schermata di Nagios dovreste vedere delle bellissime righe verdi in corrispondenza del vostro host e relativi servizi, magari con delle informazioni realistiche sull'occupazione disco e carico CPU.


In bocca al lupo!  

ISS control center

Lato Nagios: installazione NRDP

Se volete il monitoraggio passivo, dovrete scaricare anche il plugin per NRDP. Si scarica e si installa a parte. 
 
Sorgenti e istruzioni di installazione: https://github.com/NagiosEnterprises/nrdp
 
Segnatevi la chiave di sicurezza (token) utilizzata. Vi servirà per la configurazione in Windows.

Verificate che la pagina web di NRDP sia attiva, e che il token sia corretto.

Lato Windows: configurazione NRDP passivo

  • Istruzioni per la configurazione dei controlli passivi (in inglese). 
    • Cartella /etc
    • Troverete un file preconfigurato e uno di esempio.
    • Importante: impostare l'URL di destinazione dei messaggi (server Nagios/nrpd)
    • vedi (in inglese) https://www.nagios.org/ncpa/help/2.2/passive.html 
    • Riavviate i servizi NCPA a conclusione delle modifiche dei file di configurazione 


Lato Nagios: configurazione NRDP passivo

Se è andato tutto bene finora,  i messaggi di Windows dovrebbero arrivare a Nagios. Ma Nagios non sa cosa farsene.
Per verificare, controllate il log di Nagios per vedere se segnala i messaggi di provenienza ignota:

grep 'Error: Got' /usr/local/nagios/var/nagios.log 
 
Se trovate le segnalazioni, siamo a cavallo.
Per far 'digerire' questi messaggi, dobbiamo aggiungere alla configurazione di Nagios:

Riferimenti 

Sorgenti ed eseguibili per Nagios:
Sorgenti ed eseguibili di NCPA. Alla data del post, la versione era la 2.2.2 di giugno 2020.
Descrizione del plugin NCPA per i controlli in modalità attiva, in particolare per Windows:
Spiegazione complessiva dell'utilizzo di NCPA in modalità passiva:
Traccia dettagliata di alcune operazioni di configurazione descritte sopra:

Per coloro che vogliono assolutamente continuare ad usare NSClient++, la documentazione:

09 novembre 2020

WikiData e Label

WikiData è il database RDF che ormai da qualche anno agisce come deposito per i dati "universali" di Wikipedia. 

Ad esempio, è ragionevole che ci sia una unica fonte interna che fornisca il dato sulla popolazione di Parigi, invece di affidarsi alle capacità dei volenterosi volontari che dovrebbero riportarla come numero in cento traduzioni diverse dell'articolo sulla capitale della Francia.

Recentemente mi sono avvicinato a questo mondo, e ho provato a creare qualche domanda o 'query' come si dice in gergo. Per questo c'è uno spazio apposito, chiamato Wikidata Query Service.

Sono rimasto affascinato dalle potenzialità di questo sistema e in generale dal paradigma RDF, ma mi hanno sorpreso subito alcune stranezze, che mi segno qui per motivi di cronaca.

Se voglio sapere quante città si chiamano 'Pavia' nel mondo (nel mondo Wikidata, inteso), devo cercare l'etichetta (o 'label') 'Pavia'. Questo non è intuitivo come si potrebbe pensare.

Query trovata su StackOverflow, in risposta alla domanda di un utente perplesso:

SELECT distinct ?item ?itemLabel ?itemDescription
WHERE{  
  ?item ?label "Pavia"@en.  
  ?article schema:about ?item .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }    
}

 Ma cos'è 

SERVICE wikibase:label 

? Mistero. Nel tutorial di SPARQL per WikiData, ci viene spiegato che si tratta di una 'magia'.

Senza questa magia, bisogna scrivere:

SELECT DISTINCT ?item
WHERE
{
  ?item  wdt:P31/wdt:P279* wd:Q486972 .
  ?item rdfs:label "Pavia"@en .
}

... dove

wdt:P31/wdt:P279* wd:Q486972

significa: un "insediamento umano" o sua sottoclasse più specializzata.

Non sono l'unico che si chiede in cosa consista la 'magia' dei label, come potete leggere in quest'altra domanda su StackOverflow

A quanto pare si tratta di una questione di ottimizzazioni e di efficienza.

Se troverò risposte, sarete i primi a saperlo ...