Hinweis:

Oracle Cloud Infrastructure-Logs mit Fluentd in Elastic Cloud aufnehmen

Einführung

Oracle Cloud Infrastructure (OCI) bietet umfassende Loggingfunktionen, die Integration dieser Logs in externe Systeme wie Elastic erfordert jedoch einen robusten Logversender. Es gibt viele beliebte Open-Source-Datensammler, mit denen Sie die Datenerfassung und -nutzung vereinheitlichen können.

Weitere Informationen finden Sie unter: Oracle Cloud Infrastructure-Logs mit Log-Shippern in SIEM-Plattformen von Drittanbietern aufnehmen und Oracle Cloud Infrastructure-Logs mit Vector an New Relic senden, um zu bestimmen, welche Lösung am besten zu Ihrem Anwendungsfall passt.

In diesem Tutorial führen wir die detaillierten Aufgaben durch, mit denen Fluentd als Logversender verwendet werden kann, um OCI-Logs in Elastic Cloud aufzunehmen.

Fluentd

Fluentd ist ein robuster Open-Source-Datensammler, der von Treasure Data entwickelt wurde und jetzt Teil von CNCF ist, um die Erfassung, Transformation und Verteilung von Logdaten über verschiedene Systeme hinweg zu optimieren. Sie fungiert als einheitliche Logging-Ebene, die Protokolle aus verschiedenen Quellen sammelt, sie mit Parser- und Filter-Plug-ins verarbeitet und an Ziele wie Elastic, Kafka oder Cloud-Speicher weiterleitet. Fluentd kann als Logversender auf einer Compute-Instanz bereitgestellt werden, um Logs aus dem OCI Logging-Service zu erfassen und für eine verbesserte Überwachung und Analyse an Elastic bereitzustellen.

Sobald Fluentd Protokolle an Elastic weiterleitet, wird die wahre Kraft der Protokolldaten freigeschaltet. Elastische Sicherheitsindizes und speichern die Logdaten in einem strukturierten Format, sodass leistungsstarke Such-, Analyse- und Visualisierungsfunktionen möglich sind. Durch die Nutzung der Volltextsuchmaschine von Elastic können Benutzer Protokolle in Echtzeit abfragen und aggregieren, Muster aufdecken, Anomalien identifizieren und verwertbare Erkenntnisse generieren. Darüber hinaus können Protokolle mit Tools wie Kibana über interaktive Dashboards visualisiert werden. Dabei werden Rohprotokolldaten in intuitive visuelle Darstellungen umgewandelt, die bei der Überwachung der Anwendungsleistung, der Erkennung von Sicherheitsbedrohungen und der effektiven Behebung von Betriebsproblemen helfen.

Betrachten wir die allgemeine Darstellung der Lösungsarchitektur wie in der folgenden Abbildung dargestellt.

Schaltfläche "Bearbeiten"

Ziele

Voraussetzungen

Aufgabe 1: OCI für Logstreaming vorbereiten

  1. Aktivieren Sie Logs in OCI Logging.

    Für dieses Tutorial verwenden wir Auditlogs. Sie können auch Service- oder benutzerdefinierte Logs basierend auf Ihrem Anwendungsfall aktivieren. Weitere Informationen finden Sie unter Logging - Überblick.

  2. Streams erstellen

    Bevor Fluentd mit dem Versand von Protokollen beginnen kann, benötigen die Daten eine konsistente Quelle. In OCI ist diese Quelle ein Kafka-kompatibler Stream. Stellen Sie sich vor, Sie richten einen Stream als zentralisierte Datenpipeline für Logs ein. Jedes Logereignis, das in OCI von Compute-Instanzen zu Networking-Services generiert wird, kann an diesen Stream weitergeleitet werden. Dadurch werden nicht nur Protokolldaten konsolidiert, sondern auch sichergestellt, dass Fluentd über einen einzigen Endpunkt verfügt, aus dem Daten abgerufen werden können.

    1. Informationen zum Erstellen eines Streams finden Sie unter Streams erstellen.

      Schaltfläche "Bearbeiten"

    2. Navigieren Sie zu Streampool, und notieren Sie sich den Streamnamen, den Bootstrap-Server, den Benutzernamen aus dem Streampool und das generierte Authentifizierungstoken für den Benutzer. Weitere Informationen finden Sie unter Authentifizierungstoken.

      All dies benötigen wir in unserer Fluentd-Konfigurationsdatei.

      Schaltfläche "Bearbeiten"

  3. Erstellen Sie einen OCI Connector Hub.

    OCI Connector Hub fungiert als Orchestrator und leitet Logs von verschiedenen Services an den Stream weiter. Mit OCI Connector Hub können Sie Connectors definieren, die Logs aus dem OCI Logging-Service mit Auditlogs, Servicelogs und benutzerdefinierten Logs verschieben, und sie an den Stream weiterleiten. Geben Sie die folgenden Informationen ein, um einen Connector-Hub zu erstellen.

    • Quelle: Wählen Sie Logging aus.
    • Ziel: Wählen Sie Streaming aus (wählen Sie den in Schritt 2 erstellten Stream aus).
    • Wählen Sie Policys automatisch erstellen aus, um die erforderlichen OCI-IAM-Policys zu generieren.

    Schaltfläche "Bearbeiten"

    Schaltfläche "Bearbeiten"

    Schaltfläche "Bearbeiten"

    Weitere Informationen finden Sie unter Connector mit einer Logging-Quelle erstellen.

