Collecter les journaux à partir du seau de stockage d'objets OCI

Vous pouvez collecter des données de journal en continu à partir du service de stockage d'objets d'Oracle Cloud Infrastructure (OCI). Pour activer la collecte de journaux, créez une ressource ObjectCollectionRule à l'aide de l'API REST ou de l'interface de ligne de commande. Une fois cette ressource créée et dotée des politiques GIA requises, la collecte de journaux est lancée.

Vous pouvez utiliser cette méthode de collecte des journaux pour ingérer tout type de journal stocké dans un seau de stockage d'objets.

Vous pouvez collecter des journaux à partir du seau de stockage d'objets de l'une des façons suivantes :

  • LIVE : Pour la collecte continue d'objets à partir du moment de la création de la règle ObjectCollectionRule. Il s'agit de la méthode par défaut.

  • HISTORIQUE : Collecte unique d'objets pour un intervalle de temps spécifié.

  • HISTORIC_LIVE : Pour la collecte de tous les journaux historiques dans le seau, et ensuite, la collecte continue de tous les objets nouvellement créés contenant des journaux.

Oracle Log Analytics utilise les services d'événements et de flux d'OCI avec le service de stockage d'objets pour collecter et traiter les objets (types LIVE ou HISTORIC). Lorsque vous configurez un seau pour la collecte de journaux, Oracle Log Analytics crée une règle Événements pour émettre des avis d'événement pour chaque nouveau chargement d'objet dans le seau. Les avis sont transmis à un flux que vous avez précisé.

Un OCID de flux est requis pour les règles de collecte d'objets de type LIVE ou HISTORIC_LIVE. Utilisé par Oracle Log Analytics pour créer une règle d'événement et consommer les avis d'événement créés par le service de stockage d'objets. Par défaut, le message disponible le plus ancien du flux est consommé en premier lors du traitement des messages dans le flux. Sinon, la position existante du curseur est utilisée, si elle est déjà définie.

Oracle Log Analytics offre les recommandations suivantes pour créer un flux :

  • Définissez la période de conservation de 48 heures.
  • Tenez compte des partitions en fonction du débit. Chaque partition peut gérer 1000 objets par seconde (sur tous les seaux qui utilisent le même flux). Pour plus de détails sur les limites de diffusion en continu, voir Limites des ressources de diffusion en continu.
  • Facultativement, envisagez d'avoir un seul flux pour une location.
  • Utilisez ce flux uniquement à des fins de collecte d'objets pour éviter les problèmes lors du traitement des journaux.

En plus de streamId, vous pouvez fournir streamCursorType pour spécifier la position dans le flux à partir de laquelle commencer à consommer. Vous pouvez avoir quatre types de curseur pour extraire les messages du flux. Voir Consommation de messages.

  • DEFAULT : Utilise la position du curseur existant si elle est déjà définie par des ObjectCollectionRule précédents utilisant le même flux. Sinon, il commence à consommer à partir du plus ancien message disponible dans le flux (semblable à TRIM_HORIZON).
  • TRIM_HORIZON : Démarre la consommation à partir du message disponible le plus ancien dans le flux.
  • DERNIER : Commence à consommer les messages qui sont publiés après la création de cette règle.
  • AT_TIME : Commence à consommer des messages à partir d'une heure spécifiée.

Si streamCursorType est réglé à AT_TIME, un paramètre streamCursorTime est également requis pour indiquer l'heure à partir de laquelle consommer les objets.

Note :

  • Pour garantir une collecte appropriée des journaux à partir du stockage d'objets, évitez de modifier les règles d'événement créées par Oracle Log Analytics.

  • Chaque seau ne peut avoir qu'un seul ObjectCollectionRule de type LIVE ou HISTORIC_LIVE.

  • Vous pouvez créer jusqu'à 1 000 règles de collecte d'objets uniques par location dans une région.

  • L'objet peut être un seul fichier journal brut ou un fichier d'archives (.zip, .gz, .tgz, .tar) contenant plusieurs fichiers journaux. Le nombre total de fichiers (y compris les répertoires) dans un fichier d'archives ne doit pas dépasser 2000.

  • La taille maximale de l'objet (un seul fichier ou fichier d'archive) est de 1 Go. La taille non compressée de l'objet doit être inférieure à 10 Go.

  • La collecte de journaux à partir du service de stockage d'objets prend en charge uniquement les flux qui ont des points d'extrémité publics. Les flux configurés avec des points d'extrémité privés ne sont pas pris en charge.

  • Pour une performance optimale de la collecte de journaux, Oracle recommande d'utiliser un flux dédié exclusivement pour la collecte d'objets.

Préalables : Avant d'activer la collecte de journaux à l'aide de cette approche, veillez à :

  • Créer une nouvelle source de journaux ou utiliser une source de journaux définie par Oracle correspondant à votre format de journal. Voir Créer une source.
  • Créer un groupe de journaux ou utiliser un groupe de journaux existant dans lequel vous stockerez ces journaux pour contrôler le contrôle d'accès des utilisateurs aux journaux et noter l'OCID du groupe de journaux. Voir Créer des groupes de journaux pour stocker vos journaux.
  • Facultativement, si vous voulez mapper les journaux que vous chargez, créer une entité ou utiliser une entité existante et noter l'OCID de l'entité. Voir Créer une entité pour représenter votre ressource émettrice de journaux.
  • Pour les types de collection LIVE ou HISTORIC_LIVE, créez un nouveau flux ou utilisez un flux existant (utilisé uniquement pour la collecte d'objets). Voir Créer un flux.

Pour arrêter la collecte d'objets du seau, supprimez la règle ObjectCollectionRule. Cette opération supprimera uniquement la configuration associée au seau, mais n'aura aucune incidence sur les données de journal déjà collectées ou sur les objets du seau.

Autoriser la collecte de journaux à partir du stockage d'objets

Les énoncés de la politique IAM suivants doivent être inclus dans votre politique pour fournir l'autorisation au groupe d'utilisateurs d'effectuer les opérations requises sur ObjectCollectionRule :

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>

Si vous créez des politiques IAM au niveau des ressources agrégées Oracle Log Analytics, les énoncés de politique suivants doivent être inclus pour utiliser la collection d'objets :

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>

D'autre part, si vous créez des politiques IAM au niveau de types de ressource individuels, les énoncés de politique suivants sont requis pour utiliser la collection d'objets :

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 dans tous les énoncés de politique ci-dessus fait référence au groupe d'utilisateurs auquel les autorisations requises doivent être accordées.

Note

Par défaut, le service de stockage d'objets désactive l'émission automatique d'événements au niveau de l'objet. Vous pouvez activer l'émission d'événements ou disposer des autorisations requises lors de la création de règle ObjectCollectionRule. Pour activer les émissions d'événements, voir Gestion des objets. De plus, lorsque vous supprimez et recréez un seau, pour que la règle de collecte de journaux existante fonctionne, réglez l'indicateur Émettre des événements d'objet pour le seau après qu'il a été recréé.

Pour que la collecte de journaux fonctionne, ainsi que les autorisations ci-dessus pour Création de ObjectCollectionRule, vous devez également autoriser Oracle Log Analytics à lire les objets à partir du seau de votre location, utiliser le flux pour extraire les messages et gérer les règles d'événement en nuage dans le compartiment ou la location correspondant où se trouve le seau de stockage d'objets. Le processus de collecte d'objets utilise le principal de ressource pour la ressource loganalyticsobjectcollectionrule afin d'accéder aux objets dans votre seau. Voici les énoncés de politique IAM supplémentaires requis :

Créez un groupe dynamique Dynamic_Group_Name avec la règle de correspondance ci-dessous :

ALL {resource.type='loganalyticsobjectcollectionrule'}

Ajoutez les énoncés de politique IAM supplémentaires suivants :

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>

Certains des énoncés de politique ci-dessus sont inclus dans les modèles de politique prédéfinis par Oracle. Vous pouvez envisager d'utiliser le modèle pour votre cas d'utilisation. Voir Modèles de politique définis par Oracle pour les cas d'utilisation communs.

Opérations ObjectCollectionRule

À l'aide de l'API REST ou de l'interface de ligne de commande, vous pouvez effectuer des opérations telles que Create, Update, Delete, List et Get sur la ressource ObjectCollectionRule.

Pour plus d'informations sur l'utilisation de l'API REST et sur les demandes de signature, voir API REST et Données d'identification de sécurité.

Pour communiquer avec les services en nuage OCI, créez une clé de signature d'API et enregistrez-la dans votre compte d'utilisateur dans OCI. Pour générer et enregistrer la clé et collecter l'OCID de la location et l'OCID de l'utilisateur, voir Données d'identification de sécurité - Clé de signature d'API.

Pour plus d'informations sur les trousses SDK, voir Trousses SDK et interface de ligne de commande.

Utilisation de l'API REST

Pour gérer ObjectCollectionRule, utilisez les opérations d'API suivantes :

Utilisation de l'interface de ligne de commande

Pour des informations sur l'utilisation de l'interface de ligne de commande, voir Interface de ligne de commande.

Pour la liste complète des indicateurs et les options disponibles pour les commandes de l'interface de ligne de commande, voir Informations de référence sur la ligne de commande.

Exécutez les commandes d'interface de ligne de commande suivantes pour gérer ObjectCollectionRule :

  • Créer ObjectCollectionRule :

    oci log-analytics object-collection-rule create --from-json <json_file_name> --namespace-name <namespace_name>

    Par exemple :

    oci log-analytics object-collection-rule create --from-json file://create.json --namespace-name MyNamespace

    Dans l'exemple de commande ci-dessus, l'exemple référencé est create.json :

    {
        "name": "<Rule_Name>",
        "compartmentId": "<Compartment_OCID>",
        "osNamespace": "<Namespace>",
        "osBucketName": "<Bucket_Name>",
        "logGroupId": "<Log_Group_OCID>",
        "logSourceName": "<Log_Source>",
        "streamId":"<Stream_OCID>"
    }

    Les propriétés obligatoires suivantes doivent être fournies dans le fichier json :

    • name : Nom unique donné à ObjectCollectionRule. Le nom doit être unique dans la location et ne peut pas être modifié.
    • compartmentId : OCID du compartiment dans lequel se trouve ObjectCollectionRule.
    • osNamespace : Espace de noms du stockage d'objets.
    • osBucketName : Nom du seau de stockage d'objets.
    • logGroupId : OCID du groupe de journaux Log Analytics auquel associer les journaux traités.
    • logSourceName : Nom de la source Log Analytics à utiliser pour le traitement.
    • streamId : Un OCID de flux est requis pour les règles de collecte d'objets de type LIVE ou HISTORIC_LIVE.

    En plus des propriétés obligatoires, vous pouvez également spécifier les propriétés suivantes :

    • collectionType : Type de collection. Les valeurs autorisées sont LIVE, HISTORIC et HISTORIC_LIVE.
    • charEncoding : Exemples de valeurs ISO_8859_1, UTF-16
    • definedTags : Marqueurs définis pour cette ressource. Chaque clé est prédéfinie et porte sur un espace de noms. Par exemple, {"foo-namespace": {"bar-key": "value"}}
    • description : Chaîne décrivant les détails de la règle, comportant au plus 400 caractères.
    • entityId : OCID de l'entité Log Analytics à laquelle les journaux collectés seront associés.
    • freeformTags : Paire clé-valeur simple appliquée sans nom, type ou portée prédéfinis. Existe uniquement pour la compatibilité croisée. Par exemple, {"bar-key": "value"}
    • isEnabled : true par défaut.
    • objectNameFilters : Pour obtenir des exemples, voir Effectuer une collecte d'objets sélective en appliquant des filtres sur les noms d'objet.
    • remplacements : Pour des exemples, voir Remplacer la configuration ObjectCollectionRule pour traiter des objets spécifiques.
    • pollSince : Heure la plus ancienne du fichier dans le seau à prendre en compte pour la collection HISTORIC ou HISTORIC_LIVE. Les valeurs acceptées sont BEGINNING, CURRENT_TIME ou une chaîne de date et d'heure au format RFC3339. Par exemple, 2019-10-12T07:20:50.52Z au format RFC3339.
    • pollTill : Heure la plus récente du fichier dans le seau à prendre en compte pour la collection HISTORIC ou HISTORIC_LIVE. Les valeurs acceptées sont la chaîne de date et d'heure au format CURRENT_TIME ou RFC3339. Par exemple, 2019-10-12T07:20:50.52Z au format RFC3339.
    • streamCursorType : Type de curseur utilisé pour extraire des messages du flux.
    • isForceHistoricCollection : Indicateur permettant la collecte historique si la période de sondage chevauche la règle de collecte ACTIVE existante. False, par défaut.
    • streamCursorTime : Heure à partir de laquelle consommer les objets, si streamCursorType est AT_TIME. La valeur acceptée doit être une chaîne de date et d'heure au format RFC3339. Par exemple, 2019-10-12T07:20:50.52Z.

    Pour plus de détails sur les propriétés de ObjectCollectionRule et leurs valeurs acceptées, voir Informations de référence sur les API ObjectCollectionRule.

    Exemple de réponse de la commande ci-dessus :

    {
        "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"
    }
  • Mise à jour ObjectCollectionRule :

    Voici un exemple de commande pour mettre à jour une source de journaux. De même, il est possible de mettre à jour un groupe de journaux, une entité ou toute autre ressource.

    oci log-analytics object-collection-rule update --namespace-name <namespace_name> --object-collection-rule-id <object-collection-rule-OCID> --log-source-name <Log-Source>

    Par exemple :

    oci log-analytics object-collection-rule update --namespace-name MyNamespace --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID --log-source-name MyLogSource
  • Supprimer ObjectCollectionRule :

    oci log-analytics object-collection-rule delete --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID>

    Par exemple :

    oci log-analytics object-collection-rule delete --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID
  • Lister ObjectCollectionRule:

    oci log-analytics object-collection-rule list --namespace-name <Namespace> --compartment-id <compartment-OCID>

    Par exemple :

    oci log-analytics object-collection-rule list --namespace-name “My Namespace” --compartment-id ocid.compartment.oc1..exampleuniqueID
  • Obtenir ObjectCollectionRule:

    oci log-analytics object-collection-rule get --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID>

    Par exemple :

    oci log-analytics object-collection-rule get --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID
  • Ajouter des remplacements à ObjectCollectionRule :

    Si ObjectCollectionRule existe déjà, créez un fichier json de remplacement, par exemple update_override.json, avec les conditions de remplacement à ajouter à ObjectCollectionRule :

    {
      "overrides":{"items":[{"matchType":"contains","matchValue":"audit","propertyName":"logSourceName","propertyValue":"myLOGANAuditSource"}]} 
    }

    Mettez à jour le fichier ObjectCollectionRule pour inclure le remplacement :

    oci log-analytics object-collection-rule update --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID> --from-json file://path-to/file

    Par exemple :

    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

    Pour plus de détails sur les remplacements dans ObjectCollectionRule, voir Remplacer la configuration ObjectCollectionRule pour traiter des objets spécifiques.

  • Supprimer les remplacements de ObjectCollectionRule :

    Si vous voulez supprimer toutes les conditions de remplacement de ObjectCollectionRule, créez un fichier json, par exemple remove_overrides.json, qui détaille la propriété de remplacement comme suit :

    {
      "overrides":{"items":[]} 
    }

    Maintenant, mettez à jour 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

    Par exemple :

    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

    Pour plus de détails sur les remplacements dans ObjectCollectionRule, voir Remplacer la configuration ObjectCollectionRule pour traiter des objets spécifiques.

  • Ajoutez objectNameFilters à ObjectCollectionRule :

    Si ObjectCollectionRule existe déjà, créez un json de filtres, par exemple filters.json, avec les filtres sur les noms d'objet que vous voulez ajouter à ObjectCollectionRule :

    {
      "objectNameFilters":["a/*","*audit*"]
    }
    Note

    Vous pouvez mettre à jour un ObjectCollectionRule existant avec ObjectNameFilters uniquement s'il est de type LIVE ou HISTORIC_LIVE. Le type HISTORIC n'est pas pris en charge pour cette opération.

    Maintenant, mettez à jour ObjectCollectionRule pour inclure les filtres :

    oci log-analytics object-collection-rule update --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID> --from-json file://path-to/file

    Par exemple :

    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

    Pour plus de détails sur les filtres dans ObjectCollectionRule, voir Effectuer une collecte sélective d'objets en appliquant des filtres sur les noms d'objet.

Autoriser la collecte de journaux interlocation à partir du stockage d'objets

Définissez les politiques suivantes pour configurer la règle de collecte d'objets pour collecter les journaux d'un seau situé dans une location invitée.

Supposons que Guest_Tenant est le locataire invité et que Bucket_Compartment est le compartiment de ce locataire invité qui comporte les seaux de stockage d'objets à partir desquels les journaux doivent être collectés. Laissez Host_Tenant être le locataire abonné à Oracle Log Analytics.

Pour plus d'informations sur l'écriture de politiques qui permettent à votre location d'accéder aux ressources du service de stockage d'objets dans d'autres locations, voir Accès aux ressources de stockage d'objets entre des locations dans la documentation sur Oracle Cloud Infrastructure.

Créez un groupe dynamique <Dynamic_Group_Name> avec la règle de correspondance suivante :

ALL {resource.type='loganalyticsobjectcollectionrule'}

Le flux peut être disponible dans Host_Tenant ou Guest_Tenant. Suivez l'un des flux de travail selon l'endroit où le flux est disponible :

Flux disponible dans Host_Tenant

  • Politiques à ajouter dans Guest_Tenant
    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'
  • Politiques à ajouter dans Host_Tenant :
    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

    Facultativement, définissez cet énoncé de politique si des entités sont associées à ObjectCollectionRule :

    allow group <Host_User_Group> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <Entity_Compartment>

Flux disponible dans Guest_Tenant

  • Politiques à ajouter dans Guest_Tenant :
    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 /}
  • Politiques à ajouter dans Host_Tenant :
    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

    Facultativement, définissez cet énoncé de politique si des entités sont associées à ObjectCollectionRule :

    allow group <Host_User_Group> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <Entity_Compartment>

Dans les politiques ci-dessus,

  • Rule_Compartment : Compartiment de la location hôte dans lequel vous devez créer ObjectCollectionRule.

  • LogGroup_Compartment : Compartiment du groupe de journaux Oracle Log Analytics dans lequel les journaux doivent être stockés.

  • Entity_Compartment : Compartiment de l'entité Oracle Log Analytics.

  • Stream_Compartment : Compartiment du flux OCI.

Une fois les politiques requises créées, vous pouvez créer ObjectCollectionRule pour collecter les journaux à partir du stockage d'objets de la location invitée. Indiquez l'espace de noms osNamespace et le nom du seau osBucketName du locataire invité dans le fichier JSON, comme illustré dans l'exemple suivant :

{
"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>"
}

Pour plus de détails sur la création de la ressource ObjectCollectionRule, voir Opérations ObjectCollectionRule.

Remplacer la configuration ObjectCollectionRule pour traiter des objets spécifiques

Lorsque vous voulez traiter des objets spécifiques dans un seau à l'aide d'une configuration différente de celle définie pour ObjectCollectionRule, vous pouvez utiliser la fonction de remplacement. La fonction de remplacement facilite la fourniture de propriétés de configuration basées sur des noms d'objet correspondant à des modèles, préfixes ou répertoires spécifiques dans le seau.

  • Propriétés pour lesquelles vous pouvez spécifier des remplacements : logSourceName, charEncoding, entityId, timezone

  • Type de correspondance que vous pouvez utiliser dans le remplacement : contains

  • La valeur de correspondance est toujours appliquée au nom d'objet.

  • Vous pouvez créer un maximum de 10 remplacements par ObjectCollectionRule, qui est la valeur par défaut. Pour modifier cette valeur par défaut, créez une demande de service (demande de service) avec justification. La demande sera examinée.

Si vous créez le fichier ObjectCollectionRule pour la première fois, l'un des exemples suivants de fichier create.json peut être utilisé pour créer le fichier json pour votre cas d'utilisation :

  • Exemple create.json avec des remplacements pour traiter les noms d'objet contenant audit avec logSourceName myLOGANAuditSource :
    {
      "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"}]} 
    }

    À l'aide de la règle ci-dessus, les objets contenant audit sont traités avec logSourceName myLOGANAuditSource alors que tous les autres objets du seau sont traités avec logSourceName myLOGANSourceName.

  • Exemple create.json avec des remplacements pour traiter les noms d'objet contenant audit avec logSourceName myLOGANAuditSource et les noms d'objet contenant dir1/ avec charEncoding UTF-16 :
    {
      "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"}]} 
    }

Après avoir créé le fichier json de configuration, spécifiez le chemin d'accès au fichier lorsque vous créez ObjectCollectionRule. Voir la section Créer ObjectCollectionRule dans Opérations ObjectCollectionRule.

Si vous avez déjà créé ObjectCollectionRule, créez un fichier json avec les détails du remplacement et mettez à jour ObjectCollectionRule pour l'inclure. Voir la section Ajouter des remplacements à ObjectCollectionRule dans Opérations ObjectCollectionRule.

Si vous voulez supprimer toutes les conditions de remplacement, créez un fichier json tel que spécifié dans la section Supprimer les remplacements de ObjectCollectionRule et mettez à jour ObjectCollectionRule. Voir Opérations ObjectCollectionRule.

Effectuer une collecte sélective d'objets en appliquant des filtres aux noms d'objet

Utilisez la fonction Collection d'objets sélectifs pour collecter uniquement un sous-ensemble d'objets dans un seau de stockage d'objets donné. La fonction est prise en charge avec des filtres sur les noms d'objet. Lorsque les filtres sont appliqués, seuls les objets correspondant aux filtres sont collectés pour traitement.

La propriété matchType prend uniquement en charge la correspondance exacte avec le caractère générique *. Voici quelques exemples de filtres utilisant le caractère générique :

  • Le filtre objectName* spécifie des objets avec le préfixe objectName.
  • Le filtre *objectName spécifie les objets avec le suffixe objectName.
  • Le filtre *objectName* spécifie les objets qui contiennent le texte objectName.

Pour plus d'informations sur les filtres, voir Correspondance d'événements avec des filtres.

Si vous créez le fichier ObjectCollectionRule pour la première fois, l'un des exemples suivants de fichier create.json peut être utilisé pour créer le fichier json pour votre cas d'utilisation :

  • Exemple create.json avec objectNameFilters pour traiter les noms d'objet ayant un préfixe a/ et contenant le texte audit :
    {
      "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*"]
    }
  • Si nécessaire, vous pouvez également utiliser la fonction de remplacement pour spécifier une configuration différente pour chacun des filtres. Pour l'exemple ci-dessus, vous pouvez également spécifier que tous les objets contenant le texte audit doivent utiliser la source myLOGANAuditSource :
    {
      "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"}]} 
    }

    Pour plus d'informations sur les remplacements, voir Remplacer la configuration ObjectCollectionRule pour traiter des objets spécifiques.

