Monitora i dati di log Kubernetes con OCI Logging Analytics

Kubernetes offre una piattaforma altamente robusta ed estremamente personalizzabile per la gestione automatica della distribuzione e del ridimensionamento dei carichi di lavoro containerizzati. La creazione di un sistema di monitoraggio e risoluzione dei problemi per l'intero ambiente è un compito molto impegnativo e può richiedere tempo prezioso ai team di sviluppo e IT. Un gran numero di iniziative basate su Kubernetes non riesce a decollare a causa della mancanza di una soluzione di monitoraggio complementare, robusta, personalizzabile, scalabile e implementabile automaticamente. Oracle Cloud Infrastructure Logging Analytics colma questa lacuna nel monitoraggio fornendo una soluzione di monitoraggio Kubernetes end-to-end con un solo clic per l'infrastruttura di base, la piattaforma Kubernetes e le applicazioni cloud native. Invia i dati di log dai tuoi cluster Kubernetes on-premise e da Oracle Cloud Infrastructure Kubernetes Engine (noto anche come Kubernetes Engine o OKE) a Oracle Cloud Infrastructure Logging Analytics per un esame e un'analisi approfonditi.

Un ambiente basato su Kubernetes può essere diviso in tre livelli, ciascuno composto da numerosi componenti in continua evoluzione guidati dalle esigenze aziendali.

  • Livello dell'infrastruttura: contiene numerosi componenti, tra cui risorse di rete, istanze di computazione e host dei nodi Kubernetes.
  • Livello di piattaforma Kubernetes: contiene i vari servizi Kubernetes come rete, servizio kubelet e DNS, che alimentano la piattaforma kubernetes.
  • Livello applicazione: contiene le diverse tecnologie, database e applicazioni.

Architettura

Questa architettura mostra come utilizzare Oracle Cloud Infrastructure Logging Analytics per monitorare una piattaforma Kubernetes e applicazioni cloud native.

Il diagramma riportato di seguito è un esempio di topologia di un cluster Kubernetes in una singola area geografica Oracle Cloud Infrastructure (OCI). Mostra il livello di infrastruttura e il secondo diagramma evidenzia i livelli di kubernet e applicazione.

Descrizione di kubernetes-master-worker-nodes.png
Descrizione dell'immagine kubernetes-master-worker-nodes.png

kubernetes-master-worker-nodes-oracle.zip

Il diagramma riportato di seguito illustra il monitoraggio Kubernetes per i cluster Kubernetes in locale e Oracle Cloud Infrastructure Kubernetes Engine (noto anche come Kubernetes Engine o OKE) con OCI Logging Analytics. Questa soluzione offre una raccolta di vari log di un cluster Kubernetes in OCI Logging Analytics e offre analitica avanzata oltre ai log raccolti. È possibile personalizzare la raccolta dei log modificando la configurazione predefinita.

Di seguito è riportata la descrizione di k8s-oke-monitoring.png
Descrizione dell'immagine k8s-oke-monitoring.png

k8s-oke-monitoring-oracle.zip

