Introdução ao Cloud Monitoring

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Neste documento, você terá 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 aplicativos de terceiros. As ferramentas de visualização e análise de dados fornecidas pelo Cloud Monitoring ajudam você a responder 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 é compatível com o console do Google Cloud e com a 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 são coletadas pelo agente do Cloud Monitoring. Essas métricas fornecem informações extras sobre recursos e sistemas do sistema em execução em instâncias do Compute Engine e em instâncias do Amazon Elastic Compute Cloud (Amazon EC2). 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 que o serviço grava usando a API Cloud Monitoring ou uma biblioteca como o Tensorflow.

  • 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 o serviço detecta e o número total de entradas de registro recebidas pelo 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 os dados e 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 da série temporal que quer visualizar. Por exemplo, é possível configurar um gráfico para exibir dados de instâncias de VM do Compute Engine localizadas na zona us-east-1d.

As configurações do gráfico permitem comparar os dados atuais com os anteriores, exibir outliers e percentis e mostrar 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éries temporais, 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 seu serviço de uma maneira que imita como seus clientes acessam seu serviço e depois registram o sucesso e a latência da sondagem.

Para ver informações sobre as 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, ele 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.

Receba notificações quando um serviço não estiver com bom desempenho

Para receber uma notificação quando a performance de um serviço nã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 notifica sua equipe de plantão quando o 90o percentil da latência das respostas HTTP 200 do serviço excede 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 no 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 de alertas, 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 no 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 a utilização de CPU armazenaria informações sobre a VM cuja utilização faz com que a condição seja atendida. Quando a condição deixa de ser atendida, o incidente é automaticamente fechado. É 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 uma lista completa de canais de notificação, consulte Opções de notificação.

Para mais informações sobre as políticas de alertas, consulte Introdução a alertas.

Monitorar grandes sistemas

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 seus recursos como uma coleção, em vez de individualmente, crie um grupo de recursos. Um grupo de recursos é um conjunto dinâmico de recursos que atendem a alguns critérios que você fornece. add medida que você adiciona e remove recursos, por exemplo, ao adicionar instâncias de VM do Compute Engine ao seu projeto do Cloud, a associação ao 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 Como usar grupos de recursos.

Monitorar métricas de vários projetos do 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 do escopo. O projeto de escopo é aquele 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 Como modificar a configuração do Cloud Monitoring do projeto.

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 exclusiva. Veja algumas maneiras de exibir esses dados:

  • É possível mostrar o uso de 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 exibir a utilização média da CPU. A captura de tela a seguir ilustra um gráfico com esta configuração:

    Uso médio da CPU agrupado por tipo de máquina.

A seguir