Rilevamento e monitoraggio automatici

Il rilevamento e il monitoraggio automatici consentono una gestione efficiente e adattiva del sistema, garantendo una copertura completa dei componenti fisici, logici e aziendali nelle applicazioni su larga scala. Questo approccio rileva le anomalie in tempo reale per ridurre al minimo l'impatto dei guasti. Questa soluzione di monitoraggio avanzata offre un approccio completo e flessibile alla gestione dei sistemi, fondamentale per garantire l'affidabilità e le prestazioni delle applicazioni moderne e dinamiche.

Gli strumenti tradizionali di monitoraggio delle prestazioni applicative ( Application Performance Management, APM) consentono di esaminare e correlare manualmente i dati per individuare colli di bottiglia ed errori negli ambienti di produzione. Tuttavia, gli strumenti APM tradizionali devono affrontare sfide quali la risoluzione dei problemi causati dalla complessità delle operazioni su larga scala e dalla natura dinamica dei sistemi moderni. È necessario mettere in relazione tra loro i componenti e gli indicatori per individuare i problemi.

Un approccio basato sull'apprendimento automatico offre un notevole miglioramento nella gestione del sistema. Per ottenere risultati ottimali, questo approccio deve basarsi su un modello di base solido ed esaustivo. Le applicazioni basate su microservizi sono costituite da numerosi elementi costitutivi, in continua evoluzione. Pertanto, è necessario comprendere tutti i blocchi e le loro dipendenze, il che richiede un approccio avanzato all'individuazione.

Componenti del rilevamento e del monitoraggio automatici

Il rilevamento e il monitoraggio automatici riguardano i componenti fisici, i componenti logici e i componenti aziendali.

Componenti fisici

La tabella seguente illustra i componenti fisici e le relative descrizioni:

Componenti Descrizione
Data center o zone di disponibilità Queste zone sono presenti in diversi continenti e regioni. Possono avere esito negativo o avere caratteristiche di prestazioni differenti.
Host o macchine Che siano fisici, virtuali o forniti come servizio. Ogni host dispone di risorse, quali CPU, memoria e I/O, che possono costituire un collo di bottiglia. Ogni host viene eseguito in una zona.
Contenitori Funziona su un host e richiede uno scheduler, come Kubernetes, per gestire i container.
Processi Funziona all'interno di un container o sull'host. I processi possono includere ambienti di esecuzione, come Java o PHP, e middleware, come Tomcat, Oracle o Elasticsearch.
Cluster Molti servizi possono operare come un gruppo o un cluster, in modo da presentarsi al mondo esterno come un unico processo distribuito. Il numero di istanze in un cluster può essere modificato e può avere un impatto sulle prestazioni del cluster.

Componenti logici

La tabella seguente illustra i componenti logici e le relative descrizioni:

Componenti Descrizione
Servizi Unità logiche di lavoro che possono avere più istanze e diverse versioni e che funzionano sulla base dei componenti fisici menzionati in precedenza.
Endpoint API e pubblica di un servizio per rendere disponibili comandi specifici al resto del sistema.
Prospettive applicative o Applicazioni Una visione d'insieme di una serie di servizi e endpoint definiti da un contesto comune e dichiarati tramite tag.
Tracce Sequenza di comunicazioni sincrone e asincrone tra servizi. I servizi comunicano tra loro e forniscono un risultato per una richiesta utente. Il processo di trasformazione dei dati in un flusso di dati potrebbe coinvolgere molti servizi.
Chiamate Richiesta tra due servizi. Una traccia è composta da una o più chiamate.

Componenti business

La tabella seguente illustra le componenti aziendali e le relative descrizioni:

Componenti Descrizione
Servizi di business Iniziative che combinano servizi e applicazioni per offrire un valore aggiunto unico e servizi esclusivi.
Processo di business Insieme di passaggi tecnici che costituiscono un processo. Ad esempio, potrebbe rappresentare la traccia relativa all’“acquisto” nell’e-commerce, seguita dalla traccia dell’ordine nel sistema ERP e infine dalla traccia della logistica dell’ FedEx's e nella fase di consegna ai clienti.

È normale che migliaia di istanze di servizio, in diverse versioni, in esecuzione su centinaia di host distribuiti in più zone e continenti, forniscano un'applicazione ai propri utenti. Ciò crea una rete di dipendenze tra i componenti che devono funzionare perfettamente insieme in modo che sia garantita la qualità del servizio dell'applicazione e venga fornito il valore di business. Uno strumento di monitoraggio tradizionale potrebbe avvisare quando un singolo componente supera una soglia. Tuttavia, il malfunzionamento di uno o più di questi componenti non significa che la qualità dell'applicazione sia sicuramente influenzata. Pertanto, i moderni strumenti di monitoraggio devono comprendere l'intera rete di componenti e le loro interdipendenze per monitorare, analizzare e prevedere efficacemente la qualità del servizio.

Identificazione e catalogazione delle modifiche