L'architettura presenta 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. Puoi creare, organizzare e amministrare le risorse in Oracle Cloud all'interno della tua tenancy. Una tenancy è sinonimo di azienda o organizzazione. Di solito, un'azienda avrà una singola tenancy e rifletterà la sua struttura organizzativa all'interno di quella tenancy. Una singola tenancy viene in genere associata a una singola sottoscrizione e una singola sottoscrizione in genere ha una sola tenancy.

  • Area

    Un'area geografica Oracle Cloud Infrastructure è un'area geografica localizzata che contiene uno o più data center, denominati 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.

  • Load balancer

    Il servizio Oracle Cloud Infrastructure Load Balancing fornisce la distribuzione automatica del traffico da un unico punto di accesso a più server nel back-end.

  • Gateway del servizio

    Il gateway di servizi fornisce l'accesso da una VCN ad altri servizi, come Oracle Cloud Infrastructure Object Storage. Il traffico dalla VCN al servizio Oracle viene instradato sul fabric di rete Oracle e non attraversa Internet.

  • Logging Analytics

    Oracle Cloud Infrastructure (OCI) Logging Analytics è un servizio regionale SaaS completamente gestito disponibile in più di 27 aree che fornisce raccolta, indicizzazione, arricchimento, query, visualizzazione e avvisi per i log da qualsiasi componente IT in esecuzione su cloud on-premise, OCI o 3rd party.

  • Origine Logging Analytics

    L'origine di Logging Analytics è una risorsa di configurazione che fornisce specifiche per l'analisi, le estrazioni, l'etichettatura, il mascheramento dei dati e altri arricchimenti per garantire che i log vengano inclusi e indicizzati correttamente per l'analisi e il monitoraggio. Questa architettura utilizza più di 30 origini predefinite per i servizi, le applicazioni e gli oggetti Kubernetes. Queste fonti vengono continuamente migliorate per fornire funzionalità di analisi più approfondite.

  • Pod di sistema Kubernetes

    I pod di sistema Kubernetes sono piccole unità di elaborazione distribuibili che puoi creare e gestire in Kubernetes. Un pod è uno o più container, con risorse di storage e rete condivise e regole per l'esecuzione dei container.

  • Pod utente

    Applicazioni avviate nel cluster Kubernetes. Tutti i log dei pod dell'applicazione che scrivono STDOUT/STDERR sono in genere disponibili in /var/log/containers/. Le applicazioni con handler di log personalizzati possono instradare i log in modo diverso, ma in generale sono disponibili sul nodo (attraverso un volume).

  • Servizi e pod del piano di controllo

    Servizi e pod del piano di controllo della piattaforma Kubernetes. Il piano di controllo gestisce i nodi di lavoro e i pod nel cluster Kubernetes. I nodi di lavoro eseguono le applicazioni containerizzate. Ogni cluster dispone di almeno un nodo di lavoro. I nodi di lavoro ospitano i pod che costituiscono i componenti del carico di lavoro dell'applicazione.

  • Servizi sistema operativo nodo

    Servizi Linux in esecuzione sull'istanza in cui è installato Kubernetes. I log vengono raccolti sui servizi del sistema operativo.

  • Pod Log e Object Collector

    I pod Log e Object Collector sono costituiti da set di repliche, FluentD e daemon.

    • Collector FluentD

      FluentD è un strumento di raccolta dati open source che fornisce un livello di log unificato tra le origini dati e i sistemi backend. Consente la raccolta e il consumo unificati dei dati per le pipeline di elaborazione dei dati di un edificio. Questa architettura utilizza un contenitore FluentD containerizzato che viene eseguito come set di daemon e set di replicati nel cluster kubernetes. Utilizza il plugin di output Fluentd per l'analisi dei log per caricare i log in OCI Logging Analytics.

    • Plugin FluentD di Logging Analytics

      Plugin di output FluentD che si connette al servizio OCI Logging Analytics nella tenancy per caricare o includere i log raccolti dal Collector FluentD.

    • Oggetti Kubernetes

      Gli oggetti Kubernetes sono entità persistenti nel sistema Kubernetes. Kubernetes utilizza queste entità per rappresentare lo stato del cluster. In questa architettura, gli stati degli oggetti kubernetes riportati di seguito vengono raccolti come log per l'analisi e la risoluzione dei problemi cronologici.

    • Set di daemon Kubernetes

      Un Kubernetes DaemonSet è un tipo di carico di lavoro eseguito su Kubernetes e garantisce che tutti (o alcuni) nodi eseguano una copia di un pod. Quando i nodi vengono aggiunti al cluster, vengono aggiunti i pod. Quando i nodi vengono rimossi dal cluster, tali pod vengono raccolti come elementi non utilizzati.

    • Set di repliche Kubernetes

      Un Kubernetes ReplicaSet è un tipo di carico di lavoro eseguito su Kubernetes. Mantiene un set stabile di repliche Pod in esecuzione in qualsiasi momento. In quanto tale, viene spesso utilizzato per garantire la disponibilità di un determinato numero di Pod identici

  • Motore Kubernetes

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine o OKE) è un servizio completamente gestito, scalabile e ad alta disponibilità che puoi utilizzare per distribuire le tue 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.

  • Connettori servizio

    Service Connector Hub è una piattaforma di bus di messaggi cloud. Puoi usarlo per spostare i dati tra i servizi in Oracle Cloud Infrastructure. I dati vengono spostati utilizzando i connettori del servizio. Un connettore servizio specifica il servizio di origine che contiene i dati da spostare, i task da eseguire sui dati e il servizio di destinazione a cui devono essere consegnati i dati al termine dei task specificati. In questa architettura viene eseguito il provisioning di un connettore di servizio per raccogliere i log di rete e load balancer.

  • Servizi OCI

    I servizi Oracle Cloud Infrastructure (OCI) sono una piattaforma di servizi cloud che ti consentono di creare ed eseguire una vasta gamma di applicazioni in un ambiente ad alta disponibilità e costantemente ad alte prestazioni.

  • Log di servizio e di audit

    I log di servizio e di audit vengono acquisiti nel servizio OCI Logging. OCI Logging è un servizio altamente scalabile e completamente gestito utilizzato per accedere ai log del servizio VCN e Load Balancer tramite il connettore servizio.

Per impostazione predefinita, vengono raccolti i log dei servizi di sistema Kubernetes e i dati degli oggetti Kubernetes.

