Visão geral do Cloud Monitoring

Neste documento, fornecemos uma visão geral do Cloud Monitoring, que faz parte do pacote de operações do Google Cloud. O Cloud Monitoring é integrado à maioria dos serviços do Google Cloud e coleta e armazena automaticamente informações de desempenho sobre esses serviços. Ele também pode coletar métricas do sistema e de aplicativos de terceiros. As ferramentas de visualização e análise de dados fornecidas pelo Cloud Monitoring ajudam você a responder a perguntas importantes, como as seguintes:

  • Qual é a carga do meu serviço?
  • Meu site está respondendo corretamente?
  • Meu serviço tem um bom desempenho?

O Cloud Monitoring oferece suporte ao Console do Google Cloud e à API para a maioria dos serviços, e as páginas de referência da API Cloud Monitoring, como a página alertPolicies.list, permitem testar chamadas de API diretamente da página de referência.

Este documento é destinado a desenvolvedores e administradores de sistemas que precisam monitorar o desempenho de um serviço ou sistema.

Monitorar a carga em um serviço

Para entender a carga atual em um serviço ou para visualizar os dados de desempenho dele no último mês, use as ferramentas de gráficos e painéis. É possível criar gráficos e monitorar dados de métricas (numéricas) que seu projeto do Google Cloud coleta, incluindo:

  • Métricas do sistema geradas pelos serviços do Google Cloud. Essas métricas fornecem informações sobre como o serviço está operando. Por exemplo, o Compute Engine informa mais de 25 métricas exclusivas para cada instância de máquina virtual (VM). Para uma lista completa de métricas, consulte Métricas do Google Cloud.

  • Métricas do sistema e do aplicativo que os agentes do pacote de operações do Google Cloud coletam. Essas métricas fornecem mais informações sobre recursos do sistema e aplicativos executados em instâncias do Compute Engine. Outra opção é configurar o agente para coletar métricas de plug-ins de terceiros, como servidores da Web Apache ou Nginx, ou bancos de dados MongoDB ou PostgreSQL.

  • Métricas definidas pelo usuário gravadas pelo serviço usando a API Cloud Monitoring ou uma biblioteca como a OpenTelemetry.

  • Métricas com base em registros, que coletam informações numéricas sobre os registros gravados no Cloud Logging. As métricas com base em registros definidas pelo Google incluem contagens de erros que seu serviço detecta e o número total de entradas de registro recebidas pelo seu projeto do Google Cloud. Também é possível definir métricas com base em registros. Por exemplo, é possível criar uma métrica que conta o número de erros 404 Not Found para um aplicativo implantado no App Engine.

Para visualizar seus dados para ver tendências, identificar outliers e ver outros detalhes sobre eles, use as seguintes ferramentas:

  • Painéis do Google Cloud: o Cloud Monitoring cria automaticamente esses painéis com base nos recursos usados pelo projeto do Google Cloud.

    Por exemplo, quando um projeto do Google Cloud contém instâncias de VM do Compute Engine, os painéis para essas instâncias de VM e discos são criados automaticamente. Ao usar o painel Instâncias de VM, é possível ver detalhes, como o uso de memória e disco, identificar endereços IP e identificar quais VMs estão descartando pacotes de rede. Esse painel também exibe informações sobre o uso do agente do Cloud Monitoring e fornece sugestões para instrumentação.

  • Painéis personalizados: você cria ou instala esses painéis. Os painéis personalizados permitem definir quais dados você quer visualizar e como ver esses dados. Por exemplo, é possível exibir dados de métricas, políticas de alertas e registros armazenados no projeto do Google Cloud. É possível exibir dados de série temporal em um gráfico, com um medidor, visão geral ou em formato tabular. Os painéis também são compatíveis com widgets de texto. É possível criar um painel personalizado com a API Dashboards ou com o Console do Google Cloud.

  • Gráficos: é possível adicionar gráficos a um painel personalizado ou usar o Metrics Explorer, uma ferramenta de gráficos usada para criar rapidamente gráficos e explorar dados de série temporal. É possível salvar gráficos criados com o Metrics Explorer em um painel personalizado.

