Monitora e traccia i microservizi con Application Performance Monitoring su Oracle Cloud

Il monitoraggio dei microservizi può essere difficile a causa della complessità della loro architettura e del loro modello di distribuzione distribuito.

Le applicazioni di microservizi possono essere costituite da migliaia di servizi indipendenti distribuiti in molti sistemi diversi, mentre ogni servizio viene eseguito con il relativo processo. Gli approcci di monitoraggio tradizionali che si concentrano su risorse specifiche e monitoraggi dello stato non sono più efficaci quando si traccia il flusso delle transazioni o si eseguono debug dei problemi nelle applicazioni di microservizi.

Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) abilita la strumentazione automatica OpenTracing sui microservizi e acquisisce transazioni utente end-to-end complete per aiutarti a comprendere sia la user experience che le prestazioni delle applicazioni. APM include un'implementazione del sistema di trace distribuito che consente il trace a livello di istanza, end-to-end e delle transazioni. Consente inoltre il monitoraggio di app server e metriche aziendali.

Architettura

Questa architettura di riferimento illustra come utilizzare Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) per monitorare un'applicazione di microservizi distribuita sul cluster OCI Kubernetes Engine (OKE).

I diagrammi di architettura riportati di seguito mostrano un'applicazione di microservizi distribuita in un cluster Kubernetes. L'applicazione è ospitata su un server applicazioni con due repliche di distribuzione e si connette a un Oracle Autonomous Database utilizzando JDBC. Gli utenti finali accedono all'applicazione tramite un'interfaccia Web ospitata in Oracle Cloud. Ogni diagramma mostra un approccio diverso:

  • Operatore OpenTelemetry: il primo approccio utilizza l'operatore Kubernetes per semplificare l'inserimento automatico degli agenti Java nelle virtual machine (JVM) Java in esecuzione nei pod Kubernetes.

  • File system condiviso: il secondo approccio utilizza un file system condiviso per eseguire il provisioning e distribuire un agente APM.

Entrambi i metodi possono monitorare gli application server o i framework Java, come Oracle WebLogic Server o Spring Boot, distribuiti su Kubernetes.

Il diagramma riportato di seguito mostra l'implementazione dell'operatore OpenTelemetry.



apm-microservizi-telemetria aperta-oracle.zip

I flussi di dati in questa architettura sono i seguenti:

R: distribuisci l'agente Java APM sui pod Kubernetes.
  1. Creare un dominio APM in OCI e ottenere l'URL dell'endpoint di caricamento dati e le chiavi dati private e pubbliche del dominio.
  2. Crea un file system condiviso in OCI e crea oggetti di storage Kubernetes, ad esempio un volume persistente nel cluster OKE.
  3. Scaricare l'agente Java APM dal dominio APM ed eseguirne il provisioning nel volume di cui è stato eseguito il MOUNT.
  4. Distribuire l'agente APM nell'applicazione aggiornando i file YAML per le distribuzioni Kubernetes o StatefulSets.

B: l'operatore OpenTelemetry scarica automaticamente l'agente Java nella cache locale. L'agente Java viene installato in locale su ciascuna replica del cluster OKE.

C: i trace, gli intervalli e le metriche del server e JDBC vengono inviati al dominio APM. Dopo il riavvio dei pod Kubernetes, i trace e gli intervalli dal server vengono inviati al dominio APM in cui si trova l'URL dell'endpoint di caricamento dati.

D: i trace, gli intervalli e le metriche del browser vengono inviati al dominio APM. I dati raccolti possono essere visualizzati nei dashboard APM e Trace Explorer per l'analisi delle prestazioni e della disponibilità.

Il diagramma riportato di seguito mostra l'implementazione del file system condiviso.



apm-microservizi-arc-oracle.zip

I flussi di dati in questa architettura sono i seguenti:

R: distribuisci l'agente Java APM sui pod Kubernetes.
  1. Creare un dominio APM in OCI e ottenere l'URL dell'endpoint di caricamento dati e le chiavi dati private e pubbliche del dominio.
  2. Crea un file system condiviso in OCI e crea oggetti di storage Kubernetes, ad esempio un volume persistente nel cluster OKE.
  3. Scaricare l'agente Java APM dal dominio APM ed eseguirne il provisioning nel volume di cui è stato eseguito il MOUNT.
  4. Distribuire l'agente APM nell'applicazione aggiornando i file YAML per le distribuzioni Kubernetes o StatefulSets.

