Componentes do modelo de métrica

O modelo do Cloud Monitoring para dados de monitoramento consiste em três conceitos principais:

  • Tipos de recursos monitorados
  • Tipos de métricas
  • Série temporal

No documento O modelo de métrica, descrevemos esses conceitos do Cloud Monitoring em termos gerais. Se esses conceitos forem novos para você, leia essa página primeiro.

Nesta página, descrevemos tipos de métricas, recursos monitorados e séries temporais, além de alguns conceitos relacionados, em mais detalhes. Esses conceitos abrangem todas as métricas do Monitoring.

Você precisa entender as informações desta página se quiser realizar uma das seguintes ações:

Para mais detalhes sobre esses conceitos e como eles são associados à API Cloud Monitoring, consulte Estrutura das séries temporais, principalmente se você planeja usar a API Monitoring ou as métricas personalizadas.

Uma palavra sobre rótulos

Os tipos de recursos monitorados e de métricas são compatíveis com rótulos, que permitem que os dados sejam classificados durante a análise. Exemplo:

  • Um tipo de recurso monitorado para uma máquina virtual pode incluir rótulos para o local da máquina e o ID do projeto associado à máquina. Quando as informações sobre o recurso monitorado são registradas, elas incluem os valores dos rótulos. Um recurso monitorado também pode ter rótulos de metadados fornecidos pelo sistema ou pelo usuário, além dos rótulos definidos para o tipo de recurso monitorado.
  • Um tipo de métrica que conta solicitações de API pode ter rótulos para registrar o nome do método invocado e o status da solicitação.

O uso de rótulos é discutido em mais detalhes em Rótulos.

Tipos de recursos monitorados

Um recurso monitorado é um recurso de onde dados da métrica são capturados. O Cloud Monitoring é compatível com aproximadamente 270 tipos de recursos monitorados.

Os tipos de recursos monitorados incluem nós e tarefas genéricos, componentes de arquitetura no Google Kubernetes Engine, tabelas no Bigtable, vários recursos da AWS, e muitos mais.

Cada tipo de recurso monitorado é formalmente descrito em uma estrutura de dados chamada descritor de recurso monitorado. Para mais informações, consulte Descritores de recursos monitorados.

Cada um dos tipos de recursos monitorados compatíveis tem uma entrada na Lista de recursos monitorados. As entradas na lista são criadas com base em descritores de recursos monitorados. Nesta seção, descrevemos as informações capturadas em um descritor de recursos monitorados e mostra como elas são apresentadas na lista.

Uma amostra de tipo de recurso monitorado

A imagem a seguir mostra a entrada na lista de um bucket do Cloud Storage:

Listagem para o bucket do Cloud Storage.

Todas as entradas da lista incluem as seguintes informações:

  • Tipo: o cabeçalho na entrada lista o tipo de recurso monitorado. No exemplo, gcs_bucket.
  • Nome de exibição: uma breve descrição do recurso monitorado.
  • Descrição: uma descrição mais longa do recurso monitorado.
  • Rótulos: um conjunto de dimensões para classificar dados. Para mais informações, consulte Rótulos.

Tipos de métricas

Um tipo de métrica descreve medições que podem ser coletadas de um recurso monitorado. Um tipo de métrica inclui uma descrição do que está sendo medido e como as medições são interpretadas. O Cloud Monitoring é compatível com aproximadamente 6.500 tipos de métricas e permite definir novos tipos.

Os tipos de métricas incluem contagens de chamadas de API, estatísticas de uso do disco, consumo de armazenamento e muito mais.

Cada tipo de métrica é formalmente descrito em uma estrutura de dados chamada de descritor de métrica. Para saber mais, consulte Descritores de métrica.

Cada um dos tipos de métrica integrada tem uma entrada nas páginas da Lista de métricas. As entradas nessas tabelas são criadas a partir dos descritores de métrica. Nesta seção, descrevemos as informações capturadas em um tipo de métrica e mostra como elas são apresentadas no material de referência.

Um exemplo de tipo de métrica

