Componentes do modelo de métrica

Entender como os tipos de recursos monitorados, tipos de métricas, rótulos e séries temporais funcionam juntos no Cloud Monitoring ajuda a consultar dados, criar gráficos e alertas e projetar métricas personalizadas. Você aplica esses conceitos ao inspecionar métricas no Metrics Explorer, configurar políticas de alertas, recuperar dados de séries temporais com a API Cloud Monitoring ou criar métricas definidas pelo usuário.

Se esses conceitos forem novos para você, comece com Métricas, série temporal e recursos. Para esquemas de objetos da API Monitoring e detalhes de métricas personalizadas, consulte Estrutura de séries temporais.

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 arquitetônicos no Google Kubernetes Engine, tabelas no Bigtable, vários recursos da AWS e muito 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, gcs_bucket no exemplo.
  • 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 as 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 mais informações, consulte Descritores de métricas.

Cada um dos tipos de métricas integradas 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 ou GA.

  • 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 em 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 de métricas.

    • 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 dados de monitoramento pela API Cloud Monitoring, inclua um projeto do Google Cloud na chamada de API. Só é possível recuperar os dados que estão 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, as contagens de API serão exibidas apenas para os buckets do Cloud Storage no 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 integradas 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 um prefixo de external.googleapis.com.

Métricas personalizadas

Ao criar seu aplicativo, talvez você queira medir determinadas propriedades, itens para os quais não há métricas integradas ao Cloud Monitoring. Com o Cloud Monitoring, é possível definir seus próprios tipos de métrica ou importar tipos de métrica de fontes externas. Esses tipos de métricas são chamados de métricas personalizadas. Se uma métrica tiver um prefixo de custom.googleapis.com ou prometheus.googleapis.com, ela será uma métrica personalizada. As últimas métricas geralmente vêm do Serviço gerenciado do Google Cloud 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, toda a coleta de dados para solicitações de API de um bucket do Cloud Storage é classificada pelo método chamado, pelo código de resposta da chamada e pelo nome, local e 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.

Ao rastrear o código de resposta, o nome do método e o local ao contar as 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.

Os rótulos de metadados de recursos só aparecem no resultado da consulta se você os agregar explicitamente.

Para mais informações sobre filtragem, consulte Filtros do Monitoring.

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 gera 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 tabela a seguir mostra algumas série temporal possíveis.

Na tabela, o valor bucket: xyz representa o valor do rótulo bucket_name no tipo de recurso monitorado, e 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 recurso e métrica. A tabela mostra alguns deles:

Rótulo de recurso
monitorado
Rótulos de métrica Dados de métricas
bucket: 1234 response_code: OK,
method: read
{
(3, Wed 2:00pm),
(2, Wed 2:05pm),
(8, Wed 2:10pm),
...}
bucket: 1234 response_code: OK,
method: write
{
(1, Wed 2:01pm),
(2, Wed 2:04pm),
(7, Wed 2:09pm),
...}
bucket: 1234 response_code: FAIL,
method: write
{
(1, Wed 2:01pm),
(0, Wed 2:04pm),
(0, Wed 2:09pm),
...}
bucket: 9876 response_code: OK,
method: read
{
(2, Wed 1:59pm),
(4, Wed 2:05pm),
(3, Wed 2:10pm),
...}

O Cloud Monitoring não registra série temporal "vazias". No exemplo de buckets do Cloud Storage, se você não estiver usando 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 pareados com mais de um recurso monitorado.

Exemplo ao vivo: 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.

  1. Abra a página de referência de timeSeries.list.

  2. No painel Teste este método, insira o seguinte:

    • name: projects/PROJECT_ID. Substitua PROJECT_ID pelo ID do seu projeto do Google Cloud .
    • filter: metric.type="logging.googleapis.com/log_entry_count" resource.type="gce_instance"
    • interval.start_time: insira o horário de início e verifique se ele é 20 minutos anterior ao horário de término.
    • interval.end_time: insira o horário de término.

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": "2024-03-29T13:53:00Z",
            "endTime": "2024-03-29T13:54:00Z"
          },
          "value": {
            "int64Value": "0"
          }
        },
        ...
      ]
    },
    ...
  ]
}

Para mais informações sobre como usar o widget do APIs Explorer, 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. Os tipos de métrica e de recurso monitorado fornecem um número de 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 recurso, e determinam quantas série temporal possíveis, a cardinalidade total, podem ser geradas.

Cardinalidade de métrica, recurso e total

Suponha que você tenha um tipo de métrica que especifica 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 cada cor puder aparecer em cada zona, 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, em vez de um tipo de métrica.

Esse valor de cardinalidade é um máximo, com base no número de combinações de valores de rótulo possíveis. O valor real e efetivo pode ser significativamente menor quando nem todas as combinações de valores de rótulo ocorrem. Por exemplo, se cada cor aparecer em apenas uma zona, e não em ambas, o número máximo de série temporal que você verá no sistema em execução será 1.000. No entanto, a utilidade da cardinalidade efetiva depende dos motivos pelos quais determinadas combinações não aparecem e se elas podem aparecer no futuro.

A cardinalidade depende dos valores que os rótulos podem ter.

Quando os dados de série temporal são gravados, eles são classificados por tipos de métrica e de recurso monitorado. Para 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 e um recurso com cardinalidade de 100, e se todos os valores de rótulo aparecerem, você terá 100.000 série temporal (1.000×100).

Ao projetar suas próprias métricas, verifique se o conjunto de valores possíveis para qualquer rótulo é restrito. Um pequeno conjunto de valores discretos (como "vermelho", "verde" e "azul") é a abordagem preferida. Por exemplo, se você usar valores RGB de 8 bits para um rótulo color, poderá 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 de usuário, endereços IP, URLs sem parâmetros etc., para rótulos de métricas.

Desempenho e cardinalidade da consulta

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

A cardinalidade depende principalmente do número de valores que os 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 métricas do sistema, você geralmente tem algum controle sobre a cardinalidade das métricas. 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 ingerindo métricas do Prometheus, use a reidentificação para modificar o conjunto de rótulos e descartar as série temporal que não quer ingerir.

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

  1. No console do Google Cloud , acesse a página  Gerenciamento de métricas:

    Acesse os Gerenciamento de métricas

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoramento.

  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 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.

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