Kubernetes-Logdaten mit OCI Logging Analytics überwachen

Kubernetes bietet eine äußerst robuste und extrem anpassbare Plattform für die automatische Bereitstellung und Skalierung containerisierter Workloads. Der Aufbau eines Überwachungs- und Fehlerbehebungssystems für diese gesamte Umgebung ist eine sehr schwierige Aufgabe und kann Entwicklungs- und IT-Teams wertvolle Zeit nehmen. Eine große Anzahl von Kubernetes-basierten Initiativen kann nicht gestartet werden, da keine ergänzende Überwachungslösung vorhanden ist, die genauso robust, anpassbar, skalierbar und automatisch bereitgestellt werden kann. Oracle Cloud Infrastructure Logging Analytics überbrückt diese Überwachungslücke, indem es eine End-to-End-Kubernetes-Überwachungslösung mit einem Klick für die zugrunde liegende Infrastruktur, die Kubernetes-Plattform und Cloud-native Anwendungen bereitstellt. Senden Sie Logdaten aus Ihren On-Premise-Kubernetes-Clustern und der Oracle Cloud Infrastructure Kubernetes Engine (auch Kubernetes Engine oder OKE genannt) zur eingehenden Prüfung und Analyse an Oracle Cloud Infrastructure Logging Analytics.

Eine Kubernetes-basierte Umgebung kann in drei Ebenen unterteilt werden, die jeweils aus zahlreichen und sich ständig weiterentwickelnden Komponenten bestehen, die auf Geschäftsanforderungen basieren.

  • Infrastruktur-Tier: Enthält zahlreiche Komponenten, einschließlich Netzwerkressourcen, Compute-Instanzen und Kubernetes-Knotenhosts.
  • Kubernetes-Plattformebene: Enthält die verschiedenen Kubernetes-Services wie Netzwerk, Kubelet-Service und DNS, mit denen die kubernetes-Plattform unterstützt wird.
  • Application Tier: Enthält die verschiedenen Technologien, Datenbanken und Anwendungen.

Architektur

Diese Architektur zeigt, wie Sie mit Oracle Cloud Infrastructure Logging Analytics eine Kubernetes-Plattform und native Cloud-Anwendungen überwachen können.

Das folgende Diagramm ist eine Beispieltopologie eines Kubernetes-Clusters in einer einzelnen Oracle Cloud Infrastructure-(OCI-)Region. Es zeigt die Infrastructure Tier und das zweite Diagramm hebt die kubernetes- und Application Tiers hervor.

Beschreibung von kubernetes-master-worker-nodes.png folgt
Beschreibung der Abbildung kubernetes-master-worker-nodes.png

kubernetes-master-worker-nodes-oracle.zip

Das folgende Diagramm veranschaulicht das Kubernetes-Monitoring für Ihre On-Premise-Kubernetes-Cluster und Oracle Cloud Infrastructure Kubernetes Engine (auch als Kubernetes Engine oder OKE bezeichnet) mit OCI Logging Analytics. Diese Lösung bietet eine Sammlung verschiedener Logs eines Kubernetes-Clusters in OCI Logging Analytics und bietet umfangreiche Analysen zu den erfassten Logs. Sie können die Logerfassung anpassen, indem Sie die Out-of-the-box-Konfiguration ändern.

Beschreibung von k8s-oke-monitoring.png folgt
Beschreibung der Abbildung k8s-oke-monitoring.png

k8s-oke-monitoring-oracle.zip

