Cenário: Criando Dimensões para um Destino do Serviço Monitoring

Saiba como criar dimensões para uma métrica personalizada gerada por um conector. Envie dados de log do serviço Logging para métricas (serviço Monitoring) usando o Connector Hub.

Esse cenário envolve a criação de um conector para gerar uma métrica personalizada com dimensões que fazem referência a dados de log. Use este conector para mover dados de log do Logging para o Monitoring. Depois que os dados forem movidos, você poderá filtrar as novas métricas personalizadas usando as dimensões criadas pelo conector.

Política Obrigatória do Serviço IAM

Se você for membro do grupo Administradores, já terá o acesso necessário para concluir esse cenário. Caso contrário, você precisará de acesso ao serviço Monitoring.

O workflow para criar o conector inclui uma política padrão quando necessário para fornecer permissão para gravar no serviço de destino. Se você não estiver familiarizado com políticas, consulte Visão Geral de Políticas do Serviço IAM.

Meta

Este tópico descreve a meta deste cenário.

A meta deste cenário é filtrar eventos da atualização para buckets do serviço Object Storage. Por exemplo, localize atualizações que alteraram buckets para acesso público. A localização de buckets públicos pode ajudar a evitar vazamento de segredos. Além do tipo de acesso público, esse cenário configura filtros para nome do bucket, nome do compartimento, domínio de disponibilidade, status do controle de versão e um valor estático.

Configurando este Cenário

Este tópico descreve as tarefas envolvidas na configuração deste cenário.

Este cenário cria uma métrica de um log usando o Connector Hub. A configuração desse cenário envolve as tarefas a seguir:

  • Crie um conector para mover logs do serviço Logging para uma métrica personalizada com dimensões no Monitoring.

    • Dados de log: evento Bucket - Atualizar de Logs de auditoria (grupo do log _Audit)

      Observação

      Embora esse cenário use o grupo de logs _Audit e o evento de atualização do bucket, você pode usar a mesma abordagem com qualquer log disponível na sua tenancy.
    • Namespace da métrica: bucket_events

    • Nome da métrica: update

    • Valor estático buckets-from-connector (nome da dimensão: mytags)

    • Valor extraído usando as dimensões de caminho:

      Observação

      Cada novo valor de dimensão cria um novo fluxo de métrica. Para evitar a geração de muitos fluxos de métricas exclusivos, que podem resultar em limitação, é recomendável excluir GUIDs ou UUIDs (como OCIDs de compartimento) das dimensões.

      Propriedade do caminho (nome da dimensão) Valor
      bucketName logContent.data.additionalDetails.bucketName
      compartmentName logContent.data.compartmentName
      availabilityDomain logContent.data.availabilityDomain
      publicAccessType logContent.data.additionalDetails.publicAccessType
      versioning logContent.data.additionalDetails.versioning
  • Filtre os dados movidos com as dimensões (valores estáticos e extraídos).

Você pode concluir essas tarefas na Console, na CLI ou na API do Oracle Cloud Infrastructure.

Usando a Console

Este tópico descreve como usar a Console para configurar o cenário.

Para obter ajuda para solucionar problemas, consulte Diagnóstico e Solução de Problemas com Conectores e Diagnóstico e Solução de Problemas com Notificações.

Tarefa 1: Criar o conector

