Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Ricordiamo che alla base di Elastic Stack ci sono un database non relazionale Elasticsearch, un'interfaccia web Kibana e i raccoglitori di dati (il più noto è Logstash, accompagnato da diverse Beats, APM e altri). Una delle piacevoli aggiunte di questo intero stack di prodotti è l'analisi dei dati tramite algoritmi di machine learning. In questo articolo esploreremo cosa sono questi algoritmi. Vi invitiamo a leggere di più.

Il machine learning è una funzione a pagamento dell'Elastic Stack a carattere freemium e fa parte del pacchetto X-Pack. Per iniziare a usarlo, basta attivare un trial di 30 giorni dopo l'installazione. Al termine del periodo di prova, si può richiedere supporto per un'estensione o acquistare un abbonamento. Il costo dell'abbonamento non si basa sul volume dei dati, ma sul numero di nodi utilizzati. Certo, il volume dei dati influisce sul numero di nodi necessari, ma questo approccio alla licenza è più sostenibile per il budget dell'azienda. Se non è necessaria un'elevata performance, è possibile risparmiare.

ML in Elastic Stack è scritto in C++ e funziona al di fuori della JVM, dove gira Elasticsearch stesso. Questo significa che il processo (che si chiama autodetect) consuma tutto ciò che la JVM non riesce a elaborare. Su un ambiente di dimostrazione questo non è così critico, ma in un ambiente produttivo è importante dedicare nodi separati per i compiti di ML.

Gli algoritmi di machine learning si dividono in due categorie — con supervisione e senza supervisione. In Elastic Stack l'algoritmo appartiene alla categoria 'senza supervisione'. Puoi questo link consultare la base matematica degli algoritmi di machine learning.

Per effettuare un'analisi, l'algoritmo di machine learning utilizza i dati conservati negli indici di Elasticsearch. È possibile creare incarichi per l'analisi sia dall'interfaccia di Kibana che tramite API. Se lo fai tramite Kibana, alcune informazioni non sono necessarie. Ad esempio, gli indici aggiuntivi che l'algoritmo utilizza durante il processo.

Indici aggiuntivi utilizzati durante l'analisi.ml-state — informazioni sui modelli statistici (impostazioni di analisi);
.ml-anomalies-* — risultati dell'operato degli algoritmi di ML;
.ml-notifications — impostazioni di notifica sui risultati dell'analisi.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

La struttura dei dati nel database Elasticsearch è composta da indici e dai documenti in essi memorizzati. Se confrontato con un database relazionale, l'indice può essere paragonato a uno schema di database, mentre il documento a una riga in una tabella. Questo confronto è indicativo e serve a semplificare la comprensione del materiale successivo per chi ha solo sentito parlare di Elasticsearch.

Attraverso l'API è disponibile la stessa funzionalità che troviamo nell'interfaccia web, pertanto, per chiarezza e comprensione dei concetti, mostreremo come configurare utilizzando Kibana. Nel menu a sinistra c'è la sezione Machine Learning, dove è possibile creare un nuovo task (Job). Nell'interfaccia di Kibana questo appare come nell'immagine sottostante. Ora analizzeremo ogni tipo di task e mostreremo i tipi di analisi che si possono costruire qui.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Single Metric — analisi di una singola metrica, Multi Metric — analisi di due o più metriche. In entrambi i casi, ogni metrica viene analizzata in un ambiente isolato, cioè l'algoritmo non tiene conto del comportamento delle metriche analizzate simultaneamente, come potrebbe sembrare nel caso di Multi Metric. Per effettuare un calcolo tenendo conto della correlazione di diverse metriche, si può applicare un'analisi della popolazione. Advanced — è una finezza degli algoritmi con opzioni aggiuntive per compiti specifici.

Single Metric

L'analisi delle variazioni di una singola metrica è la cosa più semplice che si possa fare qui. Dopo aver cliccato su Crea Lavoro, l'algoritmo cercherà anomalie.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Nel campo Aggregazione puoi scegliere l'approccio per la ricerca di anomalie. Ad esempio, nel Min si considereranno anomali i valori al di sotto dei livelli tipici. Ci sono Max, Hign Mean, Low, Mean, Distinct e altri. Puoi vedere la descrizione di tutte le funzioni al link.

