scénario : création de dimensions pour une cible Monitoring

Découvrez comment créer des dimensions pour une mesure personnalisée générée par un connecteur. Envoyez les données de journal du service Logging aux mesures (service Monitoring) à l'aide de Connector Hub.

Ce scénario implique la création d'un connecteur afin de générer une mesure personnalisée avec des dimensions référençant les données de journal. Utilisez ce connecteur pour déplacer les données de journal de Logging vers Monitoring. Une fois les données déplacées, vous pouvez filtrer les nouvelles mesures personnalisées à l'aide des dimensions créées par le connecteur.

Stratégie IAM requise

Si vous êtes membre du groupe d'administrateurs, vous disposez déjà de l'accès requis pour réaliser ce scénario. Sinon, vous devez avoir accès à Monitoring .

Le workflow de création du connecteur inclut une stratégie par défaut lorsque nécessaire afin de fournir des droits d'accès en écriture au service cible. Si vous ne connaissez pas les stratégies, reportez-vous à Présentation des stratégies IAM.

Objectif

Cette rubrique décrit l'objectif de ce scénario.

L'objectif de ce scénario est d'appliquer un filtre aux événements d'actualisation pour les buckets Object Storage. Par exemple, rechercher les mises à jour qui ont fait passer des buckets en accès public. La recherche de buckets publics peut empêcher la fuite de clés secrètes. Outre le type d'accès public, ce scénario configure des filtres pour le nom de bucket, le nom de compartiment, le domaine de disponibilité, le statut de gestion des versions et une valeur statique.

Configuration de ce scénario

Cette rubrique décrit les tâches de configuration de ce scénario.

Ce scénario crée une mesure à partir d'un journal à l'aide du service Connector Hub. La configuration de ce scénario implique les étapes suivantes :

  • Créez un connecteur pour déplacer les journaux de Logging vers une mesure personnalisée avec les dimensions dans Monitoring.

    • Données de journal : événement Bucket - Mise à jour à partir des journaux d'audit (groupe des journaux _Audit)

      Remarque

      Même si ce scénario utilise le groupe de journaux _Audit et l'événement de mise à jour de bucket, vous pouvez utiliser la même approche avec tous les journaux disponibles dans votre location.
    • Espace de noms de mesure : bucket_events

    • Nom de mesure : update

    • Valeur statique buckets-from-connector (nom de dimension : mytags)

    • Valeur extraite à l'aide des dimensions de chemin :

      Remarque

      Chaque nouvelle valeur de dimension crée un flux de données de mesure. Pour éviter de générer trop de flux de données de mesure uniques, ce qui pourrait potentiellement aboutir à un étranglement, nous recommandons d'exclure des dimensions les GUID ou les UUID (comme les OCID de compartiment).

      Propriété de chemin (nom de dimension) Valeur
      bucketName logContent.data.additionalDetails.bucketName
      compartmentName logContent.data.compartmentName
      availabilityDomain logContent.data.availabilityDomain
      publicAccessType logContent.data.additionalDetails.publicAccessType
      versioning logContent.data.additionalDetails.versioning
  • Filtrez les données déplacées avec les dimensions (valeurs statiques et extraites).

Vous pouvez effectuer ces tâches dans l'interface de ligne de commande, l'API ou la console Oracle Cloud Infrastructure.

Utilisation de la console

Cette rubrique explique comment utiliser la console pour configurer le scénario.

Pour plus d'informations sur le dépannage, reportez-vous à la section Troubleshooting Connectors et à la section Troubleshooting Notifications.

Tâche 1 : création du connecteur

