Szenario - Dimensionen für ein Monitoringziel erstellen

Erfahren Sie, wie Sie Dimensionen für eine benutzerdefinierte Metrik erstellen, die von einem Connector generiert wird. Senden Sie Logdaten mit Connector Hub vom Logging-Service an Metriken (Monitoring-Service).

In diesem Szenario wird ein Connector erstellt, um eine benutzerdefinierte Metrik mit Dimensionen zu generieren, die Logdaten referenzieren. Mit diesem Connector können Sie Logdaten von Logging in Monitoring verschieben. Nach dem Verschieben der Daten können Sie die neuen benutzerdefinierten Metriken mit den vom Connector erstellten Dimensionen filtern.

Erforderliche IAM-Policy

Wenn Sie Mitglied der Administratorengruppe sind, besitzen Sie bereits die erforderliche Berechtigung, um dieses Szenario durchzuführen. Andernfalls benötigen Sie Zugriff auf Monitoring .

Der Workflow zum Erstellen des Connectors umfasst eine Standard-Policy, die bei Bedarf Berechtigungen zum Schreiben in den Zielservice erteilen. Informationen zu Policys finden Sie unter Überblick über IAM-Policys.

Ziel

In diesem Thema wird das Ziel dieses Szenarios beschrieben.

Ziel dieses Szenarios ist es, Aktualisierungsereignisse für Object Storage-Buckets zu filtern. Suchen Sie beispielsweise nach Aktualisierungen, durch die der Zugriff auf Buckets in öffentlichen Zugriff geändert wurde. Durch Ermitteln von öffentlichen Buckets können Sie verhindern, dass Geheimnisse nach außen dringen. Neben dem öffentlichen Zugriffstyp richtet dieses Szenario Filter für den Bucket-Namen, den Compartment-Namen, die Availability-Domain, den Versionsstatus und einen statischen Wert ein.

Szenario einrichten

In diesem Thema werden die Aufgaben beschrieben, die beim Einrichten dieses Szenarios erforderlich sind.

In diesem Szenario wird mit dem Connector Hub-Service aus einem Log eine Metrik erstellt. Die Einrichtung dieses Szenarios umfasst die folgenden Aufgaben:

  • Erstellen Sie einen Connector, um Logs aus Logging in eine benutzerdefinierte Metrik mit Dimensionen in Monitoring zu verschieben.

    • Logdaten: Ereignis Bucket - Aktualisieren aus Auditlogs (Loggruppe _Audit)

      Hinweis

      In diesem Szenario geht es zwar um die Loggruppe _Audit und das Bucket-Aktualisierungsereignis, aber Sie können den gleichen Ansatz für jedes in Ihrem Mandanten verfügbare Log verwenden.
    • Metrik-Namespace: bucket_events

    • Metrikname: update

    • Statischer Wert buckets-from-connector (Dimensionsname: mytags)

    • Extrahierter Wert mit Pfaddimensionen:

      Hinweis

      Jeder neue Dimensionswert erstellt einen neuen Metrikstream. Um zu viele eindeutige Metrikstreams zu generieren, die zu Throttling führen könnten, wird empfohlen, GUIDs oder UUIDs (wie Compartment-OCIDs) aus den Dimensionen auszuschließen.

      Pfadeigenschaft (Dimensionsname) Wert
      bucketName logContent.data.additionalDetails.bucketName
      compartmentName logContent.data.compartmentName
      availabilityDomain logContent.data.availabilityDomain
      publicAccessType logContent.data.additionalDetails.publicAccessType
      versioning logContent.data.additionalDetails.versionierung
  • Filtern Sie die verschobenen Daten mit den Dimensionen (statische und extrahierte Werte).

Sie können diese Aufgaben in der Oracle Cloud Infrastructure-Konsole, in der CLI oder in der API ausführen.

Konsole verwenden

In diesem Thema wird beschrieben, wie Sie das Szenario mit der Konsole einrichten.

Hilfe zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Connectors und Fehlerbehebung bei Notifications.

Aufgabe 1: Connector erstellen

