Che si tratti di macchine proprie o di cloud, le applicazioni generano enormi quantità di dati, ogni giorno, ogni ora e ogni minuto. Non si parla più di gigabyte o terabyte, ma di petabyte, exabyte e zettabyte. Allo stesso tempo, siamo alla costante ricerca di un modo per cercare tra tutte queste informazioni in modo rapido ed efficace: una vera sfida che richiede soluzioni flessibili e scalabili.

Oltre ad alcune soluzioni proprietarie come Splunk o Solr, esiste naturalmente Elasticsearch. È uno dei motori di ricerca open source più diffusi. Sebbene sia perfettamente in grado di analizzare grandi quantità di dati, non offre realmente una visione dettagliata del proprio stato – almeno non tramite un'interfaccia grafica. Kibana fa parte dello stack Elastic, ma magari non state eseguendo uno stack Elastic completo (comprendente Elasticsearch, Logstash e Kibana), ma il solo motore di ricerca.

Per tenere traccia di ciò che accade con l'installazione di Elasticsearch, non è necessaria la raccolta completa. È possibile utilizzare qualsiasi altra soluzione di monitoraggio per controllare il motore di ricerca e vedere come si comporta. Questo articolo spiega alcuni concetti di base di Elasticsearch e fornisce alcuni suggerimenti su cosa monitorare. Poi mostreremo come configurare Checkmk per tenere sotto controllo Elasticsearch e le sue prestazioni.

Come funziona Elasticsearch?

Elasticsearch è un motore di ricerca e analisi distribuito e RESTful, basato su Apache Lucene, che offre un motore di ricerca full-text veloce per tutti i tipi di dati strutturati e non strutturati, ad esempio file di log, informazioni finanziarie, dati geografici, ecc. È implementato in Java. Insieme a Logstash (raccolta dati), Beats (spedizione dati) e Kibana (visualizzazione) forma il cosiddetto Elastic Stack, precedentemente noto come ELK stack.

Elasticsearch non è solo veloce, ma anche scalabile: è possibile aggiungere server (i cosiddetti nodi) ai cluster per aumentarne la capacità. Questo funziona perché un indice Elasticsearch è in realtà solo un raggruppamento logico di uno o più shard fisici, dove ogni shard è in realtà un indice autonomo. Distribuendo i documenti su più shard e poi distribuendo questi shard su più nodi, si garantisce la ridondanza. Naturalmente, il software migra automaticamente gli shard quando il cluster cresce o si riduce.

Poiché il motore di ricerca è spesso utilizzato in aree critiche per l'azienda, il monitoraggio del suo stato e delle sue prestazioni è fondamentale. Gli amministratori dovrebbero sempre avere informazioni sui loro cluster Elasticsearch, sui nodi, sugli indici e sugli shard. Se individuano anomalie, probabilmente devono adattare la configurazione e magari aggiungere risorse. Naturalmente, tutte le modifiche apportate alla configurazione devono essere immediatamente visibili nella soluzione di monitoraggio.

Cose da monitorare in Elasticsearch

Quindi, cosa si deve monitorare in Elasticsearch? Abbiamo parlato di nodi, cluster, indici e shard. Diversi nodi formano un cluster e questi nodi, lavorando insieme, aumentano la velocità e garantiscono la ridondanza. Se un nodo si guasta, le prestazioni complessive dell'intero cluster si riducono, quindi è necessario assicurarsi che tutti i nodi funzionino perfettamente. Determinare la quantità di nodi funzionanti e la quantità di nodi dati (responsabili dell'esecuzione delle richieste di ricerca effettive) è solo un aspetto del monitoraggio di Elasticsearch.

Se un cluster è troppo lento a elaborare i suoi compiti o se ci sono molti compiti in sospeso, questo potrebbe essere un'indicazione di una configurazione errata o della necessità di maggiori risorse. È necessario fare attenzione a evitare i time-out e quindi a controllare i tempi di inattività e i task che falliscono.

Ecco un elenco di cose da tenere sempre presenti nei cluster Elasticsearch:

  • Numero di nodi
  • Numero di nodi di dati
  • Attività in sospeso
  • Informazioni dettagliate sui nodi, ad esempio utilizzo della CPU, descrittori di file, memoria, ecc.