Aufgabe 2: Fluentd installieren und konfigurieren

Wenn der Stream läuft, ist es an der Zeit, Fluentd einzurichten. Hier besteht das Ziel darin, Fluentd auf einer OCI Compute-Instanz bereitzustellen und so zu konfigurieren, dass Logs aus dem Stream verwendet werden.

Warum eine OCI Compute-Instanz? Betrachten Sie es als den Vermittler, der die Lücke zwischen OCI-Logs und Elastic Cloud überbrückt. Hier wird Fluentd ausgeführt, Daten aus dem Stream aufgenommen und an Elastic weitergeleitet.

Stellen Sie eine SSH-Verbindung zur Instanz her, und installieren Sie Fluentd mit dem Paketmanager für Schatzdaten.

curl -fsSL https://toolbelt.treasuredata.com/sh/install-redhat-fluent-package5-lts.sh | sh

Überprüfen Sie die Version, die bestätigt, dass Fluentd installiert ist.

fluentd --version

Hinweis: Wenn Sie die Compute-Instanz in OCI hochfahren, stellen Sie sicher, dass das Add-on für das benutzerdefinierte Log deaktiviert ist.

Aufgabe 3: Plug-ins in Kafka und Elasticsearch installieren

Jetzt, da Fluentd bereit ist, muss es mit Plugins ausgestattet sein. In dieser Architektur fungiert Fluentd sowohl als Konsument von Streamdaten als auch als Spediteur von Elasticsearch. Dazu müssen zwei Schlüssel-Plugins installiert werden:

Führen Sie den folgenden Befehl durch, um beide Plug-ins zu installieren.

fluent-gem install fluent-plugin-kafka fluent-plugin-elasticsearch

Aufgabe 4: Ausgabelogs mit stdout prüfen