Este tópico descreve como usar a Console para criar um conector que mova dados de um log para uma métrica personalizada com dimensões.

  1. Abra o menu de navegação e selecione Análise e IA. Em Mensagens, selecione Connector Hub.

  2. Escolha o Compartimento no qual você deseja criar o conector de serviço.
  3. Selecione Criar conector.
  4. Na página Criar conector, mova eventos de atualização para buckets do serviço Object Storage para uma métrica personalizada com dimensões personalizadas:

    • Digite um Nome do conector como "Bucket - Atualizar". Evite digitar informações confidenciais.
    • Selecione o Compartimento de recursos no qual você deseja armazenar o novo conector.
    • Em Configurar conector, selecione seus serviços de origem e destino para mover dados de log para uma métrica:
      • Origem: Logging
      • Destino: Monitoring
    • Em Configurar conexão de origem, selecione logs de auditoria:
      • Compartimento: o compartimento que contém os dados de log.
      • Grupo de logs: _Audit
      • Logs: (deixe vazio)
    • Em Tarefa de filtro de log, selecione o evento de atualização para buckets do serviço Object Storage:
      • Filtrar por tipo: Tipo de evento
      • Nome do serviço: Object Storage
      • Tipo de evento: Objeto - Atualizar
    • Ignore Configurar tarefa.
    • Em Configurar conexão de destino, informe o namespace de métrica personalizada e o nome da métrica personalizada que você deseja usar para os dados de log filtrados:
      • Selecione o Compartimento no qual você deseja armazenar os pontos de dados de métrica correspondentes ao evento de atualização do bucket.
      • Informe um novo Namespace da métrica : bucket_events.
        Observação

        Ao digitar um novo namespace de métricas, pressione ENTER para enviá-lo.
      • Informe uma nova Métrica : atualizar

      Em seguida, crie dimensões personalizadas para marcar os dados de log com o valor estático "buckets-from-connector" e para extrair o nome do bucket, o nome do compartimento, o OCID do compartimento, o domínio de disponibilidade, o tipo de acesso público e o status do controle de versão.

    • Selecione Adicionar dimensões.

      O painel Adicionar dimensões é exibido.

    • Extraia o nome do bucket dos dados de log (nome da dimensão bucketName):
      1. Em Selecionar caminho, procure os dados de log disponíveis para o caminho bucketName.

        As seis últimas linhas de dados de log são recuperadas do log especificado em Configurar origem.

        Exemplo de fragmento de dados de log, mostrando o caminho bucketName:

        {
          "datetime": 1636594090595,
          "logContent": {
            "data": {
              "additionalDetails": {
                "bucketName": "bucket-20210722-1148",
        
      2. Marque a caixa de seleção do caminho desejado.

        Observação

        Se nenhum dado de log estiver disponível, você poderá informar manualmente um valor de caminho com um nome de dimensão personalizado em Editar caminho. O caminho deve começar com logContent, usando a notação de ponto (.) ou índice ([]). Ponto e índice são os únicos selecionadores JMESPath suportados. Por exemplo:
        • logContent.data (notação de ponto)
        • logContent.data[0].content (notação de índice)

        Exemplo de caminho para o evento de atualização do bucket, usando notação de ponto:

        logContent.data.additionalDetails.bucketName

        Para obter mais informações sobre notação de caminho válida, consulte JmesPathDimensionValue.

        A imagem a seguir mostra um exemplo de um caminho selecionado (bucketName) e um caminho não selecionado (eTag):

        Caminhos selecionados e não selecionados

        Em Editar caminho, os seguintes campos são preenchidos automaticamente com base no caminho selecionado. Opcionalmente, você pode editar o Nome da dimensão padrão.

        Nome da dimensão Valor
        bucketName logContent.data.additionalDetails.bucketName
    • Repita a extração para cada valor adicional que você deseja usar como uma dimensão (filtro): Em Selecionar caminho, marque a caixa de seleção do caminho correspondente ao Nome da dimensão na tabela a seguir.

      O Valor é preenchido automaticamente do caminho selecionado. Opcionalmente, você pode editar o Nome da dimensão padrão.

      Nome da dimensão Valor
      compartmentName logContent.data.compartmentName
      availabilityDomain logContent.data.availabilityDomain
      publicAccessType logContent.data.additionalDetails.publicAccessType
      versioning logContent.data.additionalDetails.versioning
    • Marque os dados de log com o valor estático "buckets-from-connector" (nome da dimensão "mytags"): Em Valores estáticos, informe o seguinte:
      • Nome da dimensão: mytags
      • Valor: buckets-from-connector
  5. Selecione Salvar alterações.

    O painel Adicionar dimensões é fechado. O foco muda para a página Criar conector.

  6. Se você for solicitado a criar uma política (necessário para acesso para criar ou atualizar um conector), selecione Criar.
  7. Selecione Criar.

    O novo conector começa imediatamente a mover dados de log para sua métrica personalizada update com suas dimensões especificadas.

    Em seguida, filtre os dados movidos usando as dimensões.

Tarefa 2: Filtrar os dados movidos

Este tópico descreve como usar a Console para filtrar dados movidos de um log para uma métrica personalizada com dimensões.

  1. Abra o menu de navegação e selecione Observabilidade e Gerenciamento. Em Monitoramento, selecione Explorador de Métricas.

  2. Na página Explorador de Métricas, preencha os campos para uma nova consulta.
    • Compartimento: o compartimento que contém a métrica.
    • Namespace da métrica: bucket_events
    • Nome da métrica: atualizar
    • Intervalo: 1 m

    • Estatística: Contagem

    • Dimensões de métrica: Adicione as seguintes dimensões.
      Nome da dimensão Valor da dimensão
      mytags buckets-from-connector
      bucketName bucket-20210722-1148
      compartmentName desenvolvimento
      availabilityDomain PHX - AD-3
      publicAccessType ObjectRead
      versioning Ativado
  3. Selecione Atualizar Gráfico.

    O gráfico mostra os dados de métrica filtrados por dimensão.

    Parabéns! Agora você está filtrando dados de log que o conector mudou para uma métrica.

Usando a CLI

Este tópico descreve como usar a CLI para criar o conector e filtrar os dados movidos.

Para obter informações sobre como usar a API e assinar solicitações, consulte a documentação da API REST e Credenciais de Segurança. Para obter informações sobre SDKs, consulte SDKs e a CLI.

  1. Defina a origem do log para o conector: salve um arquivo chamado source.json.

    Exemplo de arquivo source.json
    {
      "kind": "logging",
      "logSources": [
        {
          "compartmentId": "<compartment_OCID>",
            "logGroupId": "_Audit",
            "logId": null
        }
      ]
    }
  2. Defina o destino (métrica e dimensões) para o conector: salve um arquivo chamado target.json.

    Exemplo de arquivo target.json
    {
      "kind": "monitoring",
      "compartmentId": "<compartment_OCID>",
      "metricNamespace": "bucket_events",
      "metric": "update",
      "dimensions": [
        {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}},
        {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}},
        {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}},
        {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}},
        {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}},
        {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}}
      ]
    }
  3. Crie um conector: Abra um prompt de comando e execute o comando oci sch service-connector create:

    Exemplo de comando para criar um conector
    oci sch service-connector create
     --compartment-id <compartment_OCID>
     --display-name "Bucket - Update"
     --source file://source.json
     --target file://target.json
  4. Consulte os dados de métrica usando as dimensões personalizadas: Abra um prompt de comando e execute o comando oci monitoring metric-data summarize-metrics-data:

    Exemplo de comando para consultar dados de métrica usando dimensões personalizadas
    oci monitoring metric-data summarize-metrics-data
     --compartment-id <compartment_OCID>
     --namespace bucket_events
     --query-text update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()