Cette rubrique explique comment utiliser la console pour créer un connecteur qui déplace les données d'un journal vers une mesure personnalisée avec des dimensions.

  1. Ouvrez le menu de navigation et sélectionnez Analytiques et IA. Sous Messagerie, sélectionnez Hub de connecteurs.

  2. Choisissez le compartiment dans lequel créer le connecteur de service.
  3. Sélectionnez Créer un connecteur.
  4. Sur la page Créer un connecteur, déplacez les événements de mise à jour pour les buckets Object Storage vers une mesure personnalisée avec des dimensions personnalisées :

    • Saisissez un nom de connecteur tel que "Bucket - Mise à jour". Evitez de saisir des informations confidentielles.
    • Sélectionnez le compartiment de ressource dans lequel stocker le nouveau connecteur.
    • Sous Configurer un connecteur, sélectionnez les services source et cible pour déplacer les données de journal vers une mesure :
      • Source : Logging
      • Cible : Monitoring
    • Sous Configurer une connexion source, sélectionnez Journaux d'audit :
      • Compartiment : compartiment contenant les données de journal.
      • Groupe de journaux : _Audit
      • Journaux : (ne pas renseigner)
    • Sous Tâche de filtre du journal, sélectionnez l'événement de mise à jour pour les buckets Object Storage :
      • Type de filtre : Type d'événement
      • Nom de service : Object Storage
      • Type d'événement : Object - Mise à jour
    • Ignorez l'étape Configurer une tâche.
    • Sous Configurer la connexion cible, saisissez l'espace de noms de mesure personnalisé et le nom de mesure personnalisé à utiliser pour les données de journal filtrées :
      • Sélectionnez le compartiment dans lequel stocker les points de données de mesure correspondant à l'événement de mise à jour de bucket.
      • Saisissez un nouvel espace de noms de mesure : bucket_events.
        Remarque

        Lorsque vous saisissez un nouvel espace de noms de mesure, appuyez sur Entrée pour le soumettre.
      • Saisissez une nouvelle mesure : update

      Ensuite, créez des dimensions personnalisées pour baliser les données de journal avec la valeur statique "buckets-from-connector" et pour extraire le nom de bucket, le nom de compartiment, l'OCID de compartiment, le domaine de disponibilité, le type d'accès public et le statut de gestion des versions.

    • Sélectionnez Ajouter des dimensions.

      Le panneau Ajouter des dimensions apparaît.

    • Extrayez le nom de bucket à partir des données de journal (nom de dimension bucketName) :
      1. Sous Sélectionner un chemin, parcourez les données de journal disponibles pour le chemin bucketName.

        Les six dernières lignes des données de journal sont extraites du journal indiqué sous Configurer une source.

        Exemple de fragment de données de journal indiquant le chemin bucketName :

        {
          "datetime": 1636594090595,
          "logContent": {
            "data": {
              "additionalDetails": {
                "bucketName": "bucket-20210722-1148",
        
      2. Cochez la case correspondant au chemin souhaité.

        Remarque

        Si aucune donnée de journal n'est disponible, vous pouvez saisir manuellement une valeur de chemin avec un nom de dimension personnalisée sous Modifier le chemin. Le chemin doit commencer par logContent et utiliser la notation par points (.) ou par index ([]). Les points et les index sont les seuls sélecteurs JMESPath pris en charge. Exemples :
        • logContent.data (notation par points)
        • logContent.data[0].content (notation par index)

        Exemple de chemin pour un événement de mise à jour de bucket, avec la notation par points :

        logContent.data.additionalDetails.bucketName

        Pour plus d'informations sur la notation de chemin valide, reportez-vous à JmesPathDimensionValue.

        L'image suivante présente un exemple de chemin sélectionné (bucketName) et de chemin non sélectionné (eTag) :

        Chemins sélectionné et non sélectionné

        Sous Modifier le chemin, les champs suivants sont automatiquement renseignés à partir du chemin sélectionné . Vous pouvez éventuellement modifier le nom de dimension par défaut.

        Nom de dimension Valeur
        bucketName logContent.data.additionalDetails.bucketName
    • Répétez l'extraction pour chaque valeur supplémentaire à utiliser en tant que dimension (filtre) : sous Sélectionner un chemin, cochez la case du chemin correspondant au nom de dimension dans le tableau suivant.

      La valeur est automatiquement renseignée à partir du chemin sélectionné. Vous pouvez éventuellement modifier le nom de dimension par défaut.

      Nom de dimension Valeur
      compartmentName logContent.data.compartmentName
      availabilityDomain logContent.data.availabilityDomain
      publicAccessType logContent.data.additionalDetails.publicAccessType
      versioning logContent.data.additionalDetails.versioning
    • Balisez les données de journal avec la valeur statique "buckets-from-connector" (nom de dimension "mytags"). Sous Valeurs statiques, saisissez les informations suivantes :
      • Nom de dimension : mytags
      • Valeur : buckets-from-connector
  5. Sélectionnez Enregistrer les modifications.

    Le panneau Ajouter des dimensions se ferme. Le focus passe sur la page Créer un connecteur.

  6. Si vous êtes invité à créer une stratégie (obligatoire pour accéder à la création ou à la mise à jour d'un connecteur), sélectionnez Créer.
  7. Sélectionnez Créer.

    Le nouveau connecteur commence immédiatement à déplacer les données de journal vers la mesure personnalisée update avec les dimensions indiquées.

    Filtrez ensuite les données déplacées à l'aide des dimensions.

Tâche 2 : filtrage des données déplacées

Cette rubrique explique comment utiliser la console pour filtrer les données déplacées d'un journal vers une mesure personnalisée avec des dimensions.

  1. Ouvrez le menu de navigation et sélectionnez Observation et gestion. Sous Surveillance, sélectionnez Explorateur de mesures.

  2. Sur la page Explorateur de mesures, renseignez les champs pour une nouvelle requête.
    • Compartiment : compartiment contenant la mesure.
    • Espace de noms de mesure : bucket_events
    • Nom de mesure : update
    • Intervalle : 1m

    • Statistique : Count

    • Dimensions de mesure : ajoutez les dimensions suivantes.
      Nom de dimension Valeur de dimension
      mytags buckets-from-connector
      bucketName bucket-20210722-1148
      compartmentName development
      availabilityDomain PHX-AD-3
      publicAccessType ObjectRead
      versioning Enabled
  3. Sélectionnez Mettre le graphique à jour.

    Le graphique présente les données de mesure filtrées par dimension.

    Bravo ! Vous filtrez désormais les données de journal déplacées vers une mesure.

Utilisation de l'interface de ligne de commande

Cette rubrique explique comment utiliser l'interface de ligne de commande pour créer le connecteur et filtrer les données déplacées.

Pour plus d'informations sur l'utilisation de l'API et la signature des demandes, reportez-vous à la documentation relative à l'API REST et à Informations d'identification de sécurité. Pour plus d'informations sur les kits SDK, reportez-vous à Kits SDK et interface de ligne de commande.

  1. Définissez la source de journal pour le connecteur : enregistrez un fichier nommé source.json.

    Exemple de fichier source.json
    {
      "kind": "logging",
      "logSources": [
        {
          "compartmentId": "<compartment_OCID>",
            "logGroupId": "_Audit",
            "logId": null
        }
      ]
    }
  2. Définissez la cible (mesure et dimensions) pour le connecteur : enregistrez un fichier nommé target.json.

    Exemple de fichier target.json
    {
      "kind": "monitoring",
      "compartmentId": "<compartment_OCID>",
      "metricNamespace": "bucket_events",
      "metric": "update",
      "dimensions": [
        {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}},
        {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}},
        {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}},
        {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}},
        {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}},
        {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}}
      ]
    }
  3. Créez un connecteur : ouvrez une invite de commande et exécutez la commande oci sch service-connector create :

    Exemple de commande pour la création d'un connecteur
    oci sch service-connector create
     --compartment-id <compartment_OCID>
     --display-name "Bucket - Update"
     --source file://source.json
     --target file://target.json
  4. Interrogez les données de mesure à l'aide des dimensions personnalisées. Pour cela, ouvrez une invite de commande et exécutez la commande oci monitoring metric-data summarize-metrics-data :

    Exemple de commande pour l'interrogation des données de mesure à l'aide de dimensions personnalisées
    oci monitoring metric-data summarize-metrics-data
     --compartment-id <compartment_OCID>
     --namespace bucket_events
     --query-text update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()