A imagem a seguir mostra uma entrada para um tipo de métrica do Cloud Storage:

Um trecho da lista de métricas do Cloud Storage.

Os tipos de métrica são exibidos em uma tabela, e o cabeçalho da tabela explica o layout das informações. Nesta seção, usamos uma entrada como exemplo, mas todas as tabelas usam o mesmo formato.

A entrada de tabela de amostra do Cloud Storage apresenta estas informações sobre um tipo de métrica:

  • Tipo de métrica: um identificador para o tipo de métrica. No exemplo, storage.googleapis.com/api/request_count.

    O prefixo storage.googleapis.com atua como um namespace para o Cloud Storage. Todos os tipos de métricas associadas a um determinado tipo de recurso monitorado usam o mesmo namespace.

    Os namespaces são omitidos das entradas nas tabelas.

    Todos os tipos de métricas associadas ao Cloud Storage estão listados na tabela de métricas do Cloud Storage.

  • Estágio de lançamento: um bloco colorido que indica o estágio de lançamento do tipo de métrica com um valor como Alfa, Beta e GA (disponibilidade geral, na sigla em inglês).

  • Nome de exibição: uma string curta que descreve o tipo de métrica "Contagem de solicitações" no exemplo.

  • Tipo, unidade: esta linha fornece informações para interpretar os valores de dados. O exemplo mostra uma métrica delta registrada como um número inteiro de 64 bits sem unidade (esse é o valor 1).

    • Tipo: este exemplo é uma métrica delta, que registra uma alteração ao longo de um período. Ou seja, cada ponto de dados registra o número de chamadas de API desde que o ponto de dados anterior foi gravado. Para mais informações sobre tipos, consulte Tipos de valor e tipos de métrica.

    • Tipo: este exemplo registra os valores como números inteiros de 64 bits. Para mais informações sobre tipos, consulte Tipos de valor e tipos de métrica.

    • Unidade: essa métrica não precisa de uma unidade explícita porque representa uma contagem. o dígito 1 é usado para indicar que nenhuma unidade é necessária.

  • Recursos monitorados: os recursos monitorados que têm esse tipo de métrica disponível. Os valores aqui são os mesmos descritos em Tipos de recursos monitorados.

  • Descrição: informações mais detalhadas sobre o que é gravado e como. Defina em itálico para diferenciá-lo dos rótulos.

  • Rótulos: um conjunto de dimensões para classificar dados. Para mais informações, consulte Rótulos.

Ao acessar os dados de monitoramento por meio da API Cloud Monitoring, inclua um projeto do Google Cloud na chamada da API. Só é possível recuperar os dados visíveis para esse projeto do Google Cloud. Por exemplo, se você solicitar os dados do projeto para o tipo de métrica storage.googleapis.com/api/request_count, verá contagens de APIs somente para buckets do Cloud Storage no seu projeto. Se o projeto não estiver usando buckets do Cloud Storage, nenhum dado de métrica será retornado.

Tipos de métricas integrados

Os tipos de métricas integrados são definidos pelos serviços do Google Cloud, incluindo o Cloud Monitoring. Esses tipos de métrica descrevem medições padrão para uma ampla variedade de infraestruturas comuns e estão disponíveis para qualquer pessoa usar.

A Lista de métricas mostra todo o conjunto de tipos de métricas integradas. As métricas listadas na página Lista de métricas externas são um subconjunto especial de métricas integradas definidas pelo Cloud Monitoring em parceria com projetos de código aberto ou provedores terceirizados. Normalmente, essas métricas têm o prefixo external.googleapis.com.

Métricas personalizadas

Ao criar seu aplicativo, é possível que você queira avaliar certas propriedades que não têm métricas integradas ao Cloud Monitoring. Com o Cloud Monitoring, é possível definir seus próprios tipos de métricas ou importá-los de fontes externas. Esses tipos são chamados de métricas personalizadas. Se uma métrica tiver um prefixo custom.googleapis.com ou prometheus.googleapis.com, ela é métrica personalizada. As últimas métricas geralmente são provenientes do Google Cloud Managed Service para Prometheus.

