Remarques :

Utilisation de Fluentd pour assimiler les journaux Oracle Cloud Infrastructure dans Elastic Cloud

Introduction

Oracle Cloud Infrastructure (OCI) fournit des fonctionnalités de journalisation complètes, mais l'intégration de ces journaux à des systèmes externes tels qu'Elastic nécessite un expéditeur de journaux robuste. De nombreux collecteurs de données open source populaires vous permettent d'unifier la collecte et la consommation de données.

Pour plus d'informations, reportez-vous aux sections Ingest Oracle Cloud Infrastructure Logs into Third-Party SIEM Platforms using Log Shippers et Send Oracle Cloud Infrastructure Logs to New Relic using Vector afin de déterminer la solution qui convient le mieux à votre cas d'utilisation.

Dans ce tutoriel, nous passerons en revue les tâches détaillées permettant d'utiliser Fluentd en tant qu'expéditeur de journaux pour l'inclusion de journaux OCI dans Elastic Cloud.

Fluentd

Fluentd est un collecteur de données open source fiable développé par Treasure Data et désormais membre de la CNCF, conçu pour rationaliser la collecte, la transformation et la distribution des données de journal sur différents systèmes. Il agit comme une couche de journalisation unifiée qui rassemble les journaux de diverses sources, les traite à l'aide de modules d'extension d'analyseur et de filtre, et les transfère vers des destinations telles que Elastic, Kafka ou le stockage cloud. Fluentd peut être déployé en tant qu'expéditeur de journaux sur une instance de calcul pour capturer les journaux du service OCI Logging et les fournir à Elastic pour une surveillance et une analyse améliorées.

Une fois que Fluentd transfère les journaux vers Elastic, la puissance réelle des données de journal est déverrouillée. La sécurité élastique indexe et stocke les données de journal dans un format structuré, ce qui permet de puissantes fonctionnalités de recherche, d'analyse et de visualisation. En tirant parti du moteur de recherche en texte intégral d'Elastic, les utilisateurs peuvent interroger et agréger les journaux en temps réel, découvrir des modèles, identifier des anomalies et générer des informations exploitables. En outre, avec des outils tels que Kibana, les journaux peuvent être visualisés via des tableaux de bord interactifs, transformant les données brutes des journaux en représentations visuelles intuitives qui aident à surveiller les performances des applications, à détecter les menaces de sécurité et à résoudre efficacement les problèmes opérationnels.

Examinons la représentation de haut niveau de l'architecture de la solution, comme indiqué dans l'image suivante.

Bouton Modifier

Objectifs

Prérequis