Die Architektur umfasst die folgenden Komponenten:

  • Tenancy

    Ein Mandant ist eine sichere und isolierte Partition, die Oracle in Oracle Cloud einrichtet, wenn Sie sich für Oracle Cloud Infrastructure registrieren. Sie können Ihre Ressourcen in Oracle Cloud in Ihrem Mandanten erstellen, organisieren und verwalten. Ein Mandant ist ein Synonym für ein Unternehmen oder eine Organisation. In der Regel verfügt ein Unternehmen über einen einzigen Mandanten und spiegelt seine Organisationsstruktur innerhalb dieses Mandanten wider. Ein einzelner Mandant ist in der Regel mit einem einzelnen Abonnement verknüpft, und ein einzelnes Abonnement hat in der Regel nur einen Mandanten.

  • Region

    Eine Oracle Cloud Infrastructure-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Center enthält, das als Availability-Domain bezeichnet wird. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können sie trennen (über Länder oder sogar Kontinente).

  • Compartment

    Compartments sind regionsübergreifende logische Partitionen innerhalb eines Oracle Cloud Infrastructure-Mandanten. Mit Compartments können Sie Nutzungs-Quotas für Ihre Oracle Cloud-Ressourcen organisieren, den Zugriff kontrollieren und festlegen. In einem bestimmten Compartment definieren Sie Policys, die den Zugriff kontrollieren und Berechtigungen für Ressourcen festlegen.

  • Virtuelles Cloud-Netzwerk (VCN) und Subnetze

    Ein VCN ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer Oracle Cloud Infrastructure-Region einrichten können. Wie herkömmliche Data Center-Netzwerke erhalten Sie mit VCNs die Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere sich nicht überschneidende CIDR-Blöcke aufweisen, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die sich auf eine Region oder eine Availability-Domain beschränken. Jedes Subnetz besteht aus einem Bereich zusammenhängender Adressen, die sich nicht mit anderen Subnetzen im VCN überschneiden. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.

  • Load Balancer

    Der Oracle Cloud Infrastructure Load Balancing-Service ermöglicht automatisierte Trafficverteilung von einem einzelnen Einstiegspunkt auf mehrere Server im Backend.

  • Servicegateway

    Das Servicegateway bietet Zugriff von einem VCN auf andere Services, wie Oracle Cloud Infrastructure Object Storage. Der Traffic vom VCN zum Oracle-Service wird über die Oracle-Netzwerkstruktur geleitet und durchläuft nicht das Internet.

  • Logging Analytics

    Oracle Cloud Infrastructure (OCI) Logging Analytics ist ein vollständig verwalteter regionaler SaaS-Service, der in mehr als 27 Regionen verfügbar ist und Logs von jeder IT-Komponente erfasst, indexiert, anreichert, abfragt, visualisiert und benachrichtigt, die in der On-Premise-, OCI- oder 3rd-Party-Cloud ausgeführt wird.

  • Logging Analytics-Quelle

    Logging Analytics-Quelle ist eine Konfigurationsressource, die Spezifikationen für Parsing, Extraktionen, Labeling, Datenmaskierung und andere Anreicherung bereitstellt, um sicherzustellen, dass Logs ordnungsgemäß aufgenommen und zur Analyse und Überwachung indexiert werden. Diese Architektur verwendet mehr als 30 vordefinierte Quellen für Kubernetes-Services, -Anwendungen und -Objekte. Diese Quellen werden kontinuierlich erweitert, um tiefere Analysefunktionen bereitzustellen.

  • Kubernetes-Systempods

    Kubernetes-Systempods sind kleine, bereitstellbare Recheneinheiten, die Sie in Kubernetes erstellen und verwalten können. Ein Pod ist ein oder mehrere Container mit Shared Storage- und Netzwerkressourcen sowie Regeln für die Ausführung der Container.

  • Benutzerpods

    Auf dem Kubernetes-Cluster gestartete Anwendungen. Alle Logs aus Anwendungspods, die STDOUT/STDERR schreiben, sind in der Regel unter /var/log/containers/ verfügbar. Anwendungen mit benutzerdefinierten Log Handlern können ihre Logs unterschiedlich weiterleiten, sind jedoch im Allgemeinen auf dem Knoten verfügbar (über ein Volume).

  • Control-Plane-Services und -Pods

    Control-Plane-Services und -Pods der Kubernetes-Plattform. Die Control Plane verwaltet die Worker-Knoten und die Pods im Kubernetes-Cluster. Die Worker-Knoten führen die containerisierten Anwendungen aus. Jedes Cluster verfügt über mindestens einen Worker-Knoten. Die Worker-Knoten hosten die Pods, die Komponenten der Anwendungs-Workload sind.

  • Knoten-BS-Services

    Linux-Services, die auf der Instanz ausgeführt werden, auf der Kubernetes installiert ist. Logs werden in BS-Services erfasst.

  • Log- und Objekt-Collector-Pods

    Log- und Object Collector-Pods bestehen aus Replikatsets, FluentD und Daemon-Sets.

    • FluentD-Collector

      FluentD ist ein Open-Source-Daten-Collector, der eine einheitliche Logging-Schicht zwischen Datenquellen und Backend-Systemen bereitstellt. Es ermöglicht eine einheitliche Datenerfassung und -nutzung für eine Gebäudedatenverarbeitungspipeline. Diese Architektur verwendet einen containerisierten FluentD-Container, der als Daemon-Set und Replikat auf dem kubernetes-Cluster ausgeführt wird. Es verwendet das Fluentd-Ausgabe-Plug-in für Logginganalysen, um Logs in OCI Logging Analytics hochzuladen.

    • Logging Analytics-Plug-in FluentD

      Das FluentD-Ausgabe-Plug-in, das eine Verbindung zum OCI Logging Analytics-Service in Ihrem Mandanten herstellt, um Logs hochzuladen oder aufzunehmen, die vom FluentD-Collector erfasst wurden.

    • Kubernetes-Objekte

      Kubernetes-Objekte sind persistente Entitys im Kubernetes-System. Kubernetes verwendet diese Entitys, um den Status Ihres Clusters darzustellen. In dieser Architektur werden die folgenden kubernetes-Objektstatus als Logs für historische Analysen und Fehlerbehebung erfasst:

    • Kubernetes-Daemon-Set

      Ein Kubernetes-DaemonSet ist ein Workload-Typ, der auf Kubernetes ausgeführt wird und sicherstellt, dass alle (oder einige) Knoten eine Kopie eines Pods ausführen. Beim Hinzufügen von Knoten zum Cluster werden ihnen Pods hinzugefügt. Wenn Knoten aus dem Cluster entfernt werden, werden diese Pods als Garbage Collection erfasst.

    • Kubernetes-Replikatset

      Ein Kubernetes-ReplicaSet ist ein Workload-Typ, der auf Kubernetes ausgeführt wird. Es behält einen stabilen Satz von Replikat-Pods bei, die zu einem bestimmten Zeitpunkt ausgeführt werden. Daher wird es häufig verwendet, um die Verfügbarkeit einer bestimmten Anzahl identischer Pods zu gewährleisten

  • Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine oder OKE) ist ein vollständig verwalteter, skalierbarer und hoch verfügbarer Service, mit dem Sie Ihre Containeranwendungen in der Cloud bereitstellen können. Sie geben die Compute-Ressourcen an, die Ihre Anwendungen benötigen, und Kubernetes Engine stellt sie in Oracle Cloud Infrastructure in einem vorhandenen Mandanten bereit. OKE automatisiert mit Kubernetes das Deployment, die Skalierung und die Verwaltung containerisierter Anwendungen über Cluster von Hosts hinweg.

  • Service-Connectors

    Service Connector Hub ist eine Cloud-Nachrichtenbusplattform. Sie können damit Daten zwischen Services in Oracle Cloud Infrastructure verschieben. Daten werden mit Service-Connectors verschoben. Ein Service-Connector gibt den Quellservice an, der die zu verschiebenden Daten, die für die Daten auszuführenden Aufgaben sowie den Zielservice enthält, an den die Daten nach Abschluss der angegebenen Aufgaben gesendet werden. In dieser Architektur wird ein Service-Connector bereitgestellt, um Netzwerk- und Load-Balancer-Logs zu erfassen.

  • OCI-Services

    Oracle Cloud Infrastructure-(OCI-)Services sind eine Plattform aus Cloud-Services, mit der Sie eine Vielzahl von Anwendungen in einer hochverfügbaren, konsistent leistungsstarken Umgebung erstellen und ausführen können.

  • Service- und Auditlogs

    Service- und Auditlogs werden im OCI Logging-Service erfasst. OCI Logging ist ein hoch skalierbarer und vollständig verwalteter Service, mit dem über den Service-Connector auf die VCN- und Load-Balancer-Servicelogs zugegriffen wird.