Por exemplo, se você quiser acompanhar o número de widgets vendidos por suas lojas, será necessário usar uma métrica personalizada. Para mais informações, consulte Visão geral das métricas definidas pelo usuário.

Rótulos

Um rótulo é um par de chave-valor que pode ser usado para fornecer informações sobre um valor de dados.

Rótulos de métricas e recursos monitorados

As definições de tipos de métricas e recursos monitorados incluem rótulos. Os rótulos são classificadores para os dados que estão sendo coletados. Eles ajudam a categorizar os dados para uma análise mais profunda. Exemplo:

  • O tipo de métrica storage.googleapis.com/api/request_count do Cloud Storage tem dois rótulos, response_code e method.
  • O tipo de recurso monitorado do Cloud Storage gcs_bucket tem três rótulos, project_id, bucket_name e location. Os rótulos identificam instâncias específicas do tipo de recurso.

Portanto, todos os dados coletados para solicitações de API de um bucket do Cloud Storage são classificados pelo método chamado, o código de resposta da chamada, o nome, o local e o projeto do bucket envolvido. O conjunto de rótulos varia de acordo com a métrica ou o tipo de recurso monitorado. Os rótulos disponíveis são documentados nas páginas Lista de métricas e Lista de recursos monitorados.

Identificando o código de resposta, o nome do método e o local ao contar chamadas de API, é possível buscar o número de chamadas para um método de API específico, o número de chamadas com falha para qualquer método ou o número de chamadas com falha para um método específico em um local específico.

O número de rótulos e o número de valores que cada um pode presumir é chamado de cardinalidade. A cardinalidade é o número de séries temporais que podem ser coletadas para um par de tipos de métricas e de recursos monitorados: há uma série temporal para cada combinação de valores dos rótulos. Para mais informações, consulte Cardinalidade: série temporal e rótulos.

Rótulos de metadados de recursos

Além dos rótulos definidos nos tipos de métricas e recursos monitorados, o Monitoring coleta internamente outras informações sobre recursos monitorados e armazena essas informações em rótulos de metadados do sistema. Esses rótulos de metadados do sistema estão disponíveis para os usuários como valores somente leitura. Alguns recursos também permitem que os usuários criem os próprios rótulos de metadados de recursos ao configurar recursos como instâncias de VM no console do Google Cloud.

Os rótulos de metadados do sistema e do usuário são chamados coletivamente de rótulos de metadados de recursos. É possível usar esses rótulos como os definidos nos tipos de métricas e recursos monitorados em filtros de série temporal. Para mais informações sobre filtragem, consulte Como monitorar filtros.

Série temporal: dados de um recurso monitorado

Nesta seção, discutimos o que são dados de monitoramento e como eles são organizados em séries temporais. É aqui que os componentes conceituais do modelo de métrica se tornam artefatos concretos.

O Cloud Monitoring armazena medições regulares ao longo do tempo para pares de tipos de métricas e recursos monitorados. As medições são coletadas em séries temporais e cada série temporal inclui os itens a seguir:

  • O nome do tipo de métrica a que a série temporal pertence e uma combinação de valores para os rótulos da métrica.

  • Uma série de pares (carimbo de data/hora, valor). O valor é a medida e o carimbo de data/hora é a hora em que a medição foi feita.

  • O recurso monitorado, que é a fonte dos dados da série temporal e também uma combinação de valores para os rótulos do recurso.

Uma série temporal é criada para cada combinação de rótulos de métricas e recursos que geram dados.

Exemplo estilizado: o tipo de métrica storage.googleapis.com/api/request_count pode ter muitas série temporal para os buckets do Cloud Storage do seu projeto. A ilustração a seguir mostra algumas séries temporais possíveis.

Na ilustração, o valor bucket: xxxx representa o valor do rótulo bucket_name no tipo de recurso monitorado, enquanto response_code e method são rótulos no tipo de métrica. Há uma série temporal para cada combinação de valores nos rótulos de recursos e métricas. As ilustrações mostram algumas delas:

