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.
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.
-
Öffnen Sie das Navigationsmenü , und wählen Sie Analysen und KI aus. Wählen Sie unter Messaging die Option Connector-Hub aus.
- Wählen Sie das Compartment aus, in dem Sie den Service-Connector erstellen möchten.
- Wählen Sie Connector erstellen aus.
-
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
):-
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",
-
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 mitlogContent
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
):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
- Wählen Sie Speichern aus.
Der Fensterbereich Dimensionen hinzufügen wird geschlossen. Der Fokus wechselt zur Seite Connector erstellen.
- Wenn Sie aufgefordert werden, eine Policy zu erstellen (für das Erstellen oder Aktualisieren eines Connectors erforderlich), wählen Sie Erstellen aus.
- 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.
In diesem Thema wird beschrieben, wie Sie mit der Konsole Daten, die aus einem Log in eine benutzerdefinierte Metrik mit Dimensionen verschoben wurden.
-
Öffnen Sie das Navigationsmenü , und wählen Sie Observability and Management aus. Wählen Sie unter Monitoring die Option Metrik-Explorer aus.
- 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
-
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.
-
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 } ] }
-
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"}} ] }
-
Erstellen Sie einen Connector: Öffnen Sie eine Befehlszeile, und führen Sie den Befehl
oci sch service-connector create
aus:Beispielbefehl zum Erstellen eines Connectorsoci sch service-connector create --compartment-id <compartment_OCID> --display-name "Bucket - Update" --source file://source.json --target file://target.json
-
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 Dimensionenoci 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:
-
CreateServiceConnector: Erstellen Sie einen Connector.
Beispiel für eine CreateServiceConnector-AnforderungPOST /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" } }
-
SummarizeMetricsData: Metrikdaten nach Dimensionen abfragen.
Beispiel für eine SummarizeMetricsData-AnforderungPOST /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.