Nel campo Campo si indica il campo numerico nel documento su cui effettuare l'analisi.

Nel campo Bucket span — granularità degli intervalli sulla timeline che sarà analizzata. Puoi fidarti dell'automatismo o scegliere manualmente. Nell'immagine sotto è riportato un esempio di granularità troppo bassa — potresti perdere un'anomalia. Con questa impostazione puoi modificare la sensibilità dell'algoritmo alle anomalie.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

La durata dei dati raccolti è un elemento chiave che influisce sull'efficacia dell'analisi. Durante l'analisi, l'algoritmo determina gli intervalli ripetitivi, calcola l'intervallo di confidenza (le linee di base) e identifica le anomalie — deviazioni non comuni dal comportamento normale della metrica. Solo per esempio:

Linee di base su un breve intervallo di dati:

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Quando l'algoritmo ha qualcosa su cui imparare — le linee di base appaiono così:

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Dopo l'avvio del compito, l'algoritmo identifica le deviazioni anomale dalla norma e le classifica in base alla probabilità di anomalia (il colore corrispondente è indicato tra parentesi):

Warning (blu): meno di 25
Minor (giallo): 25-50
Major (arancione): 50-75
Critical (rosso): 75-100

Nel grafico qui sotto è mostrato un esempio con le anomalie trovate.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Qui si vede il numero 94, che indica la probabilità di un'anomalia. È chiaro che poiché il valore è vicino a 100, abbiamo di fronte un'anomalia. Nella colonna sotto il grafico è indicata una probabilità estremamente bassa dello 0,000063634% che lì si trovi un valore della metrica.

Oltre alla ricerca di anomalie in Kibana, è possibile avviare la previsione. Questo è molto semplice e dallo stesso visualizzatore delle anomalie — il pulsante Forecast nell'angolo in alto a destra.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

La previsione è costruita al massimo per 8 settimane in avanti. Anche se lo desideri molto — non si può andare oltre per progettazione.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

In alcune situazioni, la previsione sarà molto utile, ad esempio quando si monitora il carico utente sull'infrastruttura.

Multi Metric

Passiamo alla successiva possibilità di ML nell'Elastic Stack — l'analisi di più metriche in una volta. Ma ciò non significa che si analizzerà la dipendenza di una metrica da un'altra. È lo stesso di Single Metric, solo che ci sono molte metriche su un unico schermo per facilitare il confronto dell'influenza di una sull'altra. Parleremo dell'analisi della dipendenza di una metrica dall'altra nella parte Population.

Dopo aver cliccato sul quadrato con Multi Metric apparirà una finestra con le impostazioni. Ci soffermeremo su queste più nel dettaglio.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Per iniziare, è necessario selezionare i campi per l'analisi e aggregare i dati in base a essi. Le opzioni di aggregazione sono le stesse di quelle per Single Metric (Max, Hign Mean, Low, Mean, Distinct e altri). Successivamente, i dati possono essere suddivisi per uno dei campi (campo Split Data). Nell'esempio, abbiamo fatto questo in base al campo OriginAirportID. Nota che il grafico delle metriche a destra ora è rappresentato come un insieme di grafici.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Campo Key Fields (Influencers) influisce direttamente sulle anomalie trovate. Per impostazione predefinita, ci sarà sempre almeno un valore, ma puoi aggiungerne altri. L'algoritmo considererà l'influenza di questi campi durante l'analisi e mostrerà i valori più "influenzanti".

Dopo l'esecuzione, nell'interfaccia di Kibana apparirà un'immagine simile a questa.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Questa è la cosiddetta mappa di calore delle anomalie per ciascun valore del campo OriginAirportID, che abbiamo indicato in Split Data. Come nel caso di Single Metric, il colore rappresenta il livello di deviazione anomala. Un'analisi simile è comoda da fare, ad esempio, per le stazioni di lavoro per monitorare quelle con un numero sospetto di autorizzazioni, ecc. Abbiamo già scritto sugli eventi sospetti in EventLog Windows, che possono anch'essi essere raccolti e analizzati qui.