Pour plus d'informations sur le dépannage, reportez-vous à la section Troubleshooting Connectors et à la section Troubleshooting Notifications.

Utilisation de l'API

Cette rubrique explique comment utiliser l'API pour créer le connecteur et filtrer les données déplacées.

Pour plus d'informations sur l'utilisation de l'API et la signature des demandes, reportez-vous à la documentation relative à l'API REST et à Informations d'identification de sécurité. Pour plus d'informations sur les kits SDK, reportez-vous à Kits SDK et interface de ligne de commande.

Utilisez les opérations suivantes :

  1. CreateServiceConnector : créez un connecteur.

    Exemple de demande CreateServiceConnector
    POST /20200909/serviceConnectors
    Host: service-connector-hub.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "compartmentId": "<compartment_OCID>",
      "displayName": "Bucket - Update",
      "source": {
        "kind": "logging",
        "logSources": [
          {
            "compartmentId": "<compartment_OCID>",
            "logGroupId": "_Audit",
            "logId": null
          }
        ]
      },
      "target": {
        "compartmentId": "<compartment_OCID>",
        "dimensions": [
          {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}},
          {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}},
          {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}},
          {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}},
          {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}},
          {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}}
        ]
        "kind": "monitoring",
        "metric": "update",
        "metricNamespace": "bucket_events"
      }
    }
  2. SummarizeMetricsData : interrogez les données de mesure par dimension.

    Exemple de demande SummarizeMetricsData
    POST /20180401/metrics/actions/summarizeMetricsData?compartmentId=<compartment_OCID>
    Host: telemetry.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "namespace": "bucket_events",
      "query": "update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()"
    }

Pour plus d'informations sur le dépannage, reportez-vous à la section Troubleshooting Connectors et à la section Troubleshooting Notifications.