Remarque :

Surveiller Oracle Cloud Infrastructure avec Datadog

Introduction

La plate-forme Observability and Manageability d'Oracle Cloud vise à rencontrer nos clients là où ils se trouvent. Nous comprenons qu'ils ont normalisé leurs postures opérationnelles avec des outils d'observabilité populaires 3e partie et nous voulons être interopérables avec ces outils afin que nos clients puissent continuer à utiliser les outils dans lesquels ils ont investi avec Oracle Cloud Infrastructure.

Dans ce tutoriel, nous allons vous expliquer comment déplacer des journaux d'Oracle Cloud Infrastructure vers Datadog. Datadog est un outil d'observabilité populaire qui fournit des services de surveillance et de sécurité offrant une visibilité complète sur vos applications.

Création d'une clé d'API Datadog

  1. Dans votre compte Datadog, sélectionnez Intégrations, puis sous API, cliquez sur Créer une clé d'API. Votre clé d'API sera générée.

    menu datadog

    clé datadog

Configurer les journaux à capturer

  1. Dans la console Oracle Cloud Infrastructure, cliquez sur le menu de navigation et sélectionnez Groupes de journaux sous le menu Journalisation.
     

  2. Pour créer un groupe de journaux, cliquez sur Créer un groupe de journaux.

    créer un groupe de journaux
     

  3. Sélectionnez votre compartiment, ajoutez un nom data_log_group et une description.

    nouveau groupe de journaux
     

  4. Une fois le groupe de journaux créé, sélectionnez Journaux dans le menu de gauche.
     

  5. Cliquez sur Enable Service Log, remplissez la boîte de dialogue et cliquez sur Enable Log. Sélectionnez Catégorie de journal dans Service.

    • Ressource : entrez le journal que vous utiliserez comme ressource.
    • Nom de journal : saisissez le nom de votre journal, par exemple, datadog.

    Renseignez les autres champs de manière appropriée. Reportez-vous à cet exemple, dans lequel la banque d'objets Oracle portant le nom de bucket datadog_logs est affichée.

    journal de service
     

