Remarque :

Déplacer les journaux d'Oracle Cloud Infrastructure vers Sumo Logic

Introduction

La plate-forme d'Observabilité et de gestion d'Oracle Cloud vise à répondre à nos clients où ils se trouvent. Nous comprenons qu'ils ont normalisé leurs opérations grâce à des outils d'observabilité tiers populaires 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 (OCI).

Dans ce tutoriel, nous vous expliquerons comment déplacer des journaux d'OCI vers Sumo Logic. Sumo Logic est un outil d'observabilité populaire qui fournit des services de surveillance et de sécurité qui fournissent une visibilité complète sur vos applications.

Notre architecture de solution de haut niveau est la suivante :

Créer un collecteur de source HTTP personnalisé dans Sumo Logic

Dans votre compte Sumo Logic, vous devez créer une application de collecteur personnalisée HTTP comme décrit dans les étapes ci-dessous.

  1. Cliquez sur Assistant Configuration.

  2. Cliquez sur Démarrer la transmission en continu des données vers Sumo Logic.

  3. Cliquez sur Votre application personnalisée.

  4. Cliquez sur Source HTTPS.

  5. Configurez la source HTTP comme indiqué ci-dessous.

    Remarque : la source HTTP est une balise de métadonnées stockée avec les journaux imbriqués. Elle est utile pour rechercher et filtrer les journaux ultérieurement dans Sumo Logic. Chaque ligne de journal que nous allons inclure commence par un horodatage de son occurrence d'événement. Sélectionnez donc l'option Utiliser le fuseau horaire à partir du fichier journal.

    Lorsque vous passez à l'écran suivant, nous obtenons l'adresse HTTPS de nos journaux à télécharger à partir d'OCI, à l'aide d'un appel HTTP POST. Notez cette adresse car nous allons configurer notre fonction afin d'utiliser cette adresse pour télécharger les journaux vers Sumo Logic.

Configuration des journaux à capturer

Vous pouvez configurer les journaux en tant qu'entrée pour Service Connector Hub et ainsi les inclure dans Sumo Logic. Pour simplifier ce tutoriel, nous capturons les journaux générés par Oracle Cloud Infrastructure (OCI) pour les événements d'écriture dans un bucket arbitraire de votre choix.

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

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

  3. Sélectionnez le compartiment, ajoutez LogGroupForBucketActivity comme nom et une description. Cliquez sur Créer.

  4. Sélectionnez Journaux dans le menu Journalisation. Un écran semblable à celui ci-dessous s'affiche.

  5. Cliquez sur Activer le journal de service et entrez les informations suivantes :

    • Service : sélectionnez Object Storage
    • Ressource : choisissez un bucket arbitraire (par exemple, BucketForSumoLogic) à observer avec les journaux.
    • Catégorie de journal : Sélectionnez Evénements d'accès en écriture
    • Nom du journal : saisissez le nom du journal, par exemple logForBucketActivity.
    • Groupe de journaux : sélectionnez le groupe de journaux LogGroupForBucketActivity pour le journal que vous venez de créer à l'étape précédente.
  6. Cliquez sur Activer le journal.

    A chaque fois qu'un objet est téléchargé dans le bucket BucketForSumoLogic, une entrée de journal est ajoutée au journal logForBucketActivity.