B: i trace, gli intervalli e le metriche del server e JDBC vengono inviati al dominio APM. Dopo il riavvio dei pod Kubernetes, i trace e gli intervalli dal server vengono inviati al dominio APM in cui si trova l'URL dell'endpoint di caricamento dati.

C: i trace, gli intervalli e le metriche del browser vengono inviati al dominio APM. I dati raccolti possono essere visualizzati nei dashboard APM e Trace Explorer per l'analisi delle prestazioni e della disponibilità.

Questa architettura comprende i seguenti componenti:

  • Tenancy

    Una tenancy è una partizione sicura e isolata che Oracle imposta all'interno di Oracle Cloud quando ti iscrivi a Oracle Cloud Infrastructure. È possibile creare, organizzare e amministrare le risorse in OCI nella tenancy. Una tenancy è sinonimo di azienda o organizzazione. In genere, un'azienda avrà una singola tenancy e rifletterà la propria struttura organizzativa all'interno di tale tenancy. Una singola tenancy viene in genere associata a una singola sottoscrizione e una singola sottoscrizione di solito ha una sola tenancy.

  • Area

    Un'area geografica Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, che ospitano domini di disponibilità. Le regioni sono indipendenti da altre regioni e grandi distanze possono separarle (tra paesi o addirittura continenti).

  • Compartimento

    I compartimenti sono partizioni logiche tra più aree all'interno di una tenancy Oracle Cloud Infrastructure. Usare i compartimenti per organizzare, controllare l'accesso e impostare le quote d'uso per le risorse Oracle Cloud. In un determinato compartimento, si definiscono i criteri che controllano l'accesso e impostano i privilegi per le risorse.

  • Rete cloud virtuale (VCN) e subnet

    Una VCN è una rete personalizzabile e definita dal software configurata in un'area Oracle Cloud Infrastructure. Come le tradizionali reti di data center, le reti VCN consentono di controllare l'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo aver creato la VCN. Puoi segmentare una VCN in subnet, che possono essere definite in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet nella VCN. È possibile modificare le dimensioni di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

    In questa architettura, tutte le istanze di computazione che ospitano il cluster Reds sono collegate a una singola subnet regionale.

  • Liste di sicurezza

    Per ogni subnet, puoi creare regole di sicurezza che specificano l'origine, la destinazione e il tipo di traffico consentito all'interno e all'esterno della subnet.

    Questa architettura aggiunge le regole di entrata per le porte TCP 16379 e 6379. La porta 6379 serve i client Reds e la porta 16379 viene utilizzata dal bus cluster Reds.

  • Motore Kubernetes

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine o OKE) è un servizio completamente gestito, scalabile e ad alta disponibilità da utilizzare per distribuire le applicazioni containerizzate nel cloud. Puoi specificare le risorse di computazione richieste dalle tue applicazioni e Kubernetes Engine le esegue sul Oracle Cloud Infrastructure in una tenancy esistente. OKE utilizza Kubernetes per automatizzare l'implementazione, la scalabilità e la gestione di applicazioni containerizzate tra cluster di host.

  • Autonomous Transaction Processing

    Oracle Autonomous Transaction Processing è un servizio di database a gestione autonoma, protezione automatica e funzionalità di autoriparazione ottimizzato per i carichi di lavoro di elaborazione delle transazioni. Non è necessario configurare o gestire alcun componente hardware né installare software. Oracle Cloud Infrastructure gestisce la creazione, il backup, l'applicazione di patch, l'upgrade e il tuning del database.

  • Monitoraggio delle prestazioni delle applicazioni

    Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) è una soluzione basata su platform as a service (PaaS) che offre una visibilità approfondita sulle prestazioni della tua applicazione, dall'utente finale ai log delle applicazioni. Il servizio integra le informazioni sulla user experience, le metriche delle applicazioni e l'analisi dei dati di log.

    • Dominio APM

      Il dominio APM è un tipo di risorsa Oracle Cloud Infrastructure (OCI) che contiene i sistemi monitorati da APM.

      Ogni dominio APM viene creato in un compartimento OCI standard ed è possibile definire criteri di controllo dell'accesso OCI per concedere l'accesso al dominio APM a un set specifico di utenti.

    • Chiavi dati

      Le chiavi dati sono necessarie per garantire che APM accetti le osservazioni raccolte dalle origini dati. Le chiavi dati vengono generate al momento della creazione di un dominio APM e sono di due tipi: chiave dati pubblica e chiave dati privata.

    • URL endpoint caricamento dati

      l'endpoint di caricamento dati è l'URL a cui un'origine dati invia le osservazioni. L'endpoint di caricamento dati viene generato quando viene creato un dominio APM e ogni dominio APM dispone del relativo endpoint di caricamento dati.

    • Operatore OpenTelemetry

      L'operatore OpenTelemetry è un operatore Kubernetes progettato per semplificare l'inserimento automatico degli agenti Java nelle JVM in esecuzione nei pod Kubernetes.

    • Agenti Java APM

      Gli agenti Java APM registrano gli intervalli e le metriche dagli application server e le inviano ad APM.

    • Agenti browser APM

      Gli agenti del browser APM registrano le interazioni degli utenti con i siti Web e inviano intervalli e metriche ad APM.

    • Traccia e intervallo

      Una traccia è il flusso completo di una richiesta che passa attraverso tutti i componenti di un sistema distribuito in un determinato periodo di tempo. Un intervallo include operazioni o unità logiche di lavoro all'interno di una traccia e ha un nome, un'ora di inizio e una durata.