Ao criar um gráfico, você seleciona os dados de série temporal que deseja visualizar. Por exemplo, é possível configurar um gráfico para exibir dados de instâncias de VM do Compute Engine que estão localizadas na zona us-east-1d.

As configurações do gráfico permitem comparar dados atuais com dados anteriores, exibir valores atípicos e percentuais e exibir várias métricas. Por exemplo, a captura de tela a seguir mostra um gráfico que exibe o número de bytes lidos e gravados por uma única VM:

O Metrics Explorer exibe bytes de leitura e gravação de disco.

Para mais informações sobre como visualizar dados de série temporal, consulte Como usar painéis e gráficos.

Monitorar a disponibilidade do site

Para monitorar se um site está respondendo, configure uma verificação de tempo de atividade. Essas verificações sondam periodicamente o serviço de uma maneira que imita como os clientes acessam o serviço e registram o sucesso e a latência da sondagem.

Para visualizar informações sobre suas verificações de tempo de atividade, o Cloud Monitoring fornece um painel que resume o status de cada verificação e, para cada verificação, apresenta um painel com informações detalhadas. A visualização detalhada de uma verificação de tempo de atividade exibe o sucesso ou a falha da resposta e a latência dela, além de detalhes sobre essa verificação:

Amostra de visualização detalhada de uma verificação de tempo de atividade.

Para mais informações sobre esse tópico, consulte Como gerenciar verificações de tempo de atividade.

Receber notificações quando um serviço não tiver um bom desempenho

Para receber notificações quando o desempenho de um serviço atender aos critérios definidos por você, crie uma política de alertas. Por exemplo, é possível criar uma política de alertas que notifique sua equipe de plantão quando o 90o percentil da latência de respostas HTTP 200 do seu serviço exceder 100 ms. Da mesma forma, você pode ser notificado quando uma verificação de tempo de atividade falhar.

Com as políticas de alertas, você configura se uma única série temporal pode atender a uma condição ou se várias séries temporais precisam atender à condição antes de ser atendida. As políticas de alertas podem ser simples ou complexas. Exemplo:

  • Notifique-me quando qualquer verificação de tempo de atividade para o domínio example.com falhar por pelo menos três minutos.

  • Notifique a equipe de plantão quando o 90º percentil das respostas HTTP 200 exceder uma latência de 100 ms para três ou mais servidores da Web em dois locais do Google Cloud, desde que haja menos de 15 QPS no servidor.

  • Avisar se a carga de CPU de qualquer instância de VM no projeto do Google Cloud estiver acima do limite de 0,6.

O Cloud Monitoring fornece um painel que resume o status das suas políticas de alertas e, para cada política, fornece um painel com informações detalhadas. Conforme mostrado na captura de tela a seguir, o painel detalhado de um alerta exibe os dados que estão sendo monitorados, o limite do alerta, os canais de notificação, uma lista de incidentes e qualquer documentação definida pelo usuário incluída em uma notificação:

Política de alertas que monitora a carga da CPU.

As condições são o componente principal de uma política de alertas. Uma condição descreve um possível problema com o sistema que você quer que o Cloud Monitoring monitore. Por exemplo, você pode descrever condições como as seguintes:

  • Qualquer verificação de tempo de atividade para o domínio example.com falha por pelo menos três minutos.
  • O espaço livre de qualquer instância de VM monitorada é inferior a 10%.

Quando as condições de uma política de alertas são atendidas, por exemplo, quando cada verificação de tempo de atividade do domínio example.com falha por três minutos, o Cloud Monitoring abre um incidente e emite notificações.

Um incidente é um registro permanente que armazena informações sobre o recurso que está sendo monitorado. Por exemplo, uma política de alertas que monitora o uso da CPU armazenaria informações sobre a VM cuja utilização faz com que a condição seja atendida. Quando a condição para de ser atendida, o incidente é fechado automaticamente. É possível visualizar todos os incidentes, abertos e fechados, usando o painel de alertas.