Configurer Oracle Functions pour assimiler les journaux à Sumo Logic

  1. Dans la console Oracle Cloud, cliquez sur le menu de navigation et sélectionnez Solution et plate-forme. Sélectionnez Fonctions dans le menu Services de développeur.

  2. Cliquez sur Créer une application et entrez un nom, par exemple SumoLogicFnApp.

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

  4. Lancez Cloud Shell.

  5. Utilisez le contexte pour votre région.

    fn list context
    fn use context us-ashburn-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 iad.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]
    

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

  8. En supposant que vous avez déjà créé le jeton d'authentification, connectez-vous au registre en utilisant le jeton d'authentification comme mot de passe.

    docker login iad.ocir.io
    

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

    Vous êtes invité à saisir les informations suivantes :

    • Nom utilisateur : <tenancyname>/<nom utilisateur>
    • Mot de passe : créez un mot de passe

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

    Vérifiez la configuration en répertoriant les applications dans le compartiment.

    fn list apps
    
  9. Générez une fonction de boilerplate 'hello-world'.

    fn init --runtime python sumologicfn
    

    La commande fn init génère un dossier nommé SumoLogicfn contenant trois fichiers : 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 json
      import logging
      import os
      
      import requests
      from fdk import response
      
    2. Définissez une fonction pour analyser les données du journal et appelez l'API Sumo Logic pour inclure les journaux.

      # This method is the entrypoint for your Function invokation 
      # aka the method invoked by the OCI Fn platform
      # it will receive the list of log entries from OCI as input in the form of bytestream
      # the method name will be defined in func.yml
      def handler(ctx, data: io.BytesIO = None):
          logger = logging.getLogger()
          logger.info("function start")
      
          # Sumologic endpoint URL to upload OCI logs to HTTP custom app.
          # this value will be defined defined in func.yaml
          sumologic_endpoint = os.environ['SUMOLOGIC_ENDPOINT']
      

      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. Extrayez les entrées de journal de Service Connector Hub reçues par notre fonction sumologicfn en tant que données traitées d'appel. Effectuez une boucle sur ces entrées de journal et ces lignes de journal une par une.

      try:
          logentries = json.loads(data.getvalue()) # deserialize the bytesstream input as JSON array
          if not isinstance(logentries, list):
              logger.error('Invalid connector payload. No log queries detected')
              raise
      
          # Optional...log the input to the function as human readble JSON. 
          # Not to be used in production
          logger.info("json input from SCH")
          logger.info(data.getvalue()) 
      
          for logEntry in logentries: 
              logger.info("Extracting/Parse log details from the log entry json")
              event_name = logEntry["data"]["requestResourcePath"] + '\t'
              time_of_event = logEntry["time"] + '\t'
              cmpt_name = logEntry["data"]["compartmentName"] + '\t'
              bucket_namespace = logEntry["data"]["namespaceName"] + '\t'
              bucket_name = logEntry["data"]["bucketName"] + '\t'
              request_action = logEntry["data"]["requestAction"]
      
              log_line = time_of_event + event_name + cmpt_name + \
                          bucket_namespace + bucket_name + request_action
      
              # Call the Sumologic with the payload and ingest the OCI logs
              headers = {'Content-type': 'text/plain'}
              response_from_sumologic = requests.post(sumologic_endpoint,
                                                      data=log_line,
                                                      headers=headers)
              logging.getLogger().info(response_from_sumologic.text)
      
          logger.info("function end")
          return
      
      except Exception as e:
           logger.error("Failure in the function: {}".format(str(e)))
           raise
      
  10. Remplacez le contenu de func.yml comme suit. Veillez à saisir la valeur de votre SumoLogic_ENDPOINT obtenue à l'étape précédente.

    schema_version: 20180708
    name: sumologicfn
    version: 0.0.1
    runtime: python
    entrypoint: /python/bin/fdk /function/func.py handler
    memory: 1024
    timeout: 120
    config:
      SUMOLOGIC_ENDPOINT: [YOUR SUMOLOGIC API ENDPOINT URL HERE]
    
  11. Remplacez le contenu requirements.txt comme suit.

    fdk
    requests
    
  12. déployer la fonction,

    fn -v deploy --app sumologicFnApp --no-bump
    
  13. Vous pouvez éventuellement tester votre fonction SumoLogicfn avec un exemple d'entrée comme suit :

    curl -O https://raw.githubusercontent.com/mayur-oci/sumologicfn/main/example.json
    fn invoke sumologicFnApp sumologicfn < example.json
    

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

  1. Dans la console Oracle Cloud, cliquez sur le menu de navigation et sélectionnez Solution et plate-forme. Sélectionnez Connecteurs de service dans le menu Journalisation.

  2. Cliquez sur Créer un connecteur, puis, dans la liste déroulante Source, sélectionnez Journalisation et, dans la liste déroulante Fonctions, sélectionnez Cible.

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

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

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

Le connecteur de service est désormais configuré et déclenchera l'inclusion de journaux dans Sumo Logic chaque fois qu'il trouve des journaux dans le service Logging.

Visualisation des journaux Oracle Cloud Infrastructure dans Sumo Logic

  1. Dans Sumo Logic, sélectionnez le menu Source - Application personnalisée pour afficher les journaux inclus dans Oracle Cloud Infrastructure (OCI) à l'aide de notre fonction SumoLogicfn.

Résoudre

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

Pour plus de détails, reportez-vous à Présentation de Functions.

Créer un sujet et un abonnement pour le service de notification

  1. Dans la console Oracle Cloud, dans le menu de navigation en haut à gauche, sélectionnez Intégration d'application, puis Notifications.

  2. Cliquez sur Créer une rubrique et créez une rubrique portant le nom my_function_status.

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

    • Protocole : par courriel et ajoutez un abonnement à votre courriel.
  4. L'abonnement sera créé avec le statut "En attente". Vous recevrez un courriel de confirmation et devrez cliquer sur le lien figurant dans le courriel pour confirmer votre adresse électronique.

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

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

  2. Choisissez l'application et la fonction à surveiller.

  3. Sur la page Mesures, accédez au graphique Erreurs de fonction, cliquez sur Options, puis sur Créer 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 your_compartment, puis Sujet en tant que my_function_status.

Surveiller le hub de connecteur de service de statut

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

Pour plus de détails, reportez-vous à Service Connector Hub Overview.

Créer un sujet et un abonnement pour le service de notification

  1. Dans le menu de navigation en haut à gauche, sélectionnez Intégration d'application, puis Notifications.

  2. Cliquez sur Créer une rubrique et créez une rubrique avec le nom my_sch_status.

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

    • Protocole : par courriel et ajoutez un abonnement à votre courriel
  4. L'abonnement sera créé avec le statut "En attente". Vous recevrez un courriel de confirmation et devrez cliquer sur le lien figurant dans le courriel pour confirmer votre adresse électronique.

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

  1. Dans le menu de navigation en haut à gauche, sélectionnez Journalisation, puis Connecteurs de service.

  2. Choisissez le connecteur à surveiller et, dans la liste Ressources du panneau de navigation de gauche, sélectionnez Mesures.

  3. Dans le graphique de mesures auquel ajouter l'alarme, par exemple "Erreurs de Service Connector Hub", cliquez sur Options et sur Créer 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 your_compartment, puis Sujet en tant que my_sch_status.

Conclusion

Ce tutoriel a expliqué comment les clients Oracle Cloud Infrastructure et Sumo Logic peuvent configurer une solution hautement évolutive avec une faible surcharge pour le déplacement des journaux d'Oracle Cloud Infrastructure Logging vers Sumo Logic à l'aide de Service Connector Hub et d'Oracle Functions.

Remerciements

Ressources de formation supplémentaires

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

Pour consulter la documentation du produit, consultez le centre d'aide Oracle.