Logs aus dem OCI-Objektspeicher-Bucket erfassen
Sie können Logdaten kontinuierlich aus Oracle Cloud Infrastructure (OCI) Object Storage erfassen. Um die Logerfassung zu aktivieren, erstellen Sie die Ressource ObjectCollectionRule mit der REST-API oder CLI. Nach der erfolgreichen Erstellung dieser Ressource und Einrichtung der erforderlichen IAM-Policys wird die Logerfassung gestartet.
Mit dieser Methode zum Erfassen von Logs können Sie jeden Logtyp aufnehmen, der in einem Objektspeicher-Bucket gespeichert ist.
Sie können Logs auf eine der folgenden Arten aus Objektspeicher-Buckets erfassen:
-
LIVE: Für eine kontinuierliche Erfassung von Objekten ab dem Zeitpunkt der Erstellung der Regel ObjectCollectionRule. Das ist die Standardmethode.
-
HISTORIC: Für das einmalige Erfassen von Objekten für einen bestimmten Zeitraum.
-
HISTORIC_LIVE: Für das Erfassen aller historischen Logs im Bucket und danach zum kontinuierlichen Erfassen aller neu erstellten Objekte, die Logs enthalten.
Oracle Log Analytics verwendet Events and Streaming-Services von OCI in Verbindung mit Object Storage zur Erfassung und Verarbeitung von Objekten (LIVE- oder HISTORIC-Typen). Wenn Sie einen Bucket für eine Logerfassung konfigurieren, erstellt Oracle Log Analytics eine Events-Regel, um für jeden neuen Objektupload in den Bucket eine Ereignisbenachrichtigung auszugeben. Die Benachrichtigungen werden an einen von Ihnen angegebenen Stream zugestellt.
Für Objekt-Collection-Regeln vom Typ LIVE oder HISTORIC_LIVE ist eine Stream-OCID erforderlich. Wird von Oracle Log Analytics beim Erstellen einer Ereignisregel verwendet und verwendet die Ereignisbenachrichtigungen, die von Object Storage erstellt wurden. Standardmäßig wird die älteste verfügbare Nachricht im Stream zuerst konsumiert, wenn Nachrichten im Stream verarbeitet werden. Andernfalls wird die vorhandene Cursorposition verwendet, sofern bereits festgelegt.
Oracle Log Analytics bietet die folgenden Empfehlungen zum Erstellen von Streams:
- Legen Sie die Aufbewahrungsfrist von 48 Stunden fest.
- Berücksichtigen Sie Partitionen basierend auf dem Durchsatz. Jede Partition kann 1000 Objekte pro Sekunde verarbeiten (über alle Buckets, die denselben Stream verwenden). Weitere Informationen zu Streaminglimits finden Sie unter Limits für Streaming-Ressourcen.
- Optional können Sie einen einzelnen Stream für einen Mandanten verwenden.
- Verwenden Sie diesen Stream nur zum Zweck der Objekterfassung, um Probleme bei der Logverarbeitung zu vermeiden.
Zusätzlich zu streamId können Sie streamCursorType angeben, von welcher Position im Stream die Nutzung gestartet werden soll. Sie können vier Cursortypen verwenden, um Nachrichten aus dem Stream abzurufen. Siehe Nachrichten konsumieren.
- DEFAULT: Verwendet die vorhandene Cursorposition, wenn sie bereits von vorherigen ObjectCollectionRule mit demselben Stream festgelegt wurde. Andernfalls wird die älteste verfügbare Nachricht im Stream konsumiert (ähnlich TRIM_HORIZON).
- TRIM_HORIZON: Konsumiert ab der ältesten verfügbaren Nachricht im Stream.
- LATEST: Startet das Konsumieren von Nachrichten, die nach der Erstellung dieser Regel veröffentlicht werden.
- AT_TIME: Startet das Konsumieren von Nachrichten ab einem bestimmten Zeitpunkt.
Wenn streamCursorType auf AT_TIME gesetzt ist, ist auch ein Parameter streamCursorTime erforderlich, um die Zeit anzugeben, ab der die Objekte konsumiert werden sollen.
Hinweis:
-
Um eine ordnungsgemäße Logerfassung aus Object Storage sicherzustellen, vermeiden Sie es, die von Oracle Log Analytics erstellten Ereignisregeln zu ändern.
-
Pro Bucket kann nur eine ObjectCollectionRule vom Typ LIVE oder HISTORIC_LIVE enthalten.
-
Sie können bis zu 1.000 eindeutige Objekterfassungsregeln pro Mandant in einer Region erstellen.
-
Das Objekt kann entweder eine einzelne Rohlogdatei oder eine Archivdatei (
.zip
,.gz
,.tgz
,.tar
) sein, die mehrere Logdateien enthält. Die Gesamtanzahl der Dateien (einschließlich Verzeichnisse) in einer Archivdatei darf 2000 nicht überschreiten. -
Die maximale Größe des Objekts (Einzeldatei oder Archivdatei) beträgt 1 GB. Die unkomprimierte Größe des Objekts muss kleiner als 10 GB sein.
-
Die Logerfassung aus Object Storage unterstützt nur Streams mit öffentlichen Endpunkten. Streams, die mit privaten Endpunkten konfiguriert sind, werden nicht unterstützt.
-
Für eine optimale Performance der Logerfassung empfiehlt Oracle, einen dedizierten Stream ausschließlich für die Objekterfassung zu verwenden.
Voraussetzungen: Bevor Sie die Logerfassung mit diesem Ansatz aktivieren, führen Sie folgende Schritte aus:
- Erstellen Sie eine neue Logquelle, oder verwenden Sie eine von Oracle definierte Logquelle, die Ihrem Logformat entspricht. Siehe Quelle erstellen.
- Erstellen Sie eine Loggruppe, oder verwenden Sie eine vorhandene Loggruppe, in der Sie diese Logs speichern, um die Benutzerzugriffskontrolle für die Logs zu steuern und die Loggruppen-OCID zu notieren. Siehe Loggruppen zum Speichern der Logs erstellen.
- Wenn Sie die hochgeladenen Logs zuordnen möchten, erstellen Sie eine Entity, oder verwenden Sie eine vorhandene Entity, und notieren Sie die Entity-OCID. Siehe Entity zur Darstellung der protokollierenden Ressource erstellen.
- Erstellen Sie für LIVE- oder HISTORIC_LIVE-Collectionstypen einen neuen Stream, oder verwenden Sie einen vorhandenen Stream (der nur für die Objekterfassung verwendet wird). Siehe Stream erstellen.
Um die Erfassung von Objekten aus dem Bucket zu stoppen, löschen Sie die Regel ObjectCollectionRule. Dadurch wird nur die verknüpfte Konfiguration mit dem Bucket gelöscht. Der Vorgang hat aber keine Auswirkungen auf die bereits erfassten Logdaten oder die Objekte im Bucket.
Logerfassung aus Objektpeicher zulassen
Die folgenden IAM-Policy-Anweisungen müssen in Ihrer Policy enthalten sein, um der Benutzergruppe die Berechtigung zur Ausführung der erforderlichen Vorgänge auf ObjectCollectionRule bereitzustellen:
allow group <group_name> to use loganalytics-object-collection-rule in compartment <object_collection_rule_compartment>
allow group <group_name> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <log_group_compartment>
allow group <group_name> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <entity_compartment>
allow group <group_name> to {LOG_ANALYTICS_SOURCE_READ} in tenancy
allow group <group_name> to {BUCKET_UPDATE, BUCKET_READ, BUCKET_INSPECT} in compartment <object_store_bucket_compartment>
allow group <group_name> to {OBJECT_INSPECT, OBJECT_READ} in compartment <object_store_bucket_compartment>
allow group <group_name> to {STREAM_CONSUME, STREAM_READ} in compartment <stream_compartment>
Wenn Sie IAM-Policys auf aggregierter Ressourcenebene von Oracle Log Analytics erstellen, müssen die folgenden Policy-Anweisungen aufgenommen werden, um die Objekterfassung zu verwenden:
allow group <group_name> to use loganalytics-features-family in tenancy
allow group <group_name> to use loganalytics-resources-family in compartment/tenancy
allow group <group_name> to use object-family in compartment <object_store_bucket_compartment>
allow group <group_name> to use stream-family in compartment <stream_compartment>
Wenn Sie hingegen IAM-Policys auf der Ebene der einzelnen Ressourcentypen erstellen, sind die folgenden Policy-Anweisungen erforderlich, um die Objekterfassung zu verwenden:
allow group <group_name> to use loganalytics-object-collection-rule in compartment <object_collection_rule_compartment>
allow group <group_name> to use loganalytics-log-group in compartment <log_group_compartment>
allow group <group_name> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <entity_compartment>
allow group <group_name> to read loganalytics-source in tenancy
allow group <group_name> to use object-family in compartment <object_store_bucket_compartment>
allow group <group_name> to use stream-family in compartment <stream_compartment>
group_name
in allen oben genannten Policy-Anweisungen bezieht sich auf die Benutzergruppe, der die erforderlichen Berechtigungen erteilt werden müssen.
Standardmäßig deaktiviert Object Storage die automatische Ausgabe von Ereignissen auf Objektebene. Sie können die Ausgabe von Ereignissen aktivieren oder beim Erstellen von ObjectCollectionRule über die erforderlichen Berechtigungen verfügen. Informationen zum Aktivieren der Ereignisausgabe finden Sie unter Objekte verwalten. Wenn Sie einen Bucket löschen und neu erstellen, setzen Sie das Kennzeichen Objektereignisse auslösen für den Bucket, damit die vorhandene Logerfassungsregel erneut funktioniert.
Damit die Logerfassung funktioniert, müssen Sie zusammen mit den oben genannten Berechtigungen für ObjectCollectionRule erstellen auch Oracle Log Analytics die Berechtigung erteilen, die Objekte aus dem Bucket in Ihrem Mandanten zu lesen, den Stream zum Abrufen der Nachrichten zu verwenden und die Cloudereignisregeln in dem entsprechenden Compartment oder Mandanten zu verwalten, in dem sich der Objektspeicher-Bucket befindet. Der Prozess "Objekterfassung" verwendet den Resource Principal für die Ressource loganalyticsobjectcollectionrule, um auf die Objekte in Ihrem Bucket zuzugreifen. Im Folgenden werden die zusätzlichen erforderlichen IAM-Policy-Anweisungen aufgeführt:
Erstellen Sie eine dynamische Gruppe Dynamic_Group_Name mit der folgenden Vergleichsregel:
ALL {resource.type='loganalyticsobjectcollectionrule'}
Fügen Sie die folgenden zusätzlichen IAM-Policy-Anweisungen hinzu:
allow DYNAMIC-GROUP <Dynamic_Group_Name> to read buckets in compartment/tenancy
allow DYNAMIC-GROUP <Dynamic_Group_Name> to read objects in compartment/tenancy
allow DYNAMIC-GROUP <Dynamic_Group_Name> to manage cloudevents-rules in compartment/tenancy
allow DYNAMIC-GROUP <Dynamic_Group_Name> to inspect compartments in tenancy
allow DYNAMIC-GROUP <Dynamic_Group_Name> to use tag-namespaces in tenancy where all {target.tag-namespace.name = /oracle-tags/}
allow DYNAMIC-GROUP <Dynamic_Group_Name> to {STREAM_CONSUME} in compartment <stream_compartment>
Einige der oben genannten Policy-Anweisungen sind in den verfügbaren, von Oracle definierten Policy Templates enthalten. Sie können die Vorlage für Ihren Anwendungsfall verwenden. Siehe Von Oracle definierte Policy-Vorlagen für allgemeine Anwendungsfälle.
ObjectCollectionRule
-Vorgänge
Mit der REST-API oder CLI können Sie Vorgänge wie Create
, Update
, Delete
, List
und Get
für die Ressource ObjectCollectionRule ausführen.
Informationen zur Verwendung der REST-API und zu Signieranforderungen finden Sie unter REST-APIs und Sicherheitszugangsdaten.
Um mit OCI-Cloud-Services zu kommunizieren, erstellen Sie einen API-Signaturschlüssel, und registrieren Sie diesen in Ihrem Benutzeraccount in OCI. Informationen dazu, wie Sie den Schlüssel generieren und registrieren und die OCID des Mandanten und des Benutzers erfassen, finden Sie unter Sicherheitszugangsdaten - API-Signaturschlüssel.
Informationen zu SDKs finden Sie unter Software Development Kits und Befehlszeilenschnittstelle (CLI).
Mit der REST-API
Mit den folgenden API-Vorgängen können Sie ObjectCollectionRule verwalten:
Mit der CLI
Informationen zur Verwendung der CLI finden Sie unter Befehlszeilenschnittstelle (CLI).
Eine vollständige Liste der Kennzeichen und Optionen, die für CLI-Befehle verfügbar sind, finden Sie in der Befehlszeilenreferenz.
Führen Sie die folgenden CLI-Befehle aus, um ObjectCollectionRule zu verwalten:
-
ObjectCollectionRule erstellen:
oci log-analytics object-collection-rule create --from-json <json_file_name> --namespace-name <namespace_name>
Beispiel:
oci log-analytics object-collection-rule create --from-json file://create.json --namespace-name MyNamespace
Im obigen Beispielbefehl lautet das referenzierte Beispiel
create.json
:{ "name": "<Rule_Name>", "compartmentId": "<Compartment_OCID>", "osNamespace": "<Namespace>", "osBucketName": "<Bucket_Name>", "logGroupId": "<Log_Group_OCID>", "logSourceName": "<Log_Source>", "streamId":"<Stream_OCID>" }
Die folgenden obligatorischen Eigenschaften müssen im json angegeben werden:
- Name: Ein eindeutiger Name, der der ObjectCollectionRule zugewiesen wird. Der Name muss innerhalb des Mandanten eindeutig sein und kann nicht geändert werden.
- compartmentId: Die OCID des Compartments, in dem sich ObjectCollectionRule befindet.
- osNamespace: Der Objektspeicher-Namespace.
- osBucketName: Der Name des Objektspeicher-Buckets.
- logGroupId: Log Analytics-Loggruppen-OCID, mit der die verarbeiteten Logs verknüpft werden.
- logSourceName: Name der Log Analytics-Quelle, die für die Verarbeitung verwendet werden soll.
- streamId: Für Objekt-Collection-Regeln vom Typ LIVE oder HISTORIC_LIVE ist eine Stream-OCID erforderlich.
Zusätzlich zu den obligatorischen Eigenschaften können Sie optional die folgenden Eigenschaften angeben:
- collectionType: Der Typ der Collection. Zulässige Werte sind
LIVE
,HISTORIC
undHISTORIC_LIVE
. - charEncoding: Beispielwerte
ISO_8859_1
,UTF-16
- definedTags: Definierte Tags für diese Ressource. Jeder Schlüssel ist vordefiniert und gilt für einen bestimmten Namespace. Beispiel:
{"foo-namespace": {"bar-key": "value"}}
- Beschreibung: Eine Zeichenfolge, die Details der Regel beschreibt und nicht mehr als 400 Zeichen lang ist.
- entityId: OCID der Log Analytics-Entity, mit der die erfassten Logs verknüpft werden.
- freeformTags: Einfaches Schlüssel/Wert-Paar, das ohne vordefinierten Namen, Typ oder Geltungsbereich angewendet wird. Nur für Kompatibilität vorhanden. Beispiel:
{"bar-key": "value"}
- isEnabled: Standardmäßig
true
. - objectNameFilters: Beispiele finden Sie unter Selektive Objekterfassung durch Anwenden von Filtern auf Objektnamen ausführen.
- Overrides: Beispiele finden Sie unter Konfiguration von ObjectCollectionRule für die Verarbeitung bestimmter Objekte überschreiben.
- pollSince: Die älteste Uhrzeit der Datei im Bucket, die für die HISTORIC- oder HISTORIC_LIVE-Collection zu berücksichtigen ist. Akzeptierte Werte sind BEGINNING, CURRENT_TIME oder RFC3339 formatierte Datetime-Zeichenfolge. Beispiel:
2019-10-12T07:20:50.52Z
im Format RFC3339. - pollTill: Die neueste Uhrzeit der Datei im Bucket, die für die HISTORIC- oder HISTORIC_LIVE-Collection zu berücksichtigen ist. Akzeptierte Werte sind die formatierte Datetime-Zeichenfolge CURRENT_TIME oder RFC3339. Beispiel:
2019-10-12T07:20:50.52Z
im Format RFC3339. - streamCursorType: Cursortyp zum Abrufen von Nachrichten aus dem Stream.
- isForceHistoricCollection: Kennzeichen, das die historische Erfassung zulässt, wenn sich der Abrufzeitraum mit der vorhandenen ACTIVE-Erfassungsregel überschneidet.
False
, standardmäßig. - streamCursorTime: Die Zeit, ab der die Objekte konsumiert werden sollen, wenn streamCursorType AT_TIME ist. Der akzeptierte Wert muss die formatierte Datetime-Zeichenfolge RFC3339 sein. Beispiel:
2019-10-12T07:20:50.52Z
.
Weitere Informationen zu den Eigenschaften für ObjectCollectionRule und den akzeptierten Werten finden Sie unter ObjectCollectionRule API-Referenz.
Beispielantwort des obigen Beispielbefehls:
{ "id": "ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID", "name": "My Rule", "compartmentId": "ocid.compartment.oc1..exampleuniqueID", "osNamespace": "MyNamespace", "osBucketName": "MyBucket1", "collectionType": "LIVE", "pollSince": "2020-09-08 14:06:28.028", "logGroupId": "ocid1.loganalyticsloggroup.oc1.. exampleuniqueID", "logSourceName": "MyLogSource", "lifecycleState": "ACTIVE", "timeCreated": "2020-09-08T14:06:28.028Z", "timeUpdated": "2020-09-08T14:06:28.028Z", "streamId": "ocid1.stream.oc1..exampleuniqueID" }
-
Aktualisieren Sie ObjectCollectionRule:
Im Folgenden wird ein Beispielbefehl zum Aktualisieren einer Logquelle aufgeführt. Ebenso können Loggruppen, Entitys oder andere Ressourcen aktualisiert werden.
oci log-analytics object-collection-rule update --namespace-name <namespace_name> --object-collection-rule-id <object-collection-rule-OCID> --log-source-name <Log-Source>
Beispiel:
oci log-analytics object-collection-rule update --namespace-name MyNamespace --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID --log-source-name MyLogSource
-
ObjectCollectionRule löschen
oci log-analytics object-collection-rule delete --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID>
Beispiel:
oci log-analytics object-collection-rule delete --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID
-
ObjectCollectionRule auflisten:
oci log-analytics object-collection-rule list --namespace-name <Namespace> --compartment-id <compartment-OCID>
Beispiel:
oci log-analytics object-collection-rule list --namespace-name “My Namespace” --compartment-id ocid.compartment.oc1..exampleuniqueID
-
ObjectCollectionRule abrufen:
oci log-analytics object-collection-rule get --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID>
Beispiel:
oci log-analytics object-collection-rule get --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID
-
Overrides zu ObjectCollectionRule hinzufügen:
Wenn die ObjectCollectionRule bereits vorhanden ist, erstellen Sie eine Override-json, z.B.
update_override.json
, mit den Override-Bedingungen, die Sie zu ObjectCollectionRule hinzufügen möchten:{ "overrides":{"items":[{"matchType":"contains","matchValue":"audit","propertyName":"logSourceName","propertyValue":"myLOGANAuditSource"}]} }
Aktualisieren Sie jetzt ObjectCollectionRule, um das Override einzuschließen:
oci log-analytics object-collection-rule update --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID> --from-json file://path-to/file
Beispiel:
oci log-analytics object-collection-rule update --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID --from-json file:///scratch/update_override.json
Weitere Details zu Überschreibungen in ObjectCollectionRule finden Sie unter Konfiguration von ObjectCollectionRule für die Verarbeitung bestimmter Objekte überschreiben.
-
Overrides aus ObjectCollectionRule entfernen:
Wenn Sie alle Außerkraftsetzungsbedingungen aus der ObjectCollectionRule entfernen möchten, erstellen Sie einen json. Beispiel:
remove_overrides.json
, der die Außerkraftsetzungseigenschaft wie folgt detailliert aufführt:{ "overrides":{"items":[]} }
Aktualisieren Sie jetzt ObjectCollectionRule:
oci log-analytics object-collection-rule update --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID> --from-json file://path-to/file
Beispiel:
oci log-analytics object-collection-rule update --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID --from-json file:///scratch/remove_overrides.json
Weitere Details zu Überschreibungen in ObjectCollectionRule finden Sie unter Konfiguration von ObjectCollectionRule für die Verarbeitung bestimmter Objekte überschreiben.
-
Fügen Sie objectNameFilters zu ObjectCollectionRule hinzu:
Wenn ObjectCollectionRule bereits vorhanden ist, erstellen Sie einen Filter json, z.B.
filters.json
, mit den Filtern für Objektnamen, die Sie ObjectCollectionRule hinzufügen möchten:{ "objectNameFilters":["a/*","*audit*"] }
Hinweis
Sie können eine vorhandene ObjectCollectionRule nur mit ObjectNameFilters aktualisieren, wenn sie den TypLIVE
oderHISTORIC_LIVE
aufweist. Der TypHISTORIC
wird für diesen Vorgang nicht unterstützt.Aktualisieren Sie jetzt ObjectCollectionRule, um die Filter einzuschließen:
oci log-analytics object-collection-rule update --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID> --from-json file://path-to/file
Beispiel:
oci log-analytics object-collection-rule update --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID --from-json file:///scratch/filters.json
Weitere Informationen zu Filtern in ObjectCollectionRule finden Sie unter Selektive Objekterfassung durch Anwenden von Filtern auf Objektnamen ausführen.
Mandantenübergreifende Logerfassung aus Object Storage zulassen
Legen Sie die folgenden Policys fest, um die Objekterfassungsregel für das Erfassen von Logs aus einem Bucket in einem Gastmandanten zu konfigurieren.
Geben Sie als Gastmandanten Guest_Tenant
und als Compartment Bucket_Compartment
das Compartment in diesem Gastmandanten an, aus dessen Objektspeicher-Buckets die Logs erfasst werden sollen. Geben Sie als Mandanten Host_Tenant
an, der Oracle Log Analytics abonniert hat.
Weitere Informationen zum Schreiben von Policys, mit denen Ihr Mandant auf Object Storage-Ressourcen in anderen Mandanten zugreifen kann, finden Sie unter Auf Object Storage-Ressourcen mandantenübergreifend zugreifen in der Oracle Cloud Infrastructure-Dokumentation.
Erstellen Sie die dynamische Gruppe <Dynamic_Group_Name> mit der folgenden Vergleichsregel:
ALL {resource.type='loganalyticsobjectcollectionrule'}
Der Stream kann in Host_Tenant oder Guest_Tenant verfügbar sein. Folgen Sie einem der Arbeitsabläufe, je nachdem, wo der Stream verfügbar ist:
Stream verfügbar unter Host_Tenant
- In Guest_Tenant hinzuzufügende Policys
define group <Host_User_Group> as <Host_User_Group_OCID> define tenancy <Host_Tenant> as <Host_Tenant_OCID> define DYNAMIC-GROUP <Host_Dynamic_Group> as <Dynamic_Group_OCID> admit group <Host_User_Group> of tenancy <Host_Tenant> to use buckets in compartment <Bucket_Compartment> admit group <Host_User_Group> of tenancy <Host_Tenant> to {OBJECT_INSPECT, OBJECT_READ} in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to read buckets in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to read objects in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to manage cloudevents-rules in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to inspect compartments in tenancy admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to use tag-namespaces in tenancy where all {target.tag-namespace.name = /oracle-tags /} endorse any-user to {STREAM_PRODUCE} in tenancy <Host_Tenant> where request.principal.type = 'eventrule'
- Im Host_Tenant hinzuzufügende Richtlinien:
define tenancy <Guest_Tenant> as <Guest_Tenant_OCID> define compartment <Bucket_Compartment> as <Bucket_Compartment_OCID> endorse group <Host_User_Group> to use buckets in tenancy <Guest_Tenant> endorse group <Host_User_Group> to {OBJECT_INSPECT, OBJECT_READ} in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to read buckets in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to read objects in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to manage cloudevents-rules in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to inspect compartments in tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to use tag-namespaces in tenancy <Guest_Tenant> where all {target.tag-namespace.name = /oracle-tags /} admit any-user of tenancy <Guest_Tenant> to {STREAM_PRODUCE} in tenancy where request.principal.type = 'eventrule' allow DYNAMIC-GROUP <Host_Dynamic_Group> to {STREAM_CONSUME} in compartment <Stream_Compartment> allow group <Host_User_Group> to {STREAM_CONSUME, STREAM_READ} in compartment <Stream_Compartment> allow group <Host_User_Group> to use loganalytics-object-collection-rule in compartment <Rule_Compartment> allow group <Host_User_Group> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <LogGroup_Compartment> allow group <Host_User_Group> to {LOG_ANALYTICS_SOURCE_READ} in tenancy
Definieren Sie optional diese Policy-Anweisung, wenn ObjectCollectionRule verknüpfte Entitys enthält:
allow group <Host_User_Group> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <Entity_Compartment>
Stream verfügbar unter Guest_Tenant
- Im Guest_Tenant hinzuzufügende Richtlinien:
define group <Host_User_Group> as <Host_User_Group_OCID> define tenancy <Host_Tenant> as <Host_Tenant_OCID> define DYNAMIC-GROUP <Host_Dynamic_Group> as <Dynamic_Group_OCID> admit group <Host_User_Group> of tenancy <Host_Tenant> to use buckets in compartment <Bucket_Compartment> admit group <Host_User_Group> of tenancy <Host_Tenant> to {STREAM_CONSUME, STREAM_READ} in compartment <Stream_Compartment> admit group <Host_User_Group> of tenancy <Host_Tenant> to {OBJECT_INSPECT, OBJECT_READ} in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to {STREAM_CONSUME} in compartment <Stream_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to read buckets in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to read objects in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to manage cloudevents-rules in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to inspect compartments in tenancy <Guest_Tenant> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to use tag-namespaces in tenancy where all {target.tag-namespace.name = /oracle-tags /}
- Im Host_Tenant hinzuzufügende Richtlinien:
define tenancy <Guest_Tenant> as <Guest_Tenant_OCID> define compartment <Bucket_Compartment> as <Bucket_Compartment_OCID> define compartment <Stream_Compartment> as <Stream_Compartment_OCID> endorse group <Host_User_Group> to use buckets in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse group <Host_User_Group> to {OBJECT_INSPECT, OBJECT_READ} in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse group <Host_User_Group> to {STREAM_CONSUME, STREAM_READ} in compartment <Stream_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to read buckets in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to read objects in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to manage cloudevents-rules in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to inspect compartments in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to {STREAM_CONSUME} in compartment <Stream_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to use tag-namespaces in tenancy <Guest_Tenant> where all {target.tag-namespace.name = /oracle-tags /} allow group <Host_User_Group> to use loganalytics-object-collection-rule in compartment <Rule_Compartment> allow group <Host_User_Group> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <LogGroup_Compartment> allow group <Host_User_Group> to {LOG_ANALYTICS_SOURCE_READ} in tenancy
Definieren Sie optional diese Policy-Anweisung, wenn ObjectCollectionRule verknüpfte Entitys enthält:
allow group <Host_User_Group> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <Entity_Compartment>
In den oben genannten Policys gilt Folgendes:
-
Rule_Compartment
: Das Compartment des Hostmandanten, in dem ObjectCollectionRule erstellt werden muss. -
LogGroup_Compartment
: Das Compartment der Oracle Log Analytics-Loggruppe, in der die Logs gespeichert werden müssen. -
Entity_Compartment
: Das Compartment der Oracle Log Analytics-Entity. -
Stream_Compartment
: Das Compartment von OCI Stream.
Nachdem die erforderlichen Policys erstellt wurden, können Sie ObjectCollectionRule erstellen, um die Logs aus dem Objektspeicher des Gastmandantens zu erfassen. Geben Sie den Namespace osNamespace
und den Bucket-Namen osBucketName
des Gastmandanten in der JSON-Datei an, wie im folgenden Beispiel dargestellt:
{
"name": "<My_Rule>",
"compartmentId": "<Host_Compartment_OCID>",
"osNamespace": "<Guest_Tenant_Namespace>", // Namespace of the guest tenant
"osBucketName": "<Guest_Tenant__Bucket1>", // Bucket in the guest tenant object store namespace
"logGroupId": "<Log_Group_OCID>",
"logSourceName": "<My_Log_Source>",
"streamId":"<Stream_OCID>"
}
Details zum Erstellen von ObjectCollectionRule finden Sie unter ObjectCollectionRule-Vorgänge.
ObjectCollectionRule-Konfiguration zur Verarbeitung bestimmter Objekte überschreiben
Wenn Sie bestimmte Objekte in einem Bucket mit einer Konfiguration verarbeiten möchten, die sich von der für ObjectCollectionRule definierten unterscheidet, können Sie das Override-Feature verwenden. Mit dem Feature Überschreiben können Sie Konfigurationseigenschaften basierend auf Objektnamen bereitstellen, die bestimmten Mustern oder Präfixen oder Verzeichnissen im Bucket entsprechen.
-
Die Eigenschaften, für die Sie Overrides angeben können:
logSourceName
,charEncoding
,entityId
,timezone
-
Der Abgleichstyp, den Sie im Override verwenden können:
contains
-
Der Übereinstimmungswert wird immer auf den Objektnamen angewendet.
-
Sie können maximal 10 Overrides pro ObjectCollectionRule erstellen. Dies ist der Standardwert. Um diesen Standardwert zu ändern, legen Sie eine Serviceanfrage (SA) mit Begründung an. Die Anforderung wird geprüft.
Wenn Sie die ObjectCollectionRule zum ersten Mal erstellen, kann eines der folgenden Beispiele der create.json verwendet werden, um die json für Ihren Anwendungsfall zu erstellen:
- Beispiel create.json mit Overrides zur Verarbeitung von Objektnamen, die
audit
mit logSourceNamemyLOGANAuditSource
enthalten:{ "name":"testRule1", "compartmentId":"ocid1.compartment.oc1..aaa...", "osNamespace":"myObjectStorageNameSpace", "osBucketName":"myObjectStorageBucket", "logGroupId":"ocid1.loganalyticsloggroup.oc1..aaa...", "logSourceName":"myLOGANSourceName", "streamId":"ocid1.stream.oc1..aaa...", "overrides":{"items":[{"matchType":"contains","matchValue":"audit","propertyName":"logSourceName","propertyValue":"myLOGANAuditSource"}]} }
Mit der obigen Regel werden die Objekte, die
audit
enthalten, mit logSourceNamemyLOGANAuditSource
verarbeitet, während alle anderen Objekte im Bucket mit logSourceNamemyLOGANSourceName
verarbeitet werden. - Beispiel create.json mit Overrides zur Verarbeitung von Objektnamen, die
audit
mit logSourceNamemyLOGANAuditSource
und die Objektnamen, diedir1/
mit charEncodingUTF-16
enthalten:{ "name":"testRule2", "compartmentId":"ocid1.compartment.oc1..aaa...", "osNamespace":"myObjectStorageNameSpace", "osBucketName":"myObjectStorageBucket", "logGroupId":"ocid1.loganalyticsloggroup.oc1..aaa...", "logSourceName":"myLOGANSourceName", "streamId":"ocid1.stream.oc1..aaa...", "overrides":{"items":[{"matchType":"contains","matchValue":"audit","propertyName":"logSourceName","propertyValue":"myLOGANAuditSource"}, {"matchType":"contains","matchValue":"dir1/","propertyName":"charEncoding","propertyValue":"UTF-16"}]} }
Nachdem Sie die json-Konfiguration erstellt haben, geben Sie den Dateipfad an, wenn Sie die ObjectCollectionRule erstellen. Siehe Abschnitt ObjectCollectionRule erstellen in ObjectCollectionRule-Vorgängen.
Wenn Sie die ObjectCollectionRule bereits erstellt haben, erstellen Sie eine json mit den Details des Override, und aktualisieren Sie die ObjectCollectionRule, um sie einzuschließen. Siehe Abschnitt Overrides zu ObjectCollectionRule hinzufügen unter ObjectCollectionRule-Vorgänge.
Wenn Sie alle Override-Bedingungen entfernen möchten, erstellen Sie einen Json, wie im Abschnitt Overrides aus ObjectCollectionRule entfernen angegeben, und aktualisieren Sie die ObjectCollectionRule. Siehe ObjectCollectionRule-Vorgänge.
Selektive Objekterfassung durchführen, indem Filter auf Objektnamen angewendet werden
Mit dem Feature "Selektive Objekterfassung" können Sie nur eine Teilmenge von Objekten in einem bestimmten Objektspeicher-Bucket erfassen. Das Feature wird mit Filtern für Objektnamen unterstützt. Wenn die Filter angewendet werden, werden nur die Objekte erfasst, die den Filtern entsprechen.
Die Eigenschaft matchType
unterstützt nur exakte Übereinstimmungen zusammen mit dem Platzhalter *
. Im Folgenden finden Sie einige Beispiele für Filter, die den Platzhalter verwenden:
- Filter objectName* gibt Objekte mit dem Präfix objectName an.
- Filter *objectName gibt Objekte mit dem Suffix objectName an.
- Der Filter *objectName* gibt Objekte an, die den Text objectName enthalten.
Weitere Informationen zu Filtern finden Sie unter Ereignisse mit Filtern abgleichen.
Wenn Sie die ObjectCollectionRule zum ersten Mal erstellen, kann eines der folgenden Beispiele der create.json verwendet werden, um die json für Ihren Anwendungsfall zu erstellen:
- Beispiel für create.json mit objectNameFilters, um Objektnamen mit dem Präfix
a/
zu verarbeiten, die den Textaudit
enthalten:{ "name":"testRule1", "compartmentId":"ocid1.compartment.oc1..aaa...", "osNamespace":"myObjectStorageNameSpace", "osBucketName":"myObjectStorageBucket", "logGroupId":"ocid1.loganalyticsloggroup.oc1..aaa...", "logSourceName":"myLOGANSourceName", "streamId":"ocid1.stream.oc1..aaa...", "objectNameFilters":["a/*","*audit*"] }
- Bei Bedarf können Sie auch die Override-Funktion verwenden, um eine andere Konfiguration für jeden Filter anzugeben. Im obigen Beispiel können Sie zusätzlich angeben, dass alle Objekte, die den Text
audit
enthalten, die QuellemyLOGANAuditSource
verwenden müssen:{ "name":"testRule2", "compartmentId":"ocid1.compartment.oc1..aaa...", "osNamespace":"myObjectStorageNameSpace", "osBucketName":"myObjectStorageBucket", "logGroupId":"ocid1.loganalyticsloggroup.oc1..aaa...", "logSourceName":"myLOGANSourceName", "streamId":"ocid1.stream.oc1..aaa...", "objectNameFilters":["a/*","*audit*"], "overrides":{"items":[{"matchType":"contains","matchValue":"audit","propertyName":"logSourceName","propertyValue":"myLOGANAuditSource"}]} }
Weitere Informationen zu Überschreibungen finden Sie unter Konfiguration von ObjectCollectionRule für die Verarbeitung bestimmter Objekte überschreiben.
Nachdem Sie die json-Konfiguration erstellt haben, geben Sie den Dateipfad an, wenn Sie die ObjectCollectionRule erstellen. Siehe Abschnitt ObjectCollectionRule erstellen in ObjectCollectionRule-Vorgängen.
Wenn Sie die ObjectCollectionRule bereits erstellt haben, erstellen Sie eine json mit den Details der Filter, und aktualisieren Sie die ObjectCollectionRule, um sie einzuschließen. Siehe Abschnitt objectNameFilters zu ObjectCollectionRule hinzufügen unter ObjectCollectionRule-Vorgänge.
Die veralteten Schritte zum Erfassen von Logs aus Ihrem Objektspeicher-Bucket finden Sie unter Logs aus Ihrem Objektspeicher-Bucket erfassen - Veraltete Schritte.
Erfassung von Logs aus dem OCI-Objektspeicher-Bucket stoppen
Wenn Sie die Erfassung von Logs aus Ihrem OCI Object Storage-Bucket abbrechen möchten, identifizieren Sie die zuvor für die Logerfassung eingerichtete ObjectCollectionRule, und löschen Sie sie.
-
Führen Sie den folgenden
List
-CLI-Befehl aus, um zuerst alle Regeln im jeweiligen Compartment aufzulisten:oci log-analytics object-collection-rule list --namespace-name <Namespace> --compartment-id <compartment-OCID>
Beispiel:
oci log-analytics object-collection-rule list --namespace-name “My Namespace” --compartment-id ocid.compartment.oc1..exampleuniqueID
Die entsprechende REST-API-Referenz finden Sie unter Liste ObjectCollectionRule.
-
Führen Sie den folgenden
Delete
-CLI-Befehl iterativ für jede Regel aus, die Sie löschen möchten:oci log-analytics object-collection-rule delete --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID>
Beispiel:
oci log-analytics object-collection-rule delete --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID
Die entsprechende REST-API-Referenz finden Sie unter Löschen ObjectCollectionRule.