Utilizzo del grafico dinamico

Il grafico dinamico è un modello dell'applicazione che comprende tutte le dipendenze fisiche e logiche di componenti come Host, SO, JVM, Cassandra Node, MySQLe così via. Il grafico include anche componenti logici come tracce, applicazioni, servizi, cluster e tablespace. I componenti e le loro dipendenze vengono rilevati automaticamente dal nostro agente e sensori, il che significa che il grafico viene aggiornato in tempo reale.

Ogni nodo nel grafico viene inoltre continuamente aggiornato con informazioni sullo stato come metriche, dati di configurazione e un valore di integrità calcolato basato sulla conoscenza semantica e su un approccio di machine learning. Questa conoscenza analizza anche le dipendenze nel grafico per trovare raggruppamenti logici, come servizi e applicazioni, per comprendere l'impatto su quel livello e derivare la criticità dei problemi. L'intero grafico è persistente, il che significa che l'applicazione Instana può andare avanti e indietro nel tempo per sfruttare l'intera knowledge base del grafico per molti casi di utilizzo operativi.

In base al grafico dinamico, calcoliamo l'impatto di modifiche e problemi sull'applicazione o sul servizio e, se l'impatto è critico, combiniamo una serie di problemi e modifiche correlati in un Incidente. Un incidente mostra come i problemi e le modifiche si evolvono nel tempo, consentendo a Instana di indicare direttamente la causa principale dell'incidente. Qualsiasi modifica viene quindi rilevata automaticamente e viene calcolato il relativo impatto sui nodi circostanti. Una modifica può essere una degradazione dello stato (che chiamiamo un "problema"), una modifica della configurazione, una distribuzione o una comparsa / scomparsa di un processo, contenitore o server.

Per rendere questo concreto, vediamo come modellare e comprendere una semplice applicazione che utilizza il cluster Elasticsearch per cercare un prodotto utilizzando un'interfaccia web. In realtà, questo potrebbe essere solo un µ Service, ma mostra come comprendiamo i cluster e le dipendenze in Instana.

Applicazioni dinamiche

Sviluppiamo un modello del grafico dinamico per il cluster Elasticsearch per capire come funziona e perché è utile in ambienti distribuiti e fluidi.

Si inizia con un singolo nodo Elasticsearch , che tecnicamente è un'applicazione Java, quindi il grafico è simile al seguente:

Grafico nodo ES

I nodi mostrano i componenti rilevati automaticamente sull'host e le relazioni. Per un nodo Elasticsearch , è possibile rilevare una JVM, un processo, un contenitore Docker (se il nodo viene eseguito all'interno di un contenitore) e l'host su cui è in esecuzione. Se è in esecuzione in un ambiente cloud come Amazon AWS, scopriremo anche la sua zona di disponibilità e la aggiungeremo al grafico.

Ogni nodo ha proprietà (come JVM_Version=1.7.21) e tutte le metriche pertinenti in tempo reale, ad esempio le statistiche di rete e di I/O dell'host, le statistiche di raccolta dati inutilizzati della JVM e il numero di documenti indicizzati dal nodo ES.

I margini tra i nodi descrivono le loro relazioni. In questo caso, si tratta di relazioni "in esecuzione". Ad esempio, il nodo ES viene eseguito su JVM.

Per un cluster Elasticsearch , avremmo più nodi che stanno creando il cluster.

Grafico cluster ES

In questo caso, cosa abbiamo aggiunto un nodo cluster al grafo che rappresenta lo stato e l'integrità dell'intero cluster. Ha dipendenze su tutti e quattro nodi Elasticsearch che comprendono il cluster.

L'unità logica di Elasticsearch è l'indice - l'indice viene utilizzato dalle applicazioni per accedere a documenti in Elasticsearch. È fisicamente strutturato in frammenti distribuiti ai nodi ES nel cluster.

Aggiungiamo l'indice al grafico per comprendere le statistiche e lo stato dell'indice utilizzato dalle applicazioni.

Grafico indice ES

Inoltre, si presume che si acceda all'indice Elasticsearch con una semplice applicazione Spring Boot .

Ora il grafico include l'applicazione Spring Boot .

Grafico Spring Boot

Poiché il sensore Java Instana registra le tracce distribuite, Instana saprà se l'applicazione Spring Boot accede a un indice Elasticsearch . Correliamo queste tracce con i componenti logici nel grafo e tracciamo le statistiche e l'integrità sulle diverse tracce.