Per accelerare il processo di ricerca, Elasticsearch crea un indice. Poiché questo indice diventa sempre più grande, il software può tagliarlo in più parti. Questi frammenti vengono poi distribuiti su diversi nodi di un cluster. Ogni shard può anche avere delle repliche e i nodi che ospitano uno o più shard fungono da coordinatori per delegare tutte le operazioni allo shard corretto. Di solito, i dati correlati vengono memorizzati nello stesso indice, composto da uno o più shard primari e da repliche opzionali. Per quanto riguarda il monitoraggio, spesso si tratta di tenere d'occhio il numero di shard e il loro stato, poiché non è possibile modificare il numero di shard primari una volta creato un indice.

Ecco un elenco di cose da monitorare sugli shard di Elasticsearch:

  • Shard attivi
  • Shard primari attivi
  • Shard attivi (in percentuale)
  • Shard non assegnati e con delay
  • Shard non assegnati
  • Richieste di informazioni su shard in corso
  • Shard rilocati

Oltre a questo, ci sono alcune altre cose che potreste voler sapere sui vostri indici:

  • Numero di documenti (e crescita al minuto)
  • Dimensione (crescita al minuto)
  • Numero totale di documenti
  • Dimensione totale

Come monitorare Elasticsearch con Checkmk

L'impostazione del monitoraggio di Elasticsearch in Checkmk non è complicata. In pratica, si configura la fonte di dati (cioè uno special agent) e il gioco è fatto.

Per prima cosa, create un host su cui Checkmk allocherà tutte le informazioni di stato e le metriche di Elasticsearch. Andate su WATO ➳ Hosts e create un nuovo host facendo clic su Create new host. Nell'area Indirizzo di rete spuntate la casella Famiglia di indirizzi IP e scegliete Nessun IP dal menu a discesa. Dopo aver aperto la sezione Origini dati, attivate la casella di controllo Agente Check_MK. Scegliete Nessun agente Checkmk, tutti gli special agent configurati dal menu a discesa o Agente Checkmk normale, tutti gli special agent configurati se l'agente Checkmk è installato.

02_Creare_Host_neu

Quindi, create una nuova regola. Nel nostro esempio è necessaria la regola Controlla stato di Elasticsearch, che si trova in WATO ➳ Host & Service Parameters inserendo Check state of Elasticsearch nella barra di ricerca. Dovrebbe essere elencata sotto Programmi sorgente dati.

schermo01

Tutte le informazioni della sezione Proprietà della regola sono opzionali. Qui è possibile aggiungere una descrizione e dei commenti. Quindi, aprite la sezione Verifica stato di Elasticsearch e fornite il nome host o l'indirizzo IP dell'istanza di Elasticsearch (casella di testo Nomi host da interrogare). È possibile definire più istanze. Se la connessione alla prima istanza fallisce, Checkmk interrogherà l'istanza successiva. Tuttavia, Checkmk monitorerà solo la prima istanza raggiungibile. Il nome utente e la password dell'utente sono necessari solo se si utilizza l'edizione enterprise di Elasticsearch; l'installazione standard di Elasticsearch viene fornita senza credenziali.
Nota: raramente Elasticsearch viene eseguito sullo stesso server del server di monitoraggio, come mostrato nell'immagine.

Specificate il protocollo e la porta. Se si esegue la configurazione standard di Elasticsearch, il motore di ricerca utilizza HTTP ed è in ascolto sulla porta 9200. Nella sezione Informazioni da interrogare si possono attivare tre caselle di controllo: Salute del cluster, Statistiche dei nodi e Statistiche dei cluster, indici e shard.

Infine, in Host espliciti, impostate l'host creato nel primo passo.
Salvate le impostazioni prima di creare un nuovo oggetto host.

Si tenga presente che Checkmk offre un monitoraggio ancora più completo, se si installa l'agente Checkmk sui nodi Elasticsearch e li si monitora anche in questo modo.

Suggerimento: Checkmk dispone di un'interessante funzione che consente di creare dashboard personalizzate e di combinare tutte le visualizzazioni, i grafici e altri elementi in un'unica pagina. Monitorare i cluster Elasticsearch con una dashboard personalizzata è davvero comodo.

03_Dashboard_neu

Dato che Elasticsearch è scritto in Java, ha senso monitorare l'heap della Java Virtual Machine e la Garbage Collection. È possibile farlo anche con Checkmk e i nostri plug-in di controllo della JVM.

Speriamo che questa sintesi sul monitoraggio di Elasticsearch con Checkmk vi possa essere utile! Fateci sapere cosa ne pensate e di cosa avete bisogno!