Sotto la mappa termica c'è l'elenco delle anomalie, ognuna della quale può essere selezionata per visualizzare la Singola Metrica per un'analisi dettagliata.

Popolazione

Per cercare anomalie tra le correlazioni tra diverse metriche in Elastic Stack, è disponibile un'analisi della Popolazione. Proprio grazie a questa si possono ricercare valori anomali nelle prestazioni di un server rispetto agli altri, per esempio, con un aumento del numero di richieste al sistema target.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

In questa illustrazione, nel campo Popolazione, è indicato il valore rispetto al quale saranno analizzate le metriche. In questo caso, si tratta del nome del processo. Di conseguenza, vedremo come il carico della CPU di ciascuno dei processi ha influenzato l'uno sull'altro.

Si nota che il grafico dei dati analizzati è diverso rispetto a quelli di Singola Metrica e Multi Metrica. Questo è stato progettato in Kibana per migliorare la percezione della distribuzione dei valori dei dati analizzati.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Dal grafico risulta che il processo ha mostrato un comportamento anomalo stress (per la cronaca, generato da un'utilità speciale) sul server poipu, che ha influito (o è stato l'influencer) sulla comparsa di questa anomalia.

Advanced

Analisi con impostazioni dettagliate. Con l'analisi avanzata in Kibana vengono visualizzate ulteriori configurazioni. Dopo aver cliccato nel menu di creazione sulla piastrella Avanzato, appare una finestra come questa con varie schede. La scheda Dettagli del lavoro è stata intenzionalmente omessa, poiché contiene impostazioni di base non direttamente correlate alla configurazione dell'analisi.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

In summary_count_field_name è possibile specificare opzionalmente il nome di un campo nei documenti contenente valori aggregati. In questo esempio — il numero di eventi al minuto. In categorization_field_name si indica il nome del campo nei documenti che contiene un valore variabile. Sulla base di questo campo è possibile suddividere i dati analizzati in sottoinsiemi. Nota il pulsante Aggiungi rilevatore nell'illustrazione precedente. Qui sotto il risultato della pressione di questo pulsante.

Esplorando il Machine Learning in Elastic Stack (noto anche come Elasticsearch, noto come ELK)

Qui c'è un blocco aggiuntivo di impostazioni per configurare il rilevatore di anomalie per uno specifico compito. I casi specifici d'uso (soprattutto in merito alla sicurezza) verranno approfonditi nei prossimi articoli. Per esempio, guarda uno dei casi esaminati. È collegato alla ricerca di valori raramente presenti e viene realizzato tramite la funzione rare.

Nel campo function è possibile selezionare una specifica funzione per la ricerca di anomalie. Oltre a rared, ci sono anche un paio di funzioni interessanti — time_of_day e time_of_week. Queste evidenziano anomalie nel comportamento delle metriche durante il giorno o la settimana, rispettivamente. Altre funzioni di analisi sono disponibili nella documentazione.

In field_name indica il campo del documento su cui verrà effettuata l'analisi. By_field_name può essere utilizzato per separare i risultati dell'analisi per ciascun valore specificato di questo campo del documento. Se riempi over_field_name si otterrà un'analisi della popolazione, come esaminato in precedenza. Se specifichi un valore in partition_field_name, allora su questo campo del documento verranno calcolate linee base separate per ciascun valore (ad esempio, il nome del server o il processo sul server può fungere da valore). In exclude_frequent puoi scegliere all o none, il che significa escludere (o includere) valori frequenti dei campi dei documenti.

In questo articolo abbiamo cercato di fornire una panoramica concisa sulle capacità del machine learning in Elastic Stack, ma ci sono ancora molti dettagli da esplorare. Raccontateci nei commenti quali casi avete risolto utilizzando Elastic Stack e per quali compiti lo utilizzate. Potete contattarci tramite messaggi privati su Habr o il modulo di contatto sul sito.

Fonte: habr.com

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster