Coletar Logs do Bucket de Armazenamento de Objetos do OCI

Você pode coletar dados de log continuamente do Oracle Cloud Infrastructure (OCI) Object Storage. Para ativar a coleta de logs, crie o recurso ObjectCollectionRule usando a API REST ou a CLI. Após a criação bem-sucedida desse recurso e ter as políticas de IAM necessárias, a coleta de logs será iniciada.

Você pode usar esse método de coleta de logs para ingerir qualquer tipo de log armazenado em um bucket de armazenamento de objetos.

Você pode coletar logs do bucket de Armazenamento de Objetos de uma das seguintes maneiras:

  • LIVE: Para coleta contínua de objetos desde o momento da criação da regra ObjectCollectionRule. Esse é o método padrão.

  • HISTÓRICO: Para coleta única de objetos em um intervalo de tempo especificado.

  • HISTORIC_LIVE: Para coleta de todos os logs históricos no bucket e, em seguida, coleta contínua de todos os objetos recém-criados que contêm logs.

O Oracle Log Analytics usa os serviços Events and Streaming do OCI em conjunto com o Object Storage para coletar e processar objetos (tipos LIVE ou HISTÓRICO). Quando você configura um bucket para coleta de log, o Oracle Log Analytics cria uma regra de Eventos para emitir notificação de evento para cada novo upload de objeto para o bucket. As notificações são entregues a um fluxo que você especificou.

É necessário um OCID de Fluxo para regras de coleta de objetos do tipo LIVE ou HISTORIC_LIVE. É usado pelo Oracle Log Analytics na criação da regra de Evento e consome as notificações de evento criadas pelo Object Storage. Por padrão, a mensagem mais antiga disponível no fluxo é consumida primeiro ao processar mensagens no fluxo. Caso contrário, a posição do cursor existente será usada, se já estiver definida.

O Oracle Log Analytics oferece as seguintes recomendações para criar o fluxo:

  • Definir o período de retenção como 48 horas.
  • Considere partições com base no throughput. Cada partição pode tratar 1000 objetos por segundo (em todos os buckets que usam o mesmo fluxo). Para obter mais detalhes sobre limites de streaming, consulte Limites de Recursos do Streaming.
  • Opcionalmente, considere ter um único fluxo para uma tenancy.
  • Use esse fluxo somente para fins de coleta de objetos para evitar problemas durante o processamento do log.

Além de streamId, você pode fornecer streamCursorType para especificar de qual posição no fluxo começar a consumir. Você pode ter quatro tipos de cursores para extrair mensagens do stream. Consulte Consumindo Mensagens.

  • DEFAULT: Usa a posição do cursor existente, se já tiver sido definida por qualquer ObjectCollectionRule(s) anterior(es) usando o mesmo fluxo. Caso contrário, ele começará a consumir a partir da mensagem mais antiga disponível no stream (semelhante a TRIM_HORIZON).
  • TRIM_HORIZON: Inicia o consumo a partir da mensagem mais antiga disponível no fluxo.
  • ÚLTIMA: Inicia o consumo de mensagens que são publicadas após a criação dessa regra.
  • AT_TIME: Inicia o consumo de mensagens de um horário especificado.

Se streamCursorType for definido como AT_TIME, ele também exigirá um parâmetro streamCursorTime, para indicar o horário a partir do qual consumir os objetos.

Observação:

  • Para garantir a coleta de logs adequada do serviço Object Storage, evite modificar as Regras de Evento criadas pelo Oracle Log Analytics.

  • Cada bucket pode ter apenas uma ObjectCollectionRule do tipo LIVE ou HISTORIC_LIVE.

  • Você pode criar até 1.000 regras de coleta de objetos exclusivas por tenancy em uma região.

  • O objeto pode ser um único arquivo de log bruto ou um arquivo compactado (.zip, .gz, .tgz, .tar) que contém vários arquivos de log. O número total de arquivos (incluindo diretórios) dentro de um arquivo não deve exceder 2000.

  • O tamanho máximo do objeto (arquivo único ou arquivo compactado) é 1 GB. O tamanho descompactado do objeto deve ser menor que 10 GB.

  • A coleta de logs do serviço Object Storage só suporta streams que têm pontos finais públicos. Os streams configurados com pontos finais privados não são suportados.

  • Para obter o desempenho ideal de coleta de logs, a Oracle recomenda que você use um fluxo dedicado exclusivamente para coleta de objetos.

Pré-requisitos: Antes de ativar a coleta de logs usando essa abordagem, certifique-se do seguinte:

  • Crie uma nova origem de log ou use uma origem de log definida pela Oracle que corresponda ao seu formato de log. Consulte Criar uma Origem.
  • Crie um grupo de logs ou use um existente no qual você armazenará esses logs para controlar o acesso do usuário aos logs e anotar o OCID do grupo de logs. Consulte Criar Grupos de Logs para Armazenar seus Logs.
  • Se você quiser mapear os logs que está fazendo upload, poderá criar uma entidade ou usar uma existente e anotar o OCID da entidade. Consulte Criar uma Entidade para Representar Seu Recurso de Emissão de Log.
  • Para os tipos de coleta LIVE ou HISTORIC_LIVE, crie um novo fluxo ou use um fluxo existente (usado apenas para coleta de objetos). Consulte Criar um Stream.

Para interromper a coleta de objetos do bucket, exclua a regra ObjectCollectionRule. Isso só excluirá a configuração associada ao bucket, mas não terá efeito nos dados de log já coletados ou nos objetos do bucket.

Permitir Coleta de Logs do Serviço Object Storage

Crie uma política do serviço IAM com as seguintes instruções de política de grupo de usuários e grupo dinâmico:

  1. Forneça as permissões aos grupos de usuários usando uma das três opções a seguir com base em sua exigência:

    • As seguintes instruções de política do serviço IAM devem ser incluídas na sua política para fornecer a permissão ao grupo de usuários para executar as operações necessárias em 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>
    • Se você estiver criando políticas do IAM no nível de recursos agregados do Oracle Log Analytics, as seguintes instruções de política deverão ser incluídas para usar a coleta de objetos:

      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>
    • Por outro lado, se você estiver criando políticas do IAM no nível de tipos de recursos individuais, as seguintes instruções de política serão necessárias para usar a coleta de objetos:

      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 em todas as instruções de política acima refere-se ao grupo de usuários que deve receber as permissões necessárias.

  2. Para que a coleta de logs funcione, junto com as permissões acima para Criar ObjectCollectionRule, você também deve dar permissão ao Oracle Log Analytics para ler os objetos do bucket em sua tenancy, usar o stream para extrair as mensagens e gerenciar as regras de evento na nuvem no compartimento ou tenancy correspondente em que o bucket de armazenamento de objetos está localizado. O processo de Coleta de Objetos usa o Controlador de Recursos no recurso loganalyticsobjectcollectionrule para acessar os objetos dentro do seu bucket. Veja a seguir as instruções adicionais de política do IAM necessárias para fornecer permissão ao recurso Coleta de Objetos usando um grupo dinâmico:

    Crie um grupo dinâmico Dynamic_Group_Name com a regra de correspondência abaixo:

    ALL {resource.type='loganalyticsobjectcollectionrule'}

    Adicione as seguintes instruções adicionais de política do IAM:

    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>

Algumas das instruções de política acima estão incluídas nos modelos de política definidos pela Oracle prontamente disponíveis. Talvez você queira considerar o uso do modelo para seu caso de uso. Consulte Modelos de Política definidos pela Oracle para Casos de Uso Comuns.

Observação

Por padrão, o serviço Object Storage desativa a emissão automática de eventos no nível do objeto. Você pode ativar a emissão de eventos ou ter as permissões necessárias ao criar ObjectCollectionRule. Para ativar a emissão de eventos, consulte Gerenciando Objetos. Além disso, quando você excluir e recriar um bucket, para a regra de coleta de log existente funcionar, defina o flag Emitir Eventos dos Objetos para o bucket após sua recriação.

Operações ObjectCollectionRule

Usando a API REST ou a CLI, você pode executar operações como Create, Update, Delete, List e Get no recurso ObjectCollectionRule.

Para obter informações sobre como usar a API REST e assinar solicitações, consulte APIs REST e Credenciais de Segurança.

Para se comunicar com os serviços de nuvem do OCI, crie uma Chave de Assinatura de API e registre-a em sua conta de usuário no OCI. Para gerar e registrar a chave e coletar o OCID da tenancy e o OCID do usuário, consulte Credenciadoras de Segurança - Chave de Assinatura de API.

Para obter informações sobre SDKs, consulte Kits de Desenvolvimento de Software e Interface de Linha de Comando.

Usando a API REST

Use as seguintes operações de API para gerenciar ObjectCollectionRule:

Usando a CLI

Para obter informações sobre como usar a CLI, consulte Interface de Linha de Comando (CLI).

Para obter uma lista completa de flags e opções disponíveis para comandos da CLI, consulte a Referência de Linha de Comando.

Execute os seguintes comandos da CLI para gerenciar ObjectCollectionRule:

  • Criar ObjectCollectionRule:

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

    Por Exemplo:

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

    No comando de exemplo anterior, a amostra referida create.json:

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

    As seguintes propriedades obrigatórias devem ser fornecidas no json:

    • nome: Um nome exclusivo fornecido ao ObjectCollectionRule. O nome deve ser exclusivo na tenancy e não pode ser modificado.
    • compartmentId: O OCID do compartimento no qual a ObjectCollectionRule está localizada.
    • osNamespace: O namespace do serviço Object Storage.
    • osBucketName: O nome do bucket de armazenamento de objetos.
    • logGroupId: OCID do grupo de logs do Log Analytics ao qual associar os logs processados.
    • logSourceName: Nome da origem do Log Analytics a ser usada para o processamento.
    • streamId: É necessário um OCID de Stream para regras de coleta de objetos do tipo LIVE ou HISTORIC_LIVE.

    Além das propriedades obrigatórias, você também pode especificar as seguintes propriedades:

    • collectionType: O tipo de coleção. Os valores permitidos são LIVE, HISTORIC e HISTORIC_LIVE.
    • charEncoding: Valores de exemplo ISO_8859_1, UTF-16
    • definedTags: Tags definidas para este recurso. Cada chave é predefinida e tem escopo definido para um namespace. Por exemplo, {"foo-namespace": {"bar-key": "value"}}
    • descrição: Uma string que descreve os detalhes da regra, com no máximo 400 caracteres.
    • entityId: O OCID da entidade do Log Analytics à qual os logs coletados serão associados.
    • freeformTags: Par de chave/valor simples que é aplicado sem qualquer nome, tipo ou escopo predefinidos. Existe apenas para compatibilidade cruzada. Por exemplo, {"bar-key": "value"}
    • isEnabled: true por padrão.
    • objectNameFilters: Para obter exemplos, consulte Executar a Coleta de Objetos Seletivos Aplicando Filtros em Nomes de Objetos.
    • substituições: Para obter exemplos, consulte Substituir Configuração ObjectCollectionRule para Processar Objetos Específicos.
    • pollSince: O horário mais antigo do arquivo no bucket a ser considerado para a coleção HISTORIC ou HISTORIC_LIVE. Os valores aceitos são BEGINNING, CURRENT_TIME ou string de data e hora formatada RFC3339. Por exemplo, 2019-10-12T07:20:50.52Z no formato RFC3339.
    • pollTill: O horário mais recente do arquivo no bucket a ser considerado para a coleção HISTORIC ou HISTORIC_LIVE. Os valores aceitos são string de data e hora formatada CURRENT_TIME ou RFC3339. Por exemplo, 2019-10-12T07:20:50.52Z no formato RFC3339.
    • streamCursorType: Tipo de cursor usado para extrair mensagens do stream.
    • isForceHistoricCollection: Flag para permitir coleta histórica se o período de sondagem se sobrepuser à regra de coleta ACTIVE existente. False, por padrão.
    • streamCursorTime: O horário em que os objetos serão consumidos, se streamCursorType for AT_TIME. O valor aceito deve ser uma string de data e hora formatada RFC3339. Por exemplo, 2019-10-12T07:20:50.52Z.

    Para obter mais detalhes sobre as propriedades de ObjectCollectionRule e seus valores aceitos, consulte Referência de API ObjectCollectionRule.

    Resposta de amostra do comando de exemplo anterior:

    {
        "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"
    }
  • Atualizar ObjectCollectionRule:

    Veja a seguir uma amostra de comando para atualizar uma origem de log. Da mesma forma, o grupo de logs, a entidade ou qualquer outro recurso também pode ser atualizado.

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

    Por exemplo:

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

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

    Por Exemplo:

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

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

    Por Exemplo:

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

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

    Por Exemplo:

    oci log-analytics object-collection-rule get --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID
  • Adicionar Substituições ao ObjectCollectionRule:

    Se o ObjectCollectionRule já existir, crie um json de substituição, por exemplo, update_override.json, com as condições de substituição que você deseja adicionar ao ObjectCollectionRule:

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

    Agora atualize o ObjectCollectionRule para incluir a substituição:

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

    Por Exemplo:

    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

    Para obter mais detalhes sobre substituições em ObjectCollectionRule, consulte Substituir Configuração ObjectCollectionRule para Processar Objetos Específicos.

  • Remover Substituições de ObjectCollectionRule:

    Se quiser remover todas as condições de substituição de ObjectCollectionRule, crie um json, por exemplo, remove_overrides.json, que detalhe a propriedade de substituição da seguinte forma:

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

    Agora atualize o 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

    Por Exemplo:

    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

    Para obter mais detalhes sobre substituições em ObjectCollectionRule, consulte Substituir Configuração ObjectCollectionRule para Processar Objetos Específicos.

  • Adicione objectNameFilters ao ObjectCollectionRule:

    Se o ObjectCollectionRule já existir, crie um json de filtros, por exemplo filters.json, com os filtros nos nomes de objetos que você deseja adicionar a ObjectCollectionRule:

    {
      "objectNameFilters":["a/*","*audit*"]
    }
    Observação

    Você só poderá atualizar um ObjectCollectionRule existente com ObjectNameFilters se ele for do tipo LIVE ou HISTORIC_LIVE. Não há suporte para o tipo HISTORIC nesta operação.

    Agora atualize o ObjectCollectionRule para incluir os filtros:

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

    Por Exemplo:

    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

    Para obter mais detalhes sobre filtros em ObjectCollectionRule, consulte Executar Coleta de Objetos Seletivos Aplicando Filtros em Nomes de Objetos.

Permitir Coleta de Logs entre Tenancies do Object Storage

Defina as políticas a seguir para configurar a regra de coleta de objetos para coletar logs de um bucket em um tenant convidado.

Permita que Guest_Tenant seja o tenant convidado e Bucket_Compartment o compartimento nesse tenant convidado que tem os buckets de armazenamento de objetos dos quais os logs devem ser coletados. Deixe Host_Tenant ser o tenant que se inscreve no Oracle Log Analytics.

Para obter informações adicionais sobre a criação de políticas que permitem que sua tenancy acesse recursos do serviço Object Storage em outras tenancies, consulte Acessando Recursos do Object Storage entre Tenancies na Documentação do Oracle Cloud Infrastructure.

Crie um grupo dinâmico <Dynamic_Group_Name> com a seguinte regra de correspondência:

ALL {resource.type='loganalyticsobjectcollectionrule'}

O fluxo pode estar disponível no Host_Tenant ou no Guest_Tenant. Siga um dos fluxos de trabalho, dependendo de onde o fluxo está disponível:

Stream Disponível em Host_Tenant

  • Políticas A Serem Adicionadas no 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'
  • Políticas A Serem Adicionadas no 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

    Opcionalmente, defina esta instrução de política se a ObjectCollectionRule tiver entidades associadas:

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

Stream Disponível em Guest_Tenant

  • Políticas A Serem Adicionadas no 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 /}
    admit any-user of tenancy <Host_Tenant> to {STREAM_PRODUCE} in tenancy where request.principal.type = 'eventrule'
  • Políticas A Serem Adicionadas no 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 /}
    endorse any-user to {STREAM_PRODUCE} in tenancy <Guest_Tenant> where request.principal.type = 'eventrule'
    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

    Opcionalmente, defina esta instrução de política se a ObjectCollectionRule tiver entidades associadas:

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

Nas políticas anteriores,

  • Rule_Compartment: O compartimento da tenancy do host no qual ObjectCollectionRule deve ser criado.

  • LogGroup_Compartment: O compartimento do grupo de log do Oracle Log Analytics no qual os logs devem ser armazenados.

  • Entity_Compartment: O compartimento da entidade do Oracle Log Analytics.

  • Stream_Compartment: O compartimento do OCI Stream.

Após a criação das políticas necessárias, você pode criar ObjectCollectionRule para coletar os logs do serviço Object Storage da tenancy convidada. Informe o namespace osNamespace e o nome do bucket osBucketName do tenant convidado no arquivo JSON, conforme mostrado no seguinte exemplo:

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

Para obter detalhes sobre a criação de ObjectCollectionRule, consulte Operações ObjectCollectionRule.

Substituir a configuração ObjectCollectionRule para processar objetos específicos

Quando quiser processar objetos específicos dentro de um bucket usando uma configuração diferente da definida para ObjectCollectionRule, você poderá usar o recurso de substituição. O recurso substituir facilita o fornecimento de propriedades de configuração com base em nomes de objetos que correspondem a padrões, prefixos ou diretórios específicos dentro do bucket.

  • As propriedades cujas substituições você pode especificar: logSourceName, charEncoding, entityId, timezone

  • O tipo de correspondência que você pode usar na substituição: contains

  • O valor de correspondência é sempre aplicado no nome do objeto.

  • Você pode criar um máximo de 10 substituições por ObjectCollectionRule, que é o valor padrão. Para alterar esse valor padrão, gere uma Solicitação de Serviço (SR) com justificativa. A solicitação será revisada.

Se você estiver criando o ObjectCollectionRule pela primeira vez, um dos seguintes exemplos do create.json poderá ser usado para criar o json para seu caso de uso:

  • Exemplo de create.json com substituições para processar nomes de objeto contendo audit com 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"}]} 
    }

    Usando a regra acima, os objetos que contêm audit são processados com logSourceName myLOGANAuditSource, enquanto todos os outros objetos no bucket são processados com logSourceName myLOGANSourceName.

  • Exemplo de create.json com substituições para processar nomes de objeto contendo audit com logSourceName myLOGANAuditSource e os nomes de objeto contendo dir1/ com 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"}]} 
    }

Depois de criar o json de configuração, especifique o caminho do arquivo ao criar o ObjectCollectionRule. Consulte a seção Criar ObjectCollectionRule no ObjectCollectionRule Operations.

Se você já tiver criado o ObjectCollectionRule, crie um json com os detalhes da substituição e atualize o ObjectCollectionRule para incluí-lo. Consulte a seção Adicionar Substituições ao ObjectCollectionRule em Operações ObjectCollectionRule.

Se quiser remover todas as condições de substituição, crie um json conforme especificado na seção Remover Substituições de ObjectCollectionRule e atualize o ObjectCollectionRule. Consulte Operações ObjectCollectionRule.

Executar Coleta Seletiva de Objetos Aplicando Filtros a Nomes de Objetos

Use o recurso Coleção de Objetos Seletivos para coletar apenas um subconjunto de objetos em um determinado bucket de armazenamento de objetos. O recurso é suportado com filtros em nomes de objeto. Quando os filtros são aplicados, somente os objetos que correspondem aos filtros são coletados para processamento.

A propriedade matchType só suporta correspondência exata com o caractere curinga *. Veja a seguir alguns exemplos de filtros que usam o curinga:

  • O filtro objectName* especifica objetos com o prefixo objectName.
  • O filtro *objectName especifica objetos com o sufixo objectName.
  • O filtro *objectName* especifica objetos que contêm o texto objectName.

Para obter mais informações sobre filtros, consulte Correspondendo Eventos com Filtros.

Se você estiver criando o ObjectCollectionRule pela primeira vez, um dos seguintes exemplos do create.json poderá ser usado para criar o json para seu caso de uso:

  • Amostra create.json com objectNameFilters para processar nomes de objetos que tenham um prefixo a/ e contenham o texto 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*"]
    }
  • Se necessário, você também pode usar o recurso de substituição para especificar uma configuração diferente para cada um dos filtros. Para o exemplo acima, você pode também especificar que todos os objetos que contêm o texto audit devem usar a origem 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"}]} 
    }

    Para obter mais informações sobre substituições, consulte Substituir Configuração ObjectCollectionRule para Processar Objetos Específicos.

Depois de criar o json de configuração, especifique o caminho do arquivo ao criar o ObjectCollectionRule. Consulte a seção Criar ObjectCollectionRule no ObjectCollectionRule Operations.

Se você já tiver criado o ObjectCollectionRule, crie um json com os detalhes dos filtros e atualize o ObjectCollectionRule para incluí-lo. Consulte a seção Adicionar objectNameFilters a ObjectCollectionRule em Operações ObjectCollectionRule.

Para obter as etapas obsoletas para coletar logs do bucket do Object Storage, consulte Coletar Logs do Bucket do Object Storage - Etapas Obsoletas.

Parar de Coletar Logs do Bucket do OCI Object Storage

Se você quiser interromper a coleta de logs do seu bucket do OCI Object Storage, identifique o ObjectCollectionRule que você havia configurado anteriormente para coleta de logs e exclua-o.

  1. Execute o seguinte comando da CLI List para listar primeiro todas as regras no compartimento específico:

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

    Por Exemplo:

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

    Para obter a referência de API REST equivalente, consulte Lista ObjectCollectionRule.

  2. Execute o seguinte comando da CLI Delete iterativamente em cada regra que você deseja excluir:

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

    Por Exemplo:

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

    Para obter a referência de API REST equivalente, consulte Excluir ObjectCollectionRule.