Note :

Utiliser Fluentd pour ingérer les connexions d'Oracle Cloud Infrastructure dans Elastic Cloud

Présentation

Oracle Cloud Infrastructure (OCI) fournit des capacité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 fiable. Il existe de nombreux collecteurs de données open source populaires qui vous permettent d'unifier la collecte et la consommation de données.

Pour plus d'informations, voir : Ingérer les journaux Oracle Cloud Infrastructure dans des plates-formes SIEM de tierce partie à l'aide d'expéditeurs de journal et Envoyer les journaux Oracle Cloud Infrastructure à New Relic à l'aide d'un vecteur pour déterminer la solution qui convient le mieux à votre cas d'utilisation.

Dans ce tutoriel, nous présenterons les tâches détaillées permettant d'utiliser Fluentd en tant qu'expéditeur de journaux pour ingérer des journaux OCI dans Elastic Cloud.

Fluentd

Fluentd est un collecteur de données robuste et à code source libre développé par Treasure Data et qui fait maintenant partie de CNCF, conçu pour rationaliser la collecte, la transformation et la distribution des données de journal dans divers systèmes. Il agit comme une couche de journalisation unifiée qui rassemble des journaux provenant de diverses sources, les traite à l'aide de plugiciels d'analyse et de filtre, et les transmet à des destinations telles que Elastic, Kafka ou le stockage en nuage. Fluentd peut être déployé en tant qu'expéditeur de journaux sur une instance de calcul pour saisir des journaux à partir du service de journalisation OCI et les transmettre à 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. Index de sécurité élastiques et stockage des données de journal dans un format structuré, permettant de puissantes fonctions 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 regrouper les journaux en temps réel, découvrir des modèles, identifier des anomalies et générer des renseignements exploitables. En outre, avec des outils tels que Kibana, les journaux peuvent être visualisés au moyen de tableaux de bord interactifs, transformant les données brutes des journaux en représentations visuelles intuitives qui facilitent la surveillance du rendement des applications, la détection des menaces à la sécurité et le dépannage efficace des problèmes opérationnels.

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

Bouton Modifier

Objectifs

Préalables

Tâche 1 : Préparer OCI pour la diffusion en continu des journaux

  1. Activer les journaux dans le service de journalisation OCI.

    Pour ce tutoriel, nous utiliserons les journaux de vérification. Vous pouvez également activer le service ou des journaux personnalisés en fonction de votre cas d'utilisation. Pour plus d'informations, voir Aperçu du service de journalisation.

  2. Créer un flux.

    Pour que Fluentd puisse démarrer les journaux d'expédition, les données ont besoin d'une source cohérente. Dans OCI, cette source est un flux compatible 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, des instances de calcul aux services de réseau, peut être dirigé vers ce flux. Cela consolide non seulement les données de journal, mais garantit également que Fluentd dispose d'un point d'extrémité unique à partir duquel extraire les données.

    1. Pour créer un flux, voir Création d'un flux.

      Bouton Modifier

    2. Naviguez jusqu'à Groupe de flux et notez le nom du flux, le serveur d'amorçage, le nom d'utilisateur du groupe de flux et le jeton d'authentification généré pour l'utilisateur. Pour plus d'informations, voir Jeton d'authentification.

      Nous aurons besoin de tout cela dans notre fichier de configuration Fluentd.

      Bouton Modifier

  3. Créez un centre de connecteurs OCI.

    OCI Connector Hub agit en tant qu'orchestrateur, acheminant les journaux de divers services vers le flux. Avec le centre de connecteurs OCI, vous pouvez définir des connecteurs qui déplacent les journaux du service de journalisation OCI avec des journaux de vérification, des journaux de service et des journaux personnalisés et les diriger vers le flux. Pour créer un concentrateur de connecteurs, entrez les informations suivantes.

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

    Bouton Modifier

    Bouton Modifier

    Bouton Modifier

    Pour plus d'informations, voir Création d'un connecteur avec une source de journalisation.

Tâche 2 : Installer et configurer Fluentd

Avec le flux opérationnel, il est temps de configurer Fluentd. Ici, l'objectif est de déployer Fluentd sur une instance de calcul OCI et de la configurer pour consommer des journaux à partir du flux.

Pourquoi utiliser une instance de calcul OCI? Considérez-le comme l'intermédiaire qui comble l'écart entre les journaux OCI et Elastic Cloud. C'est là que Fluentd va s'exécuter, ingérer les données du flux et les transmettre à Elastic.

Accédez par 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

Note : Si vous configurez l'instance de calcul dans OCI, assurez-vous que le module complémentaire pour le journal personnalisé est désactivé.

Tâche 3 : Installer des plugiciels 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 transmetteur vers Elasticsearch. Cela nécessite l'installation de deux plugins clés :

Exécutez la commande suivante pour installer les deux plugins.

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 les journaux vers Elasticsearch, il est recommandé de vérifier que le flux d'ingestion des 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 ce faire, mettez à jour la configuration Fluentd à 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 d'amorçage et le nom du 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 d'utilisateur doit également être ajouté au domaine, par exemple <tenancy_name>/<domain_name>/<username>/ocid1.streampool.oc1.##############.

    Note :

    • ssl_ca_cert doit être une chaîne de certificats complète au format PEM, qui doit inclure le certificat de serveur (certificats du service de diffusion en continu pour OCI), les certificats intermédiaires et les certificats racines.

    • Pour établir une connexion TLS sécurisée avec le service de diffusion en continu pour OCI, 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 certificats est enregistrée dans un fichier nommé kafka_chain.pem. Ensuite, téléchargez le certificat G2 racine globale DigiCert du certificat racine approuvé utilisé par le service de diffusion en continu pour OCI à partir de la page Certificats racine DigiCert au format PEM et enregistrez-le sous root.pem. Enfin, ajoutez le certificat racine à votre fichier de 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 le service de diffusion en continu pour OCI.

  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 commenceront à 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 : Transférer les 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 plugiciel 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>
    

    Note : L'ID nuage est un ID unique qui est affecté à votre grappe Elasticsearch hébergée sur Elastic Cloud. Tous les déploiements obtiennent automatiquement un ID nuage. Pour trouver votre ID nuage et votre mot de passe pour l'utilisateur élastique, voir Rechercher votre ID nuage.

  2. Redémarrez Fluentd pour appliquer les modifications.

    sudo systemctl restart fluentd.service
    

Tâche 6 : Valider et déverrouiller les données clés dans ElasticSearch

Les journaux sont diffusés en continu dans Elastic avec succès, 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 permet d'explorer et d'extraire de façon transparente des informations précieuses. Pour plus d'informations, voir Vues de données.

Bouton Modifier

Bouton Modifier

Remerciements

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

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