Configurer la fonction Oracle pour l'inclusion des journaux dans Datadog

  1. Cliquez sur le menu de navigation, puis sélectionnez la section Solution et plate-forme. Sélectionnez Fonctions dans le menu Services de développeur.
     

  2. Cliquez sur Créer une application et saisissez un nom, par exemple, datadog01.

    création d'application 
     

  3. Une fois l'application créée, cliquez sur son nom et sélectionnez Mise en route dans le menu de gauche.

    fonction oracle  

  4. Lancez Cloud Shell.  

  5. Utilisez le contexte pour votre région.

    fn list contextfn list context
    fn use context us-phoenix-1
    
  6. Mettez à jour le contexte avec l'ID de compartiment de la fonction.

    fn update context oracle.compartment-id <compartment-id>
    
  7. Mettez à jour le contexte avec l'emplacement du registre à utiliser.

    fn update context registry phx.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]
    

    Remplacez phx par le code de région à trois chiffres.

  8. Cliquez sur Générer un jeton d'authentification.

    Se connecter au registre à l'aide du mot de passe

    docker login phx.ocir.io
    

    Remplacez phx par le code de région à trois chiffres.

    Vous êtes invité à saisir les informations suivantes :

    • Nom d'utilisateur : <tenancyname>/<username>
    • Mot de passe : créer un mot de passe

    Remarque : si vous utilisez Oracle Identity Cloud Service, votre nom utilisateur est <tenancyname>/oracleidentitycloudservice/<username>.

  9. Générez une fonction boilerplate 'hello-world'.

    fn init --runtime python datadog
    

    La commande fn init génère un dossier nommé datadog avec 3 fichiers à l'intérieur ; func.py, func.yaml et requirements.txt.

    Ouvrez func.py et remplacez le contenu du fichier par le code suivant :

    1. Importez les modules Python nécessaires, comme indiqué dans le fragment de code suivant :

      	  import io
      	  import oci
      	  import re
      	  import os
      	  import json
      	  import sys
      	  import requests
      	  import logging
      	  import time
      	  from fdk import response
      
      
    2. Définissez une fonction permettant d'analyser les données de journal et d'appeler l'API Datadog pour inclure les journaux.

      def handler(ctx, data: io.BytesIO=None):
         try:
           logs = json.loads(data.getvalue())
      

      Pour plus d'informations sur le format des journaux générés par le service Oracle Cloud Infrastructure Logging, reportez-vous à Présentation du format de journalisation.

    3. Obtenez la source de journal, l'horodatage et les données de chaque entrée de journal.

      	  if "data" in item:
      	    if type(item.get("data")) is dict:
      		   data = item.get("data", {})
      	    else:
      		   data = item.get("data")
      	  else:
      		data = ""
      
      	  if "source" in item:
      		source = item.get("source")
      	  else:
      		Source = ""
      
      	  if "time" in item:
      		time = item.get("time")
      	  else:
      		time = ""
      
      	  payload = {}
      	  payload.update({"source":source})
      	  payload.update({"time": time})
      	  payload.update({"data":data})
      
      
    4. Créez des variables pour stocker l'URL endpoint de l'API Datadog et le jeton d'authentification.

      	  datadoghost = os.environ['DATADOG_HOST']
      	  datadogtoken = os.environ['DATADOG_TOKEN']
      
      

      Remarque : définissez les valeurs pour DATADOG_HOST et DATADOG_TOKEN dans func.yaml.

    5. Appelez l'API Datadog avec les données traitées requises.

      	  headers = {'Content-type': 'application/json', 'DD-API-KEY': datadogtoken}
      	  x = requests.post(datadoghost, data = json.dumps(payload), headers=headers)
      	  logging.getLogger().info(x.text)
      
        except (Exception, ValueError) as ex:
      	  logging.getLogger().info(str(ex))
      	  return
      
      

    La partie configuration contient l'URL endpoint Datadog et l'authentification par jeton obtenue à l'étape 1.
    L'adresse REST est https://http-intake.logs.datadoghq.com/v1/input et les détails se trouvent dans la documentation Datadog.

    func.yaml

    schema_version: 20180708
    name: datadogapp
    version: 0.0.1
    runtime: python
    entrypoint: /python/bin/fdk /function/func.py handler
    memory: 1024
    timeout: 120
    config:
    	DATADOG_HOST: https://http-intake.logs.datadoghq.com/v1/input
    	DATADOG_TOKEN: ZZZZZzzzzzzzzzz
    
    

    requirements.txt

    fdk
    datetime
    requests
    oci
    
  10. Créer votre application.

    fn create app datadog01 --annotation oracle.com/oci/subnetIds='["ocid1.subnet.oc1.phx.aaaaxxxxxxxxxxx"]'
    

    Modifiez la valeur subnetIDs de l'OCID de sous-réseau.

  11. déployer la fonction,

    fn -v deploy --app datadog
    

Créer un connecteur de service pour lire les journaux à partir de la journalisation et déclencher la fonction

  1. Cliquez sur le menu de navigation et sélectionnez la section Solution et plate-forme. Sélectionnez Connecteurs de service dans le menu Journalisation.
     

  2. Cliquez sur Créer un connecteur et sélectionnez la source Logging et la cible Functions.
     

  3. Dans Configurer la connexion source, sélectionnez le nom du compartiment, le groupe de journaux datadog_log_group et les journaux datadog.
     

  4. Si vous souhaitez utiliser les journaux d'audit, cliquez sur le bouton +Another log, choisissez votre compartiment et ajoutez _Audit pour le groupe de journaux.

    sch

  5. Si vous êtes invité à créer une stratégie pour écrire dans Functions, cliquez sur Créer.