In diesem Thema wird beschrieben, wie Sie mit der Konsole einen Connector erstellen, der Daten aus einem Log in eine benutzerdefinierte Metrik mit Dimensionen verschiebt.

  1. Öffnen Sie das Navigationsmenü , und wählen Sie Analysen und KI aus. Wählen Sie unter Messaging die Option Connector-Hub aus.

  2. Wählen Sie das Compartment aus, in dem Sie den Service-Connector erstellen möchten.
  3. Wählen Sie Connector erstellen aus.
  4. Verschieben sie auf der Seite Connector erstellen Aktualisierungsereignisse für Object Storage-Buckets in eine benutzerdefinierte Metrik mit benutzerdefinierten Dimensionen:

    • Geben Sie einen Connector-Namen ein, z.B. "Bucket - Aktualisierung". Geben Sie dabei keine vertraulichen Informationen ein.
    • Wählen Sie das Resource Compartment aus, in dem Sie den neuen Connector speichern möchten.
    • Wählen Sie unter Connector konfigurieren den Quell- und Zielservice aus, um Logdaten in eine Metrik zu verschieben:
      • Quelle: Logging
      • Ziel: Monitoring
    • Wählen Sie unter Quellverbindung konfigurieren Auditlogs aus:
      • Compartment: Das Compartment mit den Logdaten.
      • Loggruppe: _Audit
      • Logs: (Null)
    • Wählen Sie unter Logfilteraufgabe das Aktualisierungsereignis für Object Storage-Buckets aus:
      • Filtertyp: Ereignistyp
      • Servicename: Object Storage
      • Ereignistyp: Objekt - Aktualisieren
    • Überspringen Sie Aufgabe konfigurieren.
    • Geben Sie unter Zielverbindung konfigurieren den benutzerdefinierten Metrik-Namespace und den benutzerdefinierten Metriknamen ein, die Sie für die gefilterten Logdaten verwenden möchten:
      • Wählen Sie das Compartment aus, in dem Sie die Metrikdatenpunkte speichern möchten, die dem Bucket-Aktualisierungsereignis entsprechen.
      • Geben Sie einen neuen Metrik-Namespace ein: bucket_events.
        Hinweis

        Wenn Sie einen neuen Metrik-Namespace eingeben, drücken Sie die Eingabetaste, um ihn zu senden.
      • Geben Sie eine neue Metrik ein: Aktualisieren

      Erstellen Sie als Nächstes benutzerdefinierte Dimensionen, um die Logdaten mit dem statischen Wert "buckets-from-connector" zu taggen und um den Bucket-Namen, den Compartment-Namen, die Compartment-OCID, die Availability-Domain, den öffentlichen Zugriffstyp und den Versionsstatus zu extrahieren.

    • Wählen Sie Dimensionen hinzufügen aus.

      Der Fensterbereich Dimensionen hinzufügen wird angezeigt.

    • Extrahieren Sie den Bucket-Namen aus den Logdaten (Dimensionsname bucketName):
      1. Suchen Sie unter Pfad wählen in den verfügbaren Logdaten den Pfad für bucketName.

        Die sechs letzten Logdatenzeilen werden aus dem unter Quelle konfigurieren angegebenen Log abgerufen.

        Beispiel für ein Fragment von Logdaten mit dem Pfad bucketName:

        {
          "datetime": 1636594090595,
          "logContent": {
            "data": {
              "additionalDetails": {
                "bucketName": "bucket-20210722-1148",
        
      2. Aktivieren Sie das Kontrollkästchen für den gewünschten Pfad.

        Hinweis

        Wenn keine Logdaten verfügbar sind, können Sie unter Pfad bearbeiten manuell einen Pfadwert mit einem benutzerdefinierten Dimensionsnamen eingeben. Der Pfad muss mit logContent beginnen und entweder die Punkt- (.) oder Indexnotation ([]) verwenden. Punkt und Index sind die einzigen unterstützten JMESPath-Selektoren. Beispiele:
        • logContent.data (Punktnotation)
        • logContent.data[0].content (Indexnotation)

        Beispielpfad für ein Bucket-Aktualisierungsereignis mit Punktnotation:

        logContent.data.additionalDetails.bucketName

        Weitere Informationen zur gültigen Pfadnotation finden Sie unter JmesPathDimensionValue.

        Die folgende Abbildung zeigt ein Beispiel eines ausgewählten Pfads (bucketName) und eines nicht ausgewählten Pfads (eTag):

        Ausgewählte und nicht ausgewählte Pfade

        Unter Pfad bearbeiten werden die folgenden Felder automatisch anhand des ausgewählten Pfads aufgefüllt. Sie können optional den standardmäßigen Dimensionsnamen bearbeiten.

        Dimensionsname Wert
        bucketName logContent.data.additionalDetails.bucketName
    • Wiederholen Sie die Extraktion für jeden zusätzlichen Wert, den Sie als Dimension (Filter) verwenden möchten: Aktivieren Sie unter Pfad wählen das Kontrollkästchen für den Pfad, der dem Dimensionsnamen in der folgenden Tabelle entspricht.

      Der Wert wird automatisch anhand des ausgewählten Pfads aufgefüllt. Sie können optional den standardmäßigen Dimensionsnamen bearbeiten.

      Dimensionsname Wert
      compartmentName logContent.data.compartmentName
      availabilityDomain logContent.data.availabilityDomain
      publicAccessType logContent.data.additionalDetails.publicAccessType
      versioning logContent.data.additionalDetails.versionierung
    • Taggen Sie die Logdaten mit dem statischen Wert "buckets-from-connector" (Dimensionsname "mytags"): Geben Sie unter Statische Werte Folgendes ein:
      • Dimension: mytags
      • Wert: buckets-from-connector
  5. Wählen Sie Speichern aus.

    Der Fensterbereich Dimensionen hinzufügen wird geschlossen. Der Fokus wechselt zur Seite Connector erstellen.

  6. Wenn Sie aufgefordert werden, eine Policy zu erstellen (für das Erstellen oder Aktualisieren eines Connectors erforderlich), wählen Sie Erstellen aus.
  7. Klicken Sie auf Erstellen.

    Der neue Connector beginnt sofort mit dem Verschieben von Logdaten in die benutzerdefinierte Metrik update mit den von Ihnen angegebenen Dimensionen.

    Filtern Sie als Nächstes die verschobenen Daten mit den Dimensionen.

Aufgabe 2: Verschobene Daten filtern

In diesem Thema wird beschrieben, wie Sie mit der Konsole Daten, die aus einem Log in eine benutzerdefinierte Metrik mit Dimensionen verschoben wurden.

  1. Öffnen Sie das Navigationsmenü , und wählen Sie Observability and Management aus. Wählen Sie unter Monitoring die Option Metrik-Explorer aus.

  2. Füllen Sie auf der Seite Metrik-Explorer die Felder für eine neue Abfrage aus.
    • Compartment: Das Compartment mit der Metrik.
    • Metrik-Namespace: bucket_events
    • Metrikname: aktualisieren
    • Intervall: 1m

    • Statistik: Anzahl

    • Metrikdimensionen: Fügen Sie die folgenden Dimensionen hinzu.
      Dimensionsname Dimensionswert
      mytags buckets-from-connector
      bucketName bucket-20210722-1148
      compartmentName development
      availabilityDomain PHX-AD-3
      publicAccessType ObjectRead
      versioning Enabled
  3. Wählen Sie Diagramm aktualisieren aus.

    Das Diagramm zeigt Metrikdaten, die nach Dimension gefiltert sind.

    Danke Sie filtern nun Logdaten, die der Connector in eine Metrik verschoben hat.

CLI verwenden

In diesem Thema wird beschrieben, wie Sie mit der CLI den Connector erstellen und die verschobenen Daten filtern.

Informationen zur Verwendung der API und zu Signieranforderungen finden Sie unter REST-API-Dokumentation und Sicherheitszugangsdaten. Informationen zu SDKs finden Sie unter SDKs und die CLI.

  1. Definieren Sie die Logquelle für den Connector: Speichern Sie eine Datei namens source.json.

    Beispiel für eine source.json-Datei
    {
      "kind": "logging",
      "logSources": [
        {
          "compartmentId": "<compartment_OCID>",
            "logGroupId": "_Audit",
            "logId": null
        }
      ]
    }
  2. Definieren Sie das Ziel (Metrik und Dimensionen) für den Connector "Save a file namens target.json".

    Beispiel für eine target.json-Datei
    {
      "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. Erstellen Sie einen Connector: Öffnen Sie eine Befehlszeile, und führen Sie den Befehl oci sch service-connector create aus:

    Beispielbefehl zum Erstellen eines Connectors
    oci sch service-connector create
     --compartment-id <compartment_OCID>
     --display-name "Bucket - Update"
     --source file://source.json
     --target file://target.json
  4. Fragen Sie die Metrikdaten mit den benutzerdefinierten Dimensionen ab: Öffnen Sie eine Eingabeaufforderung, und führen Sie den Befehl oci monitoring metric-data summarize-metrics-data aus:

    Beispielbefehl zum Abfragen von Metrikdaten mit benutzerdefinierten Dimensionen
    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()

Hilfe zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Connectors und Fehlerbehebung bei Notifications.

API verwenden

In diesem Thema wird beschrieben, wie Sie mit der API den Connector erstellen und die verschobenen Daten filtern.

Informationen zur Verwendung der API und zu Signieranforderungen finden Sie unter REST-API-Dokumentation und Sicherheitszugangsdaten. Informationen zu SDKs finden Sie unter SDKs und die CLI.

Verwenden Sie die folgenden Vorgänge:

  1. CreateServiceConnector: Erstellen Sie einen Connector.

    Beispiel für eine CreateServiceConnector-Anforderung
    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: Metrikdaten nach Dimensionen abfragen.

    Beispiel für eine SummarizeMetricsData-Anforderung
    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()"
    }

Hilfe zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Connectors und Fehlerbehebung bei Notifications.