Especifique quem será notificado quando configurar uma política de alertas. Ele é compatível com canais de notificação comuns, incluindo e-mail, Cloud Mobile App e serviços como o PagerDuty ou o Slack. Para ver uma lista completa de canais de notificação, consulte Criar e gerenciar canais de notificação.

Para mais informações sobre políticas de alertas, consulte Visão geral de alertas.

Monitorar sistemas grandes

Nesta seção, descrevemos como gerenciar recursos como uma coleção e como monitorar métricas armazenadas em vários projetos do Google Cloud.

Gerenciar recursos como uma coleção

Para gerenciar os recursos como uma coleção em vez de individualmente, crie um grupo de recursos. Um grupo de recursos é uma coleção dinâmica de recursos que satisfazem alguns critérios fornecidos por você. À medida que você adiciona e remove recursos, por exemplo, ao adicionar instâncias de VM do Compute Engine ao projeto do Google Cloud, a associação no grupo é alterada automaticamente. Veja a seguir exemplos de grupos de recursos:

  • Instâncias do Compute Engine com nomes que começam com a string prod-.
  • Recursos com a tag test-cluster.
  • Instâncias do Amazon EC2 na região A ou região B.

Depois de definir um grupo de recursos, é possível monitorar o grupo como se fosse um único recurso. Por exemplo, é possível configurar uma verificação de tempo de atividade para monitorar um grupo de recursos. Para gráficos e políticas de alertas, também é possível filtrar com base no nome do grupo.

Para mais informações sobre esse tópico, consulte Configurar grupos de recursos.

Monitorar métricas de vários projetos do Google Cloud

Para visualizar e monitorar os dados de série temporal para vários projetos do Google Cloud e contas da AWS por meio de uma única interface, configure um escopo de métricas de vários projetos.

Por padrão, as páginas do Cloud Monitoring no Console do Google Cloud fornecem acesso apenas à série temporal armazenada no projeto de escopo. O projeto de escopo é o que você selecionou com o seletor de projetos do Console do Google Cloud. O projeto de escopo armazena os alertas, verificações de tempo de atividade, painéis e grupos de monitoramento que que você configura.

O projeto de escopo também hospeda um escopo de métricas. O escopo de métricas define os projetos e as contas com métricas visíveis para o projeto de escopo. É possível configurar o escopo das métricas para incluir dados de série temporal de outros projetos do Google Cloud e de contas da AWS. Para informações sobre como modificar um escopo de métricas, consulte Configurar um escopo de métricas para vários projetos.

Modelo de dados do Cloud Monitoring

Nesta seção, apresentamos o modelo de dados do Cloud Monitoring:

  • Uma métrica descreve algo que é medido. Exemplos de métricas incluem a utilização da CPU de uma VM e a porcentagem de um disco usado.

  • Uma série temporal é uma estrutura de dados que contém medições com carimbo de data/hora de uma métrica e informações sobre a origem e o significado dessas medidas.

Por exemplo, o exemplo a seguir ilustra uma série temporal:

  "timeSeries": [
    {
      "points": [
        {
          "interval": {
            "startTime": "2020-07-27T20:20:21.597143Z",
            "endTime": "2020-07-27T20:20:21.597143Z"
          },
          "value": {
            "doubleValue": 0.473005
          }
        },
        {
          "interval": {
            "startTime": "2020-07-27T20:19:21.597239Z",
            "endTime": "2020-07-27T20:19:21.597239Z"
          },
          "value": {
            "doubleValue": 0.473025
          }
        },
      ],
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "2708613220420473591",
          "zone": "us-east1-b",
          "project_id": "sampleproject"
        }
      },
      "metric": {
        "labels": {
          "device": "sda1",
          "state": "free"
        },
        "type": "agent.googleapis.com/disk/percent_used"
      },
      "metricKind": "GAUGE",
      "valueType": "DOUBLE",

    },