Imagens que mostram várias séries temporais de uma métrica

O Cloud Monitoring não registra série temporal "vazias". No exemplo de buckets do Cloud Storage, se você não usar um bucket específico ou nunca chamar um método de API específico, nenhum dado será coletado para esse rótulo, e nenhuma série temporal o mencionará. Isso significa que, se o projeto não tiver dados para uma determinada métrica, você nunca verá o tipo de métrica.

Os tipos de métrica não indicam quais tipos de recursos monitorados são encontrados na série temporal das métricas. Para o Cloud Storage, há apenas um tipo de recurso monitorado: gcs_bucket. Alguns tipos de métricas são combinados com mais de um recurso monitorado.

Exemplo ativo: se você tiver um projeto do Google Cloud, poderá testar o widget do APIs Explorer, localizado na página de referência do método timeSeries.list na API Monitoring. O botão TESTAR a seguir fornece os seguintes parâmetros padrão para o método timeSeries.list:

  • nome: projects/[PROJECT_ID]
  • filter: metric.type="logging.googleapis.com/log_entry_count" resource.type="gce_instance"
  • interval.start_time: 2019-11-11T00:00:00Z
  • interval.end_time: 2019-11-11T00:20:00Z
  • fields: timeSeries.metric

Quando for tentar executar este exemplo, você precisa alterar [PROJECT_ID] no campo nome do ID do projeto.

Neste exemplo, pressupomos que você tenha uma instância do Compute Engine executando o agente do Cloud Logging. O tipo de recurso monitorado é gce_instance e o tipo de métrica é logging.googleapis.com/log_entry_count. É possível alterar esses valores se eles não se aplicarem a você.

Ao recuperar dados de série temporal, você precisa especificar os horários de início e término. O período deste exemplo é 11 de novembro de 2019. No entanto, os dados de série temporal são armazenados por seis semanas. Portanto, você provavelmente precisará ajustar a data antes de executar a solicitação.

Para executar a solicitação, clique no botão, ajuste os parâmetros conforme necessário e clique em Executar na parte inferior do painel do widget.

Faça o teste!

Se a solicitação for bem-sucedida, ela retornará os dados da série temporal que correspondem à solicitação. Ele será semelhante ao seguinte snippet:

{
  "timeSeries": [
    {
      "metric": {
        "labels": {
          "severity": "INFO",
          "log": "compute.googleapis.com/activity_log"
        },
        "type": "logging.googleapis.com/log_entry_count"
      },
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "0",
          "zone": "us-central1",
          "project_id": "your-project-id"
        }
      },
      "metricKind": "DELTA",
      "valueType": "INT64",
      "points": [
        {
        "interval": {
            "startTime": "2019-10-29T13:53:00Z",
            "endTime": "2019-10-29T13:54:00Z"
          },
          "value": {
            "int64Value": "0"
          }
        },
        ...
      ]
    },
    ...
  ]
}

Para mais informações sobre como usar esse widget, incluindo solução de problemas, consulte APIs Explorer.

Cardinalidade: séries temporais e rótulos

Cada série temporal está associada a um par específico de tipos de métrica e recurso monitorado. Cada um dos tipos de métrica e de recursos monitorados fornece alguns rótulos. No Cloud Monitoring, o número de combinações exclusivas de valores para o conjunto de rótulos é a cardinalidade do tipo de métrica ou do tipo de recurso monitorado. Esses valores são chamados de cardinalidade de métrica e cardinalidade de recursos, e determinam quantas série temporal possíveis (a cardinalidade total) podem ser geradas.

Métrica, recurso e cardinalidade total

Suponha que você tenha um tipo de métrica que especifique dois rótulos, color e zone. A cardinalidade da métrica depende do número de valores possíveis que esses rótulos têm:

  • Se houver apenas três cores possíveis, "vermelho", "verde" e "azul", o rótulo color poderá ter até três valores distintos.
  • Se houver apenas duas zonas possíveis, "leste" e "oeste", o rótulo zone poderá ter até dois valores distintos.