Suggerimenti

Le vostre esigenze potrebbero differire dall'architettura descritta qui. Utilizza i seguenti suggerimenti come punto di partenza per Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM).

  • Agente browser APM

    Distribuire l'agente del browser APM nell'interfaccia Web dell'applicazione per abilitare il monitoraggio dell'utente finale. Le tracce iniziano con l'azione dell'utente nel browser.

  • Monitoraggio sintetico

    Configura il monitoraggio sintetico per monitorare l'interfaccia utente dell'applicazione e gli endpoint API per rilevare in modo proattivo i problemi di disponibilità e prestazioni. Puoi creare monitoraggi basati su browser o su REST e pianificarli in modo che vengano eseguiti periodicamente da posizioni globali o all'interno della rete cloud virtuale (VCN) del tenant.

Considerazioni

Quando si utilizza Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM), tenere presente quanto riportato di seguito.

  • Chiavi dati

    Utilizzare chiavi dati personalizzate per gestire i dati inviati ad APM. Oltre alle chiavi dati predefinite, è possibile creare chiavi dati personali per scopi specifici. Nel caso di distribuzioni di grandi dimensioni in cui molte persone utilizzano APM, fornire chiavi diverse a diversi proprietari di progetti in modo che l'amministratore del dominio APM possa facilmente controllare quali dati entrano in APM e quali dati non lo fanno.

    Ad esempio, APM riceve un data set da un progetto abbandonato e si desidera disattivare la raccolta dei dati. Tuttavia, poiché il proprietario del progetto ha lasciato l'organizzazione, è difficile identificare gli agenti da disattivare. È possibile eliminare la chiave dati utilizzata dal progetto per ignorare i dati associati a tale chiave dati.

  • Risorse Kubernetes

    Quando configuri i microservizi, prendi in considerazione l'utilizzo di StatefulSets anziché delle distribuzioni durante la configurazione delle risorse pod Kubernetes per monitorare meglio la cronologia in APM. I pod di distribuzione modificano i propri ID ogni volta che vengono rigenerati, StatefulSets viene rigenerato con lo stesso indice ID (ad esempio, SS_0, SS_1, SS_2), che semplifica il trace della cronologia con APM.

  • Nome servizio APM

    Quando si esegue il provisioning dell'agente Java APM, è necessario specificare il nome del servizio utilizzato in APM. Si consideri la possibilità di utilizzare il nome Deployment/StatefulSet come APM serviceName per il trace coerente in APM.

  • Campionamento

    Utilizza il campionamento in applicazioni ad alto volume (ad esempio, 1 milione di transazioni al secondo). APM raccoglie tutti gli intervalli per impostazione predefinita e consente di tenere traccia di tutte le transazioni dell'applicazione. Tuttavia, questo può generare molti intervalli nel caso di applicazioni ad alto volume. In tali casi, si consiglia di specificare esplicitamente la configurazione di campionamento per una migliore efficienza dei costi e per ridurre la quantità di dati di traccia.

Distribuire

Fare riferimento alle istruzioni dettagliate nei workshop Oracle LiveLabs riportati di seguito durante la distribuzione dell'agente Java APM descritto in questa architettura di riferimento.

conferme

  • Author: Yutaka Takatsu
  • Contributors: Avi Huber, Robert Lies