Para obter ajuda para solucionar problemas, consulte Diagnóstico e Solução de Problemas com Conectores e Diagnóstico e Solução de Problemas com Notificações.

Usando a API

Este tópico descreve como usar a API para criar o conector e filtrar os dados movidos.

Para obter informações sobre como usar a API e assinar solicitações, consulte a documentação da API REST e Credenciais de Segurança. Para obter informações sobre SDKs, consulte SDKs e a CLI.

Use as seguintes operações:

  1. CreateServiceConnector: Cria um conector.

    Exemplo de solicitação CreateServiceConnector
    POST /20200909/serviceConnectors
    Host: service-connector-hub.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "compartmentId": "<compartment_OCID>",
      "displayName": "Bucket - Update",
      "source": {
        "kind": "logging",
        "logSources": [
          {
            "compartmentId": "<compartment_OCID>",
            "logGroupId": "_Audit",
            "logId": null
          }
        ]
      },
      "target": {
        "compartmentId": "<compartment_OCID>",
        "dimensions": [
          {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}},
          {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}},
          {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}},
          {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}},
          {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}},
          {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}}
        ]
        "kind": "monitoring",
        "metric": "update",
        "metricNamespace": "bucket_events"
      }
    }
  2. SummarizeMetricsData: consulte os dados de métrica por dimensões.

    Exemplo de solicitação SummarizeMetricsData
    POST /20180401/metrics/actions/summarizeMetricsData?compartmentId=<compartment_OCID>
    Host: telemetry.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "namespace": "bucket_events",
      "query": "update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()"
    }

Para obter ajuda para solucionar problemas, consulte Diagnóstico e Solução de Problemas com Conectores e Diagnóstico e Solução de Problemas com Notificações.