Standardmäßig werden Kubernetes System Services-Logs und Kubernetes-Objektdaten erfasst.

Oracle Cloud Infrastructure Kubernetes Engine verfügt über integrierte Services, bei denen jeder einzelne verschiedene Zuständigkeiten hat und auf einem oder mehreren Knoten im Cluster ausgeführt wird, entweder als Deployments oder als DaemonSets.

Kubernetes-Systemservices Linux-Systemdienste Kubernetes-Control-Plane Kubernetes-Objekte (Standard: alle 15 Minuten) Benutzerdefinierte Anwendungslogs
  • Kube Proxy
  • Kube Flannel
  • Kubelet
  • CoreDNS
  • CSI Node Driver
  • DNS Autoscaler
  • Cluster Autoscaler
  • Proxymux Client
  • Syslog
  • Secure Logs
  • Cron-Protokolle
  • Maillogs
  • Auditlogs
  • Ksplice-Uptrack-Logs
  • Yum-Logs
  • Kube API Server
  • Kube Scheduler
  • Kube Controller Manager
  • Cloud Controller Manager
  • etcd
  • Nodes
  • Namespaces
  • Pods
  • DaemonSets
  • Deployments
  • ReplicaSets
  • Events
  • Alle benutzerdefinierten Anwendungslogs, auf denen das Cluster ausgeführt wird, werden erfasst. Siehe Empfehlungen zum Anpassen dieses Verhaltens.