Il numero di servizi e delle loro dipendenze nelle applicazioni moderne è superiore rispetto a quello delle applicazioni basate sull'architettura orientata ai servizi (SOA), il che rappresenta una sfida per gli strumenti di monitoraggio. L'elevata frequenza delle modifiche alle applicazioni, dovuta alle metodologie di continuous delivery, agli strumenti di automazione e alle piattaforme container, non fa che aggravare il problema. In questo contesto in continua evoluzione, stare al passo manualmente con i cambiamenti e configurare costantemente gli strumenti di monitoraggio per i blocchi appena implementati risulta poco pratico.

Per affrontare questa sfida, una soluzione di monitoraggio moderna deve individuare automaticamente e istantaneamente ogni blocco prima di analizzarlo e comprenderlo. Questa funzionalità contribuisce a garantire che le modifiche successive siano collegate tra loro, consentendo di ricostruire una modalità in qualsiasi momento per indagare sugli incidenti.

Le modifiche possono verificarsi in qualsiasi blocco di creazione in qualsiasi momento, come mostrato nella seguente immagine:

Figura 1. Rilevamento automatico
Modifiche

Il processo di analisi approfondita di Instana

Instana Dynamic APM si basa sull'architettura dell'agente " Instana ", che utilizza dei sensori. I sensori sono programmi automatizzati di piccole dimensioni progettati per monitorare entità specifiche. Questi sensori sono gestiti da un unico agente (uno per ogni host), che viene distribuito come processo autonomo sull'host o come container tramite lo scheduler dei container.

L'agente rileva e monitora automaticamente vari componenti fisici, quali AWS, le zone di disponibilità Docker, i container in esecuzione sull'host o Kubernetes, i processi, quali HAProxy, Nginx, JVM, Spring Boot, Postgres, Cassandra o Elasticsearch, e persino i cluster di questi processi, come ad esempio un cluster Cassandra. Per ogni componente rilevato, l'agente raccoglie i relativi dati di configurazione e avvia il monitoraggio delle modifiche. Inoltre, invia ogni secondo i dati di monitoraggio essenziali relativi a ciascun componente. L'agente rileva e utilizza automaticamente le metriche fornite dai servizi, come JMX o Dropwizard.

Figura 2. Rilevamento automatico dell'agente
Agent

Successivamente, l'agente inserisce funzioni di tracciamento nel codice del servizio. Ad esempio, intercetta le chiamate all' HTTP, le chiamate al database e le query rivolte a Elasticsearch. L'agente registra il contesto di ogni chiamata, come le tracce dello stack o il payload.

L'elaborazione e l'analisi dei dati acquisiti, che consentono di trasformarli in tracce, identificare dipendenze e servizi e rilevare anomalie e problemi, vengono eseguite sul server. Pertanto, l'agente è compatto e può essere installato su migliaia di host.

Instana è progettato per garantire un rilevamento automatico, immediato e continuo per la nuova generazione di soluzioni di monitoraggio.

Raccolta di dati

Instana è una soluzione di monitoraggio che utilizza un unico agente con più sensori e supporta centinaia di tecnologie. I sensori vengono rilevati e monitorati automaticamente, e i dati vengono trasmessi all'agente. L'agente gestisce tutte le comunicazioni con il motore di qualità del servizio di Instana. Una volta individuato, i sensori raccolgono dati dettagliati sullo stato del componente, in base alla tecnologia specifica. I sensori vengono aggiornati, caricati e scaricati dall'agente. Un'interfaccia a riga di comando opzionale consente di accedere allo stato dell'agente, ai singoli sensori e ai registri dell'agente. Per ulteriori informazioni, consultare la sezione "Configurazione e monitoraggio delle tecnologie supportate".

Il sensore raccoglie i seguenti dati:

  • Configurazione: cataloghi le impostazioni e gli stati correnti per tenere traccia di eventuali modifiche.
  • Eventi: rilevamento iniziale, modifiche di stato (in linea e non in linea), eventi integrati che attivano problemi o incidenti basati su regole di integrità non riuscite sulle entità e eventi personalizzati che attivano problemi o incidenti basati sulle soglie di una singola metrica di qualsiasi entità.
  • Tracce: Acquisisce la traccia in base alla piattaforma del linguaggio di programmazione.
  • Metriche: attributi qualitativi della tecnologia che indicano le prestazioni.

I sensori di Instana eseguono un rilevamento ricorsivo; ad esempio, il sensore " Java Machine" procede a monte nella catena per individuare framework quali Tomcat o SpringBoot. In base ai risultati dell'analisi, il sensore aiuta l'agente a caricare i sensori aggiuntivi appropriati. Inoltre, la funzionalità di intelligence di Instana consente di elaborare e analizzare i dati, identificare dipendenze e servizi e rilevare anomalie e problemi che si verificano sul server. Pertanto, l'agente è leggero e può essere installato su migliaia di host.

Figura 3 Raccolta di dati
Qualificata

Il backend di Instana utilizza la tecnologia di streaming, in grado di elaborare milioni di eventi al secondo trasmessi in streaming dagli agenti. Questo motore di streaming è in tempo reale e impiega solo 3 secondi per elaborare la situazione e visualizzarla all'utente.