Oracle Cloud Infrastructure Kubernetes Engine dispone di servizi integrati in cui ognuno ha responsabilità diverse ed è eseguito su uno o più nodi del cluster sotto forma di distribuzioni o DaemonSets.

Servizi di sistema Kubernetes Servizi di sistema Linux Piano di controllo Kubernetes Oggetti Kubernetes (impostazione predefinita: ogni 15 minuti) Log applicazioni personalizzati
  • Kube Proxy
  • Kube Flannel
  • Kubelet
  • CoreDNS
  • CSI Node Driver
  • DNS Autoscaler
  • Cluster Autoscaler
  • Proxymux Client
  • Syslog
  • Log sicuri
  • Log Cron
  • Log della posta
  • Log di audit
  • Log Ksplice Uptrack
  • Log Yum
  • Kube API Server
  • Kube Scheduler
  • Kube Controller Manager
  • Cloud Controller Manager
  • etcd
  • Nodes
  • Namespaces
  • Pods
  • DaemonSets
  • Deployments
  • ReplicaSets
  • Events
  • Vengono raccolti tutti i log dell'applicazione personalizzata che eseguono il cluster. Vedere Suggerimenti per la personalizzazione di questo comportamento.

Nota

I log del piano di controllo Kubernetes non vengono trattati come parte della raccolta predefinita, in quanto questi log non vengono esposti da OCI Kubernetes Engine (noto anche come OKE). È possibile abilitare i log del piano di controllo da cluster Kubernetes non OKE.

Suggerimenti

Utilizzare i seguenti suggerimenti come punto di partenza. Le vostre esigenze potrebbero differire dall'architettura descritta qui.

  • Gruppi di log

    Definire più gruppi di log per fornire autorizzazioni di accesso in scrittura a team diversi ed evitare la condivisione di dati riservati. I gruppi di log possono essere basati su Oracle E-Business Suite, database, infrastruttura OCI, log degli host.

  • Cost Management

    Il servizio Oracle Cloud Infrastructure (OCI) Logging Analytics viene addebitato sul volume di dati nello storage attivo e di archiviazione. Per consentire la risoluzione dei problemi quotidiani e ottenere vantaggi dal rilevamento delle anomalie, dal rilevamento dei pattern e da altre funzionalità di apprendimento automatico, si consiglia di utilizzare un periodo di storage attivo di 90 giorni e di spostare i log più vecchi di 90 giorni nello storage di archiviazione. I log archiviati possono essere richiamati rapidamente su richiesta.

  • FluentD Più lavoratori

    Configurare FluentD in modalità multi-worker per i log sensibili al tempo.

  • Log applicazioni personalizzati

    Questa soluzione acquisisce automaticamente tutti i log generati dalle applicazioni in esecuzione in un cluster Kubernetes. Per impostazione predefinita, questi log vengono mappati all'origine log Kubernetes Generic Container Logs. Il parser, le origini e l'arricchimento specifici dei log dell'applicazione devono essere creati in Oracle Cloud Infrastructure Logging Analytics per estrarre i campi obbligatori e allegare etichette dei problemi ai log.

  • Autenticazione

    Questa architettura supporta l'autenticazione basata sul principal dell'istanza e sul file Oracle Cloud Infrastructure config. L'autenticazione basata sul principal dell'istanza è consigliata per Oracle Cloud Infrastructure Kubernetes Engine (OKE).

Considerazioni

Quando si distribuisce questa architettura di riferimento, tenere presente quanto riportato di seguito.

  • Prestazioni

    Le prestazioni delle query si basano sull'intervallo di tempo e sul numero di operazioni, ad esempio filtri, raggruppamento e così via. Per migliorare le prestazioni delle query, si consiglia di integrare i log con etichette e campi specifici al momento dell'inclusione. Si tratta di una parte del miglioramento continuo per le operazioni IT.

  • Controllo dell'accesso basato su sicurezza e ruoli (RBAC)

    Personalizzare le definizioni dell'origine log per filtrare i dati PII e abilitare l'arricchimento della geolocalizzazione.

  • Disponibilità

    Oracle Cloud Infrastructure Logging Analytics è un servizio SaaS ad alta disponibilità completamente gestito.

Distribuire

I file manifesto e i grafici helm di Kubernetes per l'implementazione di Oracle Cloud Infrastructure Logging Analytics, DaemonSets e ReplicaSets sono disponibili in GitHub.

  1. Passare a GitHub.
  2. Duplica o scarica il repository nel computer locale.
  3. Seguire le istruzioni riportate nel documento README.

Riconoscimenti

Autore: Kumar Varun

Contributori: Zubair Ansari, Kiran Palukuri, Santhosh Vuda