Bevor Sie Logs an Elasticsearch weiterleiten, sollten Sie prüfen, ob der Logaufnahmefluss funktioniert. Hier kommt stdout ins Spiel. Es stellt sicher, dass die Daten korrekt aus dem Stream fließen, bevor es an Elastic gesendet wird.

  1. Um dies zu implementieren, aktualisieren Sie die Fluentd-Konfiguration unter /etc/fluent/fluentd.conf.

    	<source>
    	@type kafka_group
    	brokers <stream_endpoint>:9092
    	topics <stream_topic>
    	format json
    	username <username>
    	password <password>
    	ssl_ca_cert /etc/fluent/kafka_chain.pem
    	sasl_over_ssl true
    	consumer_group fluentd-group
    	<parse>
    		@type json
    	</parse>
    	</source>
    
    	<match **>
    	@type stdout
    	</match>
    
  2. Ersetzen Sie <stream_endpoint> und <stream_topic> durch den bootstrap-Server und den Streamnamen entsprechend. Ersetzen Sie außerdem <username> und <password> durch die Details aus den Kafka-Verbindungseinstellungen in OCI, die in Aufgabe 1.2 erfasst wurden. Der Benutzername muss ebenfalls an die Domain angehängt werden, z.B. <tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.##############.

    Hinweis:

    • Die ssl_ca_cert muss eine vollständige Zertifikatskette im PEM-Format sein, die Serverzertifikate (OCI Streaming-Zertifikate), Zwischen- und Root-Zertifikate umfassen sollte.

    • Um eine vertrauenswürdige TLS-Verbindung mit OCI Streaming herzustellen, extrahieren Sie zunächst den Server und die Zwischenzertifikate mit dem Befehl openssl: openssl s_client -showcerts -connect cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092 -servername cell-1.streaming.us-ashburn-1.oci.oraclecloud.com < /dev/null | \\nsed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > kafka_chain.pem.

    • Dadurch wird die Zertifikatskette in einer Datei namens kafka_chain.pem gespeichert. Laden Sie als Nächstes das DigiCert Global Root G2-Zertifikat, das von OCI Streaming verwendet wird, von der Seite DigiCert Root Certificates im PEM-Format herunter, und speichern Sie es als root.pem. Hängen Sie das Root-Zertifikat schließlich mit dem Befehl cat root.pem >> kafka_chain.pem an Ihre Chain-Datei an.

    • Dies führt zu einer vollständigen Zertifikatskette in kafka_chain.pem, die von TLS-Clients für eine sichere Konnektivität mit OCI Streaming verwendet werden kann.

  3. Führen Sie den folgenden Befehl aus, um Fluentd zu starten und die Ausgabe zu überwachen.

    $ sudo systemctl restart fluentd.service
    $ sudo systemctl status fluentd.service
    $ sudo cat /var/log/fluent/fluentd.log
    

Wenn alles funktioniert, werden Logs aus dem Stream in den Fluentd-Logs angezeigt. Dadurch wird sichergestellt, dass die Datenpipeline wie erwartet funktioniert, bevor sie weitergeht.

Aufgabe 5: Logs an Elastic Cloud weiterleiten

Nachdem die Pipeline überprüft wurde, ist es an der Zeit, Fluentd neu zu konfigurieren, um Logs an Elastic Cloud weiterzuleiten. Diese Aufgabe transformiert Fluentd von einem einfachen Log-Consumer zu einem vollwertigen Log-Shipper.

  1. Aktualisieren Sie die Konfiguration, um das Elastic-Ausgabe-Plug-in einzuschließen.

    <source>
      @type kafka_group
      brokers <stream_endpoint>:9092
      topics <stream_topic>
      format json
      username <tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.iad.##########
      password <password>
      ssl_ca_cert /etc/fluent/kafka_chain.pem
      sasl_over_ssl true
      consumer_group fluentd-group
    </source>
    
    <match **>
      @type elasticsearch
      cloud_id ###########
      cloud_auth 'elastic:##########'
      logstash_prefix fluentd
      logstash_format true
      index_name fluentd
    </match>
    

    Hinweis: Die Cloud-ID ist eine eindeutige ID, die Ihrem gehosteten Elasticsearch-Cluster in Elastic Cloud zugewiesen wird. Alle Deployments erhalten automatisch eine Cloud-ID. Informationen zum Suchen Ihrer Cloud-ID und Ihres Kennworts für den elastischen Benutzer finden Sie unter Cloud-ID suchen.

  2. Starten Sie Fluentd neu, um die Änderungen zu übernehmen.

    sudo systemctl restart fluentd.service
    

Aufgabe 6: Insights in Elasticsearch validieren und entsperren

Die Logs werden erfolgreich in Elastic übertragen, die Daten werden indiziert und für eine effiziente Abfrage strukturiert. Mit der Volltextsuchmaschine von Elastic können Sie Daten in Echtzeit suchen, aggregieren und visualisieren.

Es ist wichtig, eine Datenansicht zu erstellen. Diese Datenansicht dient als strukturierte Ebene, die Logdaten organisiert und es Ihnen ermöglicht, wertvolle Erkenntnisse nahtlos zu untersuchen und zu extrahieren. Weitere Informationen finden Sie unter Datenansichten.

Schaltfläche "Bearbeiten"

Schaltfläche "Bearbeiten"

Bestätigungen

Weitere Lernressourcen

Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.