Le connecteur de service est maintenant configuré et déclenche la fonction pour inclure les journaux dans Datadog chaque fois qu'il trouve des journaux dans le service Logging.

Visualiser les journaux d'audit OCI dans Datadog

  1. Dans Datadog, cliquez sur le menu Journaux pour afficher les journaux inclus à partir d'OCI.

    tableau de bord datadog

Résoudre les problèmes

Cette section explique comment utiliser une simple alerte par e-mail pour surveiller le statut de votre solution.

Fonction

Pour plus d'informations, reportez-vous à la documentation technique.

Création d'un sujet et d'un abonnement pour le service Notifications

  1. Dans le menu situé dans l'angle supérieur gauche, sélectionnez Intégration d'application, puis Notifications

  2. Cliquez sur Créer un sujet et créez un sujet avec le nom my_function_status.

  3. Choisissez votre sujet, cliquez sur Créer un abonnement et utilisez l'exemple suivant :

    • Protocole : envoyez un courriel et ajoutez un abonnement avec votre courriel
  4. L'abonnement sera créé avec le statut "En attente". Vous recevrez un e-mail de confirmation et devrez cliquer sur le lien dans l'e-mail pour confirmer votre adresse e-mail.

Vérifier les mesures et créer une définition d'alarme à partir de mesures

  1. Dans le menu situé dans l'angle supérieur gauche, sélectionnez Services de développeur, puis Fonctions.

  2. Choisir l'application et la fonction à surveiller

  3. Dans la page Mesures, accédez au graphique Erreurs de fonction, cliquez sur Options et créez une alarme sur cette requête.

  4. Ajoutez un nom et, sous Notification, sélectionnez Service de destination en tant que service de notification, sélectionnez le compartiment your_compartment, puis Sujet en tant que my_function_status

Service Connector Hub

Cette section explique comment utiliser une simple alerte par courriel pour surveiller le statut de Service Connector Hub (SCH).

Pour plus d'informations, reportez-vous à la documentation technique.

Création d'un sujet et d'un abonnement pour le service Notifications

  1. Dans le menu situé dans l'angle supérieur gauche, sélectionnez Intégration d'application, puis Notifications

  2. Cliquez sur Créer un sujet et créez un sujet avec le nom my_sch_status.

  3. Choisissez votre sujet, cliquez sur Créer un abonnement et utilisez l'exemple suivant :

    • Protocole : envoyez un courriel et ajoutez un abonnement avec votre courriel
  4. L'abonnement sera créé avec le statut "En attente". Vous recevrez un e-mail de confirmation et devrez cliquer sur le lien dans l'e-mail pour confirmer votre adresse e-mail.

Vérifier les mesures et créer une définition d'alarme à partir de mesures

  1. Dans le menu situé dans l'angle supérieur gauche, sélectionnez Journalisation, puis Connecteurs de service.

  2. Choisissez le connecteur à surveiller et cliquez sur le lien mesures sous Ressources dans le panneau de navigation de gauche.

  3. Dans le graphique de mesures auquel vous voulez ajouter l'alarme e.g., "Erreurs Service Connector Hub", cliquez sur Options et créez une alarme sur cette requête

  4. ajoutez un nom et, dans Notification, sélectionnez Service de destination en tant que service de notification, sélectionnez le compartiment your_compartment, puis Sujet en tant que my_sch_status.

Conclusion

Ce tutoriel a montré comment les clients Oracle Cloud Infrastructure et Datadog peuvent configurer une solution à faible coût et hautement évolutive pour déplacer des journaux d'Oracle Cloud Infrastructure Logging vers Datadog à l'aide de Service Connector Hub et de Functions.

Remerciements

Auteur - Igor Aragao de Souza (Principal consultant Big Data)

Ressources de formation supplémentaires

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

Pour consulter la documentation du produit, visitez le site Oracle Help Center.