Utilizzando questo grafico, possiamo comprendere diversi problemi di Elasticsearch e mostrare come analizziamo l'impatto sull'integrità generale del servizio.

Supponiamo di avere due diversi problemi:

  1. Si è verificato un problema I/O su un host che ha causato la lentezza della lettura / scrittura sui dati di indice / partizione.
  2. Il pool di thread in un nodo Elasticsearch è sovraccaricato in modo che le richieste vengano accodate poiché non possono essere gestite fino a quando un thread non è libero.

Incidente grafico

Descrizione evento imprevisto

In questo caso, l'host (1) inizia ad avere problemi I/O. La nostra intelligenza sanitaria mostrerebbe la salute dell'host come gialla e quindi farebbe scoppiare un problema al nostro rilevatore di problemi. Pochi minuti dopo, il nodo ES (Elasticsearch) (2) ne sarebbe interessato e la nostra intelligence sull'integrità potrebbe vedere che la velocità di trasmissione su questo nodo è ridotta a un livello che contrassegna questo nodo come giallo, riattivando un problema. Il nostro motore correlerebbe quindi i due problemi e li aggiungerebbe a un incidente, che non sarebbe contrassegnato come problematico come in questo caso, l'integrità del cluster è ancora buona in modo che la qualità del servizio non venga influenzata.

Quindi, su un altro nodo ES (3), il pool di thread per l'elaborazione delle query viene riempito e le richieste vengono messe in pool. Poiché le prestazioni sono fortemente influenzate da questo, il nostro motore contrassegna lo stato del nodo come rosso. Ciò influisce sul cluster ES (4), che diventa giallo, poiché la velocità di trasmissione è in diminuzione. I due problemi generati vengono aggregati all'incidente iniziale.

Poiché il cluster influenza le prestazioni dell'indice (5), contrassegniamo l'indice come giallo e aggiungiamo il problema all'incidente. Ora le prestazioni delle transazioni di ricerca del prodotto vengono influenzate e la nostra analisi delle prestazioni contrassegnerà la transazione come gialla (6), che influisce anche sulla salute dell'applicazione (7).

Poiché sia l'applicazione che la transazione vengono effettuate, il nostro incidente verrà effettivamente attivato con uno stato giallo che indica che le prestazioni di ricerca del prodotto stanno diminuendo e che gli utenti sono interessati. Il percorso delle due cause principali viene evidenziato - il problema I/O e il problema del pool di thread. Come si vede nello screenshot, Instana mostrerà l'evoluzione dell'incidente, e l'utente può eseguire il drill nei componenti nel momento in cui il problema stava accadendo - incluso l'ambiente storico esatto e le metriche in quel momento.

Questo mostra le funzionalità uniche di Instana:

  • Combinazione di informazioni fisiche, di processo e di traccia utilizzando il grafico per comprendere le relative dipendenze.
  • Intelligenza per comprendere lo stato dei singoli componenti, ma anche lo stato di cluster, applicazioni e tracce.
  • Analisi di impatto intelligente per capire se un problema è critico o meno.
  • Mostra la causa principale di un problema e fornisci informazioni e contesto utilizzabili.
  • Conserva la cronologia del grafo, le sue proprietà, le metriche, le modifiche e i problemi e fornisce una funzione "timeshift" per analizzare qualsiasi problema dato con una vista chiara sullo stato e le dipendenze di tutti i componenti.

Trovare la causa principale negli ambienti moderni diventerà più impegnativo solo nei prossimi anni. Il semplice esempio precedente ha mostrato che trovare la causa principale non è un'attività banale senza comprendere il contesto, le dipendenze e l'impatto. Ora pensate ai sistemi "liquidi" basati su µ Services che aggiungono e rimuovono continuamente i servizi con le nuove release distribuite frequentemente - Instana tiene traccia dello stato e della salute in tempo reale, e comprende qualsiasi impatto di questi cambiamenti o problemi. Questo è tutto fatto senza alcuna configurazione manuale e in tempo reale.

Utilizzo

Il grafico dinamico viene creato e aggiornato automaticamente. La definizione di alcuni componenti, come i servizi, può essere ulteriormente specificata tramite la configurazione del servizio.

L'attraversamento del grafico e l'ambito possono essere realizzati utilizzando la nostra potente focalizzazione dinamica .