A cardinalidade dessa métrica é 6 (3×2). Se houver 1.000 valores possíveis para o rótulo color e se todas as cores puderem aparecer em todas as zonas, a cardinalidade da métrica será 2.000 (1.000×2). O mesmo cálculo se aplica se esses forem rótulos em um tipo de recurso monitorado, e não em um tipo de métrica.

Esse valor de cardinalidade é o máximo, com base no número de combinações de valores de rótulo possíveis. O valor efetivo e real pode ser significativamente menor quando todas as combinações de valores de rótulo não ocorrem de fato. Por exemplo, se cada cor aparecer em apenas uma zona, não em ambas, o número máximo de série temporal exibidas no sistema em execução será 1.000. No entanto, a utilidade da cardinalidade eficaz depende dos motivos de certas combinações não aparecerem e da possibilidade de elas acontecerem no futuro.

A cardinalidade depende dos valores que qualquer rótulo pode ter.

Quando os dados de série temporal são gravados, eles são classificados por tipos de métrica e de recurso monitorado. Em qualquer par de tipos de métrica e recurso, a cardinalidade total é o produto da cardinalidade da métrica e da cardinalidade do recurso. Se você tiver uma métrica com cardinalidade de 1.000, um recurso com cardinalidade de 100 e todos os valores de rótulo aparecerem, você terá 100.000 série temporal (1.000×100).

Ao criar suas próprias métricas, verifique se o conjunto de valores possíveis para qualquer rótulo está restrito. A abordagem preferencial é usar um pequeno conjunto de valores discretos (como "vermelho", "verde" e "azul"). Se, por exemplo, você usar valores RGB de 8 bits para um rótulo color, será possível ter mais de 16 milhões de valores diferentes. Não use valores de alta resolução, como carimbos de data/hora, qualquer tipo de identificador exclusivo, IDs do usuário, endereços IP, URLs sem parametrização e assim por diante, nos rótulos de métricas.

Performance e cardinalidade da consulta

Quando você emite uma consulta de dados, o volume de dados solicitado é o maior fator no desempenho da consulta: uma consulta de uma hora de dados geralmente é mais rápida do que a mesma consulta abrangendo seis meses. No entanto, o volume de dados retornados por uma solicitação também é sensível ao número de série temporal na solicitação. Uma consulta que recupera dois meses de dados de uma métrica de baixa cardinalidade provavelmente será mais rápida do que outra consulta que recupera dois meses de dados para uma métrica de cardinalidade muito alta, devido à quantidade de dados sendo recuperados.

A cardinalidade depende principalmente do número de valores que seus rótulos podem ter, não do número de rótulos. Em geral, você não tem controle sobre a cardinalidade dos recursos, como quando o número de pods ou VMs muda com base nas necessidades de negócios. No entanto, ao ingerir métricas no Cloud Monitoring, em vez de usar as métricas do sistema, geralmente você tem algum controle sobre a cardinalidade da métrica. Por exemplo, com métricas personalizadas definidas pelo usuário, você determina os rótulos e os valores possíveis para eles. Se você estiver fazendo a ingestão de métricas do Prometheus, poderá usar a nova rotulagem para modificar o conjunto de rótulos e descartar série temporal que você não quer ingerir.

Use a página Gerenciamento de métricas do Cloud Monitoring para identificar aquelas que podem ter problemas de cardinalidade. Para visualizar a página Gerenciamento de métricas, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Gerenciamento de métricas:

    Acesse Gerenciamento de métricas

  2. Na barra de ferramentas, selecione a janela de tempo. Por padrão, a página Gerenciamento de métricas exibe informações sobre as métricas coletadas no dia anterior.

Para mais informações sobre a página Gerenciamento de métricas, consulte Ver e gerenciar o uso de métricas.

Para informações técnicas sobre a forma como o Cloud Monitoring armazena e recupera dados de série temporal, consulte Monarch: banco de dados de séries temporais na memória em escala planetária do Google (em inglês).

Para informações sobre os limites de métricas definidas pelo usuário no Cloud Monitoring, consulte Métricas definidas pelo usuário.