Après avoir créé le fichier json de configuration, spécifiez le chemin d'accès au fichier lorsque vous créez ObjectCollectionRule. Voir la section Créer ObjectCollectionRule dans Opérations ObjectCollectionRule.

Si vous avez déjà créé ObjectCollectionRule, créez un fichier json avec les détails des filtres et mettez à jour ObjectCollectionRule pour l'inclure. Voir la section Ajouter objectNameFilters à ObjectCollectionRule dans Opérations ObjectCollectionRule.

Pour les étapes obsolètes de collecte des journaux à partir de votre seau de stockage d'objets, voir Collecter les journaux à partir de votre seau de stockage d'objets - Étapes obsolètes.

Arrêter la collecte des journaux à partir du seau de stockage d'objets OCI

Si vous voulez arrêter la collecte des journaux à partir de votre seau de stockage d'objets OCI, identifiez le ObjectCollectionRule que vous aviez précédemment configuré pour la collecte des journaux et supprimez-le.

  1. Exécutez la commande d'interface de ligne de commande List suivante pour d'abord lister toutes les règles du compartiment spécifique :

    oci log-analytics object-collection-rule list --namespace-name <Namespace> --compartment-id <compartment-OCID>

    Par exemple :

    oci log-analytics object-collection-rule list --namespace-name “My Namespace” --compartment-id ocid.compartment.oc1..exampleuniqueID

    Pour les informations de référence sur l'API REST équivalente, voir Lister ObjectCollectionRule.

  2. Exécutez la commande d'interface de ligne de commande Delete suivante de manière itérative sur chaque règle à supprimer :

    oci log-analytics object-collection-rule delete --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID>

    Par exemple :

    oci log-analytics object-collection-rule delete --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID

    Pour les informations de référence sur l'API REST équivalente, voir Supprimer ObjectCollectionRule.