Veja alguns detalhes sobre o que uma série temporal contém:

  • A matriz points contém as medidas com carimbo de data/hora.

    No exemplo anterior, a matriz points contém dois valores:

      "points": [
        {
          "interval": {
            "startTime": "2020-07-27T20:20:21.597143Z",
            "endTime": "2020-07-27T20:20:21.597143Z"
          },
          "value": {
            "doubleValue": 0.473005
          }
        },
        {
          "interval": {
            "startTime": "2020-07-27T20:19:21.597239Z",
            "endTime": "2020-07-27T20:19:21.597239Z"
          },
          "value": {
            "doubleValue": 0.473025
          }
        },
      ],
    

    Para entender o significado de um valor, consulte os outros dados incluídos na série temporal e as definições desses dados.

  • O campo resource descreve o componente de hardware ou software que está sendo monitorado. No Cloud Monitoring, o componente de hardware ou software é chamado de recurso monitorado. Exemplos de recursos monitorados incluem instâncias do Compute Engine e aplicativos do App Engine. Para ver uma lista completa de recursos monitorados, consulte a Lista de recursos monitorados.

    No exemplo anterior, o campo resource é o seguinte:

      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "2708613220420473591",
          "zone": "us-east1-b",
          "project_id": "sampleproject"
        }
    
    • O campo type lista o recurso monitorado como um gce_instance, que indica que essas medidas são tomadas em uma instância de VM do Compute Engine.

    • O campo labels contém pares de chave-valor que fornecem informações adicionais sobre o recurso monitorado. Para um tipo gce_instance, os rótulos identificam a instância de VM que está sendo monitorada.

  • O campo metric descreve o que está sendo medido.

    No exemplo anterior, o campo metric é como mostrado:

      "metric": {
        "labels": {
          "device": "sda1",
          "state": "free"
        },
        "type": "agent.googleapis.com/disk/percent_used"
      },
    
    • Para os serviços do Google, o campo type especifica o serviço e o que está sendo monitorado. Neste exemplo, o agente do Cloud Monitoring é o serviço e está avaliando a porcentagem do disco usado. Quando o campo type começa com custom ou external, a métrica é personalizada ou definida por terceiros.

    • O campo labels contém pares de chave-valor que fornecem informações adicionais sobre a medição. Esses rótulos são definidos como parte do MetricDescriptor, que é uma estrutura de dados que define os atributos dos dados medidos. O MetricDescriptor da métrica agent.googleapis.com/disk/percent_used inclui os rótulos device e state.

  • O campo metricKind descreve a relação entre medições adjacentes em uma série temporal:

    • As métricas GAUGE armazenam o valor da coisa que está sendo medida em um determinado momento, por exemplo, um registro de temperatura por hora.

    • As métricas CUMULATIVE armazenam o valor acumulado daquilo que está sendo medido em um determinado momento. Por exemplo, um odômetro em um veículo.

    • As métricas DELTA armazenam a alteração no valor do que está sendo medido durante um período especificado. Por exemplo, um resumo de ações que mostra os ganhos ou as perdas delas.

  • O campo valueType descreve o tipo de dados da medição: INT64, DOUBLE, BOOL, STRING ou DISTRIBUTION.

O Cloud Monitoring grava uma série temporal para cada combinação de valores de rótulo de métrica e recurso. Você pode usar esses rótulos para agrupar e filtrar séries temporais. Por exemplo, quando um projeto do Google Cloud contém várias instâncias de VM do Compute Engine, a utilização da CPU para cada instância de VM é uma série temporal única. Veja algumas maneiras de exibir esses dados:

  • É possível mostrar a utilização da CPU de cada instância de VM.
  • É possível mostrar a utilização da CPU para uma instância de VM específica filtrando a série temporal por um único valor do rótulo instance_id.
  • É possível agrupar pelas instâncias de VM pelo rótulo machine_type e, em seguida, exibir a utilização média da CPU. A captura de tela a seguir ilustra um gráfico com esta configuração:

    Utilização média da CPU agrupada por tipo de máquina.

A seguir