Hinweis:

Kubernetes-Control-Plane-Logs werden nicht als Teil der Out-of-the-box-Collection abgedeckt, da diese Logs nicht von der OCI Kubernetes Engine (auch als OKE bezeichnet) bereitgestellt werden. Sie können Control-Plane-Logs aus Nicht-OKE-Kubernetes-Clustern aktivieren.

Empfehlungen

Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt. Ihre Anforderungen können von der hier beschriebenen Architektur abweichen.

  • Loggruppen

    Definieren Sie mehrere Loggruppen, um verschiedenen Teams Schreibzugriffsberechtigungen zu erteilen und das Teilen vertraulicher Daten zu vermeiden. Loggruppen können auf Oracle E-Business Suite, Database, OCI-Infrastruktur und Hosts-Logs basieren.

  • Kostenmanagement

    Der Oracle Cloud Infrastructure (OCI) Logging Analytics-Service wird auf das Datenvolumen im aktiven und archivierten Speicher abgerechnet. Um die Fehlerbehebung bei alltäglichen Problemen zu ermöglichen und die Vorteile der Anomalieerkennung, Mustererkennung und anderer ML-Funktionen zu nutzen, wird empfohlen, einen aktiven Speicherzeitraum von 90 Tagen zu verwenden und Logs, die älter als 90 Tage sind, in den Archivierungsspeicher zu verschieben. Logs aus der gespeicherten Archivierung können auf Anforderung schnell abgerufen werden.

  • FluentD Mehrere Mitarbeiter

    Konfigurieren Sie FluentD im Multi-Worker-Modus für zeitkritische Logs.

  • Benutzerdefinierte Anwendungslogs

    Diese Lösung erfasst automatisch alle Logs, die von Anwendungen generiert werden, die in einem Kubernetes-Cluster ausgeführt werden. Standardmäßig sind diese Logs der Logquelle Kubernetes Generic Container Logs zugeordnet. Anwendungslogs für spezifischen Parser, Quellen und Anreicherung müssen in Oracle Cloud Infrastructure Logging Analytics erstellt werden, um erforderliche Felder zu extrahieren und Problemlabels an Logs anzuhängen.

  • Authentifizierung

    Diese Architektur unterstützt die dateibasierte Authentifizierung des Instanz-Principals und der Oracle Cloud Infrastructure-config. Instanz-Principal-basierte Authentifizierung wird für Oracle Cloud Infrastructure Kubernetes Engine (OKE) empfohlen.

Hinweise

Beachten Sie beim Deployment dieser Referenzarchitektur die folgenden Punkte:

  • Performance

    Die Abfrageperformance basiert auf dem Zeitraum und der Anzahl von Vorgängen, wie Filtern, Gruppieren nach usw. Für eine bessere Abfrageperformance wird empfohlen, Logs zum Zeitpunkt der Aufnahme mit bestimmten Labels und Feldern anzureichern. Dies ist Teil einer kontinuierlichen Verbesserung des IT-Betriebs.

  • Sicherheit und rollenbasierte Zugriffskontrolle (RBAC)

    Passen Sie Logquelldefinitionen an, um personenbezogene Daten zu filtern und die Anreicherung von Geolokationen zu aktivieren.

  • Verfügbarkeit

    Oracle Cloud Infrastructure Logging Analytics ist ein vollständig verwalteter hochverfügbarer SaaS-Service.

Stellen Sie

Die Kubernetes-Manifeste und -Helm-Diagramme für das Deployment von Oracle Cloud Infrastructure Logging Analytics DaemonSets und ReplicaSets sind unter GitHub verfügbar.

  1. Gehen Sie zu GitHub.
  2. Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Rechner herunter.
  3. Befolgen Sie die Anweisungen im Dokument README.

Danksagungen

Autor: Kumar Varun

Mitwirkende: Zubair Ansari, Kiran Palukuri, Santhosh Vuda