Tâche 1 : préparation d'OCI pour la transmission en continu de journaux

  1. Activez les journaux dans OCI Logging.

    Pour ce tutoriel, nous allons utiliser les journaux d'audit. Vous pouvez également activer le service ou les journaux personnalisés en fonction de votre cas d'emploi. Pour plus d'informations, reportez-vous à Présentation de Logging.

  2. Création d'un flux de données.

    Pour que Fluentd puisse démarrer l'expédition des journaux, les données doivent disposer d'une source cohérente. Dans OCI, cette source est un flux compatible avec Kafka. Imaginez la configuration d'un flux en tant que pipeline de données centralisé pour les journaux. Chaque événement de journal généré dans OCI à partir des instances de calcul vers les services réseau peut être dirigé vers ce flux. Cela permet non seulement de consolider les données de journal, mais également de garantir que Fluentd dispose d'une adresse unique à partir de laquelle extraire les données.

    1. Pour créer un flux, reportez-vous à Création d'un flux de données.

      Bouton Modifier

    2. Accédez au pool de flux de données et notez le nom de flux de données, le serveur Bootstrap, le nom d'utilisateur du pool de flux de données et le jeton d'authentification généré pour l'utilisateur. Pour plus d'informations, reportez-vous à la section auth token.

      Nous aurons besoin de tous ces éléments dans notre fichier de configuration Fluentd.

      Bouton Modifier

  3. Créez un hub OCI Connector.

    OCI Connector Hub agit en tant qu'orchestrateur, acheminant les journaux de divers services vers le flux. Avec OCI Connector Hub, vous pouvez définir des connecteurs qui déplacent des journaux à partir du service OCI Logging, qui contient des journaux d'audit, des journaux de service et des journaux personnalisés, et les diriger vers le flux. Pour créer un hub de connecteurs, entrez les informations suivantes.

    • Source : sélectionnez Logging.
    • Destination : sélectionnez Diffusion en continu (sélectionnez le flux créé à l'étape 2).
    • Sélectionnez Créer automatiquement des stratégies pour générer les stratégies OCI IAM requises.

    Bouton Modifier

    Bouton Modifier

    Bouton Modifier

    Pour plus d'informations, reportez-vous à Création d'un connecteur avec une source de journalisation.

Tâche 2 : installer et configurer Fluentd

Une fois le flux opérationnel, il est temps de configurer Fluentd. Ici, l'objectif est de déployer Fluentd sur une instance OCI Compute et de la configurer pour qu'elle utilise les journaux du flux.

Pourquoi une instance OCI Compute ? Considérez-le comme l'intermédiaire qui comble l'écart entre les journaux OCI et Elastic Cloud. C'est là que Fluentd s'exécutera, ingérera les données du flux et les transmettra à Elastic.

Connectez-vous via SSH à l'instance et installez Fluentd à l'aide du gestionnaire de packages Treasure Data.

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

Vérifiez la version qui confirme l'installation de Fluentd.

fluentd --version

Remarque : si vous faites tourner l'instance de calcul dans OCI, assurez-vous que l'extension pour le journal personnalisé est désactivée.

Tâche 3 : installer des modules d'extension dans Kafka et Elasticsearch

Maintenant que Fluentd est prêt, il doit être équipé de plugins. Dans cette architecture, Fluentd agit à la fois en tant que consommateur de données de flux et en tant que transitaire vers Elasticsearch. Cela nécessite l'installation de deux plug-ins clés :

Exécutez la commande suivante pour installer les deux modules d'extension.

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

Tâche 4 : vérifier les journaux de sortie à l'aide de stdout

Avant de transférer des journaux vers Elasticsearch, il est recommandé de vérifier que le flux d'inclusion de journaux fonctionne. C'est là qu'intervient stdout. Il garantit que les données circulent correctement à partir du flux avant de les envoyer à Elastic.

  1. Pour l'implémenter, mettez à jour la configuration Fluentd située à l'adresse /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. Remplacez <stream_endpoint> et <stream_topic> par le serveur bootstrap et le nom de flux en conséquence. Remplacez également <username> et <password> par les détails des paramètres de connexion Kafka dans OCI collectés dans la tâche 1.2. Le nom utilisateur doit également être ajouté au domaine, comme <tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.##############.

    Remarque :

    • ssl_ca_cert doit être une chaîne de certificats complète au format PEM, qui doit inclure des certificats de serveur (certs OCI Streaming), des certificats intermédiaires et des certificats racine.

    • Pour établir une connexion TLS sécurisée avec OCI Streaming, commencez par extraire le serveur et les certificats intermédiaires à l'aide de la commande 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.

    • La chaîne de certificat est ainsi enregistrée dans un fichier nommé kafka_chain.pem. Ensuite, téléchargez le certificat G2 racine globale DigiCert en tant que certificat racine sécurisée utilisé par OCI Streaming à partir de la page Certificats racine DigiCert au format PEM et enregistrez-le sous le nom root.pem. Enfin, ajoutez le certificat racine à votre fichier chaîne à l'aide de la commande cat root.pem >> kafka_chain.pem.

    • Il en résulte une chaîne de certificats complète dans kafka_chain.pem, prête à être utilisée par les clients TLS pour une connectivité sécurisée avec OCI Streaming.

  3. Exécutez la commande suivante pour démarrer Fluentd et surveiller la sortie.

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

Si tout fonctionne, les journaux du flux commencent à apparaître dans les journaux Fluentd. Cela garantit que le pipeline de données fonctionne comme prévu avant d'aller de l'avant.

Tâche 5 : transfert des journaux vers Elastic Cloud

Une fois le pipeline vérifié, il est temps de reconfigurer Fluentd pour transférer les journaux vers Elastic Cloud. Cette tâche transforme Fluentd d'un simple consommateur de journaux en un expéditeur de journaux à part entière.

  1. Mettez à jour la configuration pour inclure le module d'extension de sortie Elastic.

    <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>
    

    Remarque : l'ID cloud est un ID unique qui est affecté à votre cluster Elasticsearch hébergé sur Elastic Cloud. Tous les déploiements obtiennent automatiquement un ID cloud. Afin de trouver votre ID cloud et votre mot de passe pour l'utilisateur élastique, reportez-vous à Recherche de votre ID cloud.

  2. Relancez Fluentd pour appliquer les modifications.

    sudo systemctl restart fluentd.service
    

Tâche 6 : validation et déverrouillage des informations clés dans Elasticsearch

Les journaux sont transmis en continu dans Elastic, les données sont indexées et structurées pour une interrogation efficace. Le moteur de recherche en texte intégral d'Elastic vous permet de rechercher, d'agréger et de visualiser des données en temps réel.

Il est essentiel de créer une vue de données. Cette vue de données sert de couche structurée qui organise les données de journal, vous permettant d'explorer et d'extraire en toute transparence des informations précieuses. Pour plus d'informations, reportez-vous aux vues de données.

Bouton Modifier

Bouton Modifier

Accusés de réception

Ressources de formation supplémentaires

Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.