Monitorar o consumo de reservas


Neste documento, explicamos como monitorar o consumo de reservas de recursos zonais do Compute Engine usando o Cloud Monitoring.

O Monitoring coleta e armazena informações de desempenho dos serviços do Google Cloud, como o Compute Engine. As informações de desempenho são chamadas de métricas e séries temporais. É possível acessar as métricas e a série temporal das reservas do Compute Engine para fazer o seguinte:

Esses métodos podem, por exemplo, ajudar você a verificar se suas reservas estão sendo consumidas conforme planejado ou oportuno para evitar custos desnecessários de recursos desperdiçados ou reservas não utilizadas.

Antes de começar

  • Revise os requisitos e restrições para reservas.
  • Ative a API Monitoring.

    Ative a API

  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Funções exigidas

Para ter as permissões necessárias para criar painéis do Monitoring ou políticas de alertas para monitorar o consumo de reservas, peça ao administrador para conceder a você o Monitoring Admin (roles/monitoring.admin) do IAM no projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esse papel predefinido contém as permissões necessárias para criar painéis do Monitoring ou políticas de alertas para monitorar o consumo de reservas. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para criar painéis do Monitoring ou políticas de alertas para monitorar o consumo de reservas:

  • Para criar painéis: monitoring.dashboards.create no projeto
  • Para criar alertas de política: monitoring.alertPolicies.create no projeto

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Restrições

Ao usar o Monitoring para acessar e visualizar a série temporal de uma reserva, as seguintes restrições se aplicam:

  • Depois de criar uma reserva, a série temporal dela fica disponível em até 30 minutos.

  • Depois que uma série temporal é disponibilizada, o Monitoring começa a atualizá-la pelo menos uma vez a cada 30 minutos.

  • Se você excluir uma reserva, a série temporal dela também será excluída e não poderá ser recuperada.

  • Só é possível acessar e visualizar a série temporal de uma reserva criada no projeto atual.

Para mais informações sobre as restrições do Monitoring, consulte Cotas e limites do Cloud Monitoring.

Métricas de reservas

Ao criar painéis do Monitoring ou políticas de alertas, você precisa primeiro selecionar a métrica do Google Cloud para medir o desempenho do serviço do Google Cloud. Para reservas, selecione as seguintes métricas do Compute Engine:

  • Reservado: o número de instâncias de máquina virtual (VM) reservadas em cada reserva no projeto atual.

  • Usado: o número de VMs consumidas em cada reserva no projeto atual.

Depois de selecionar uma métrica, é possível filtrar ou agrupar ainda mais as medidas da métrica das reservas. Para mais informações sobre os filtros disponíveis para reservas, consulte Filtros de reserva neste documento.

Filtros de reservas

É possível usar os filtros do Monitoring para agrupar ou filtrar os dados de série temporal associados a uma ou mais reservas. Ao criar painéis do Monitoring ou políticas de alertas, é possível limitar os dados da série temporal que eles usam especificando um ou mais dos seguintes rótulos:

Seletor Nome do rótulo Descrição
metadata.system machine_type O tipo de máquina especificado nas VMs reservadas para uma reserva.
metadata.system name O nome de uma reserva.
metadata.system state O estado de uma reserva. Só é possível monitorar reservas no estado ACTIVE, que é quando uma reserva existe.
metric reserved_resource_type O tipo de recursos zonais reservados por uma reserva. Só é possível monitorar o tipo instance, que é uma instância de VM.
resource location A zona em que uma reserva está localizada.
resource reservation_id O identificador (ID) de uma reserva.
resource resource_container O número do projeto em que existe uma reserva. Só é possível monitorar as reservas que foram criadas no projeto atual.

Ao criar um filtro, especifique o seletor e o nome do rótulo, seguido por um operador de comparação e, em seguida, o valor a ser filtrado. Por exemplo, se você quiser que sua consulta filtre suas reservas por zona us-central1-a, use este filtro:

resource.location = "us-central1-a"

Para garantir que o valor especificado em um filtro corresponda ao valor do campo de uma reserva, visualize os detalhes da reserva.

Monitorar o consumo de reservas

Para monitorar o consumo das suas reservas, selecione um dos seguintes métodos especificados neste documento:

  • Criar um painel: crie painéis do Monitoring e adicione widgets às áreas do gráfico para exibir os dados da série temporal vinculados ao consumo das reservas.

    Esse método é útil quando, por exemplo, você quer verificar se uma VM está consumindo corretamente uma reserva ou comparar a tendência de consumo de várias reservas.

  • Criar políticas de alertas: crie políticas de alertas para enviar alertas quando os dados de série temporal vinculados ao consumo das suas reservas atingirem um limite definido.

    Esse método é útil quando, por exemplo, você quiser ser notificado quando o número de VMs usadas no projeto atual estiver abaixo de uma proporção específica ou quando uma reserva permanecer sem uso por um período específico.

Crie um painel

É possível criar painéis do Monitoring e ver a série temporal vinculada ao consumo das reservas usando o console do Google Cloud (recomendado) e a API Monitoring.

Ao definir como exibir os dados da série temporal de um filtro do Monitoring, use um dos métodos a seguir:

  • Consulta básica: esse método é útil para configurar rapidamente os dados de série temporal para um widget de painel.

    Por exemplo, é possível usar a consulta básica para exibir rapidamente quais de suas reservas em uma zona específica ainda não foram totalmente consumidas.

  • MQL: esse método é útil para recuperar, filtrar e manipular dados de série temporal para criar configurações mais complexas para um widget de painel.

    Por exemplo, é possível usar a Linguagem de consulta do Monitoring (MQL, na sigla em inglês) para exibir a proporção de VMs consumidas em relação a VMs reservadas nas suas reservas.

Consulta básica

No exemplo a seguir, descrevemos como criar um painel do Monitoring com um widget de gráfico de linhas para exibir suas reservas consumidas na zona us-central1-a.

Console

Para criar um painel do Monitoring usando a consulta básica, siga estas etapas:

  1. No console do Google Cloud, acesse Painéis.

    Ir para "Painéis"

  2. Clique em Criar painel.

    A página Novo painel é aberta.

  3. Clique em Adicionar widget.

    O painel Adicionar widget será exibido.

  4. Clique em um dos widgets disponíveis. Por exemplo, clique no widget Linha.

    O painel Configurar widget será exibido.

  5. Clique em Selecionar uma métrica.

  6. Na janela Selecionar uma métrica, faça o seguinte:

    1. Insira Reservation e selecione Reserva.

    2. Na lista Categorias de métricas ativas, selecione Reserva novamente.

    3. Na lista Métricas ativas, selecione uma das métricas disponíveis. Por exemplo, selecione Usado.

    4. Clique em Aplicar.

  7. Para filtrar suas reservas por uma zona específica, faça o seguinte:

    1. Na lista Adicionar filtro, selecione um dos filtros para reservas disponíveis. Neste exemplo, selecione location.

    2. Na lista Comparação, selecione um dos operadores disponíveis. Neste exemplo, selecione = (igual a) (padrão).

    3. Na lista Valor, selecione a zona que você quer usar para filtrar suas reservas. Para este exemplo, selecione us-central1-a.

  8. Clique em Aplicar.

Para mais opções de personalização de painéis do Monitoring usando o console do Google Cloud, consulte Criar e gerenciar painéis personalizados.

REST

Para criar um painel do Monitoring usando a consulta básica, faça uma solicitação POST para o método dashboards.create.

POST https://monitoring.googleapis.com/v1/projects/PROJECT_ID/dashboards

{
  "displayName": "Consumed reservations in zone us-central1-a",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "title": "Reservation - Used for us-central1-a [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "FILTER",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_NONE"
                    }
                  }
                }
              }
            ],
            "timeshiftDuration": "0s",
            "yAxis": {
              "scale": "LINEAR"
            }
          }
        },
        "width": 6
      }
    ]
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto atual.

  • FILTER: o filtro do Monitoring a ser usado no painel. Por exemplo, para monitorar as reservas consumidas na zona us-central1-a, especifique o seguinte:

    resource.type = 'compute.googleapis.com/Reservation' AND metric.type = 'compute.googleapis.com/reservation/used' AND resource.location = 'us-central1-a'
    

Para mais opções de personalização de painéis do Monitoring usando a API Monitoring, consulte Criar e gerenciar painéis usando a API.

MQL

No exemplo a seguir, descrevemos como criar um painel do Monitoring com um widget de gráfico de linhas para exibir a proporção de VMs usadas em relação a VMs reservadas nas suas reservas.

Console

Para criar um painel do Monitoring usando o MQL, siga estas etapas:

  1. No console do Google Cloud, acesse Painéis.

    Ir para "Painéis"

  2. Clique em Criar painel.

    A página Novo painel é aberta.

  3. Clique em Adicionar widget.

    O painel Adicionar widget será exibido.

  4. Clique em um dos widgets disponíveis. Por exemplo, clique no widget Linha.

    O painel Configurar widget será exibido.

  5. Clique em MQL.

  6. No editor de consultas, insira uma consulta MQL. Por exemplo, para visualizar a proporção de VMs usadas para VMs reservadas nas suas reservas, especifique o seguinte:

    fetch compute.googleapis.com/Reservation
    | { metric compute.googleapis.com/reservation/used
        | group_by [metadata.system.name], sliding(1m), max(value.used)
      ; metric compute.googleapis.com/reservation/reserved
        | group_by [metadata.system.name], sliding(1m), max(value.reserved) }
    | ratio
    
  7. Clique em Executar consulta.

  8. Clique em Aplicar.

Para mais opções de personalização de painéis do Monitoring usando o console do Google Cloud, consulte Criar e gerenciar painéis personalizados.

REST

Para criar um painel do Monitoring usando MQL, faça uma solicitação POST para o método dashboards.create.

POST https://monitoring.googleapis.com/v1/projects/PROJECT_ID/dashboards

{
  "displayName": "Consumed reservations in zone us-central1-a",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "title": "Reservation - Used for us-central1-a [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesQueryLanguage": "MQL_QUERY"
                }
              }
            ],
            "timeshiftDuration": "0s",
            "yAxis": {
              "scale": "LINEAR"
            }
          }
        },
        "width": 6,
        "xPos": 6
      }
    ]
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto atual.

  • MQL_QUERY: a consulta MQL a ser usada para o widget de gráfico de linhas. Por exemplo, para visualizar a proporção de VMs usadas para VMs reservadas nas suas reservas, especifique o seguinte:

    fetch compute.googleapis.com/Reservation
    | { metric compute.googleapis.com/reservation/used
     | group_by [metadata.system.name], sliding(1m), max(value.used)
    ; metric compute.googleapis.com/reservation/reserved
     | group_by [metadata.system.name], sliding(1m), max(value.reserved) }
    | ratio
    

Para mais opções de personalização de painéis do Monitoring usando a API Monitoring, consulte Criar e gerenciar painéis usando a API.

Criar políticas de alerta

É possível criar políticas de alertas do Monitoring para receber notificações sobre o consumo de reservas no projeto atual usando o console do Google Cloud e a API Monitoring.

Ao definir uma condição de alerta para uma política de alertas, você precisa usar um dos seguintes métodos:

  • Consulta básica: esse método é útil para criar condições de alerta simples.

    Por exemplo, é possível usar a consulta básica para criar uma condição de alerta que será acionada sempre que uma reserva for consumida pela primeira vez.

  • MQL: esse método é útil para recuperar, filtrar e manipular dados de séries temporais para criar condições de alerta mais complexas.

    Por exemplo, é possível usar a Linguagem de consulta do Monitoring (MQL, na sigla em inglês) para criar uma condição de alerta que é acionada quando a proporção de VMs reservadas em relação às VMs consumidas atinge um limite específico.

Consulta básica

O exemplo a seguir cria uma política de alertas que envia uma notificação de alerta quando uma reserva é consumida pela primeira vez. Especificamente, o alerta é acionado sempre que o número de VMs consumidas em uma reserva for maior que 0.

Console

Para criar uma política de alertas do Monitoring usando a consulta básica, siga estas etapas:

  1. No console do Google Cloud, acesse Alertas.

    Acessar o alerta

  2. Clique em Criar política.

    A página Criar política de alertas é aberta.

  3. Clique em Selecionar uma métrica.

    A janela Selecionar uma métrica será exibida.

  4. Na janela Selecionar uma métrica, faça o seguinte:

    1. No campo Filtrar por nome do recurso ou da métrica, digite Reservation.

    2. Se a métrica Reserva aparecer na lista Recursos ativos, selecione-a. Caso contrário, faça o seguinte:

      1. Desmarque Mostrar somente métricas e recursos ativos.

        A lista Recursos inativos é exibida.

      2. Na lista Recursos inativos, selecione Reserva.

    3. Na lista Categorias de métricas ativas, selecione Reserva novamente.

      A lista Métricas ativas aparece.

    4. Na lista Métricas ativas, selecione uma das métricas disponíveis.

      Por exemplo, selecione Usado.

    5. Clique em Aplicar.

  5. Clique em Adicionar filtro.

    A seção Adicionar filtro será exibida.

  6. Na seção Adicionar filtro, faça o seguinte:

    1. Na lista Rótulo, selecione um dos filtros para reservas disponíveis especificados neste documento.

      Por exemplo, para filtrar suas reservas por nome, selecione name.

    2. Na lista Comparação, selecione um dos operadores disponíveis.

      Por exemplo, selecione = (igual a) (padrão).

    3. Na lista Valor, selecione o nome da reserva que você quer monitorar.

    4. Clique em Concluído.

  7. Clique em Próxima.

    O painel Configurar acionador do alerta é exibido.

  8. Na seção Tipos de condição, selecione uma das seguintes opções:

    1. Para acionar a condição se uma série temporal estiver acima ou abaixo de um valor específico, selecione Limite.

    2. Para acionar a condição se uma série temporal não tiver dados para um horário específico, selecione Ausência de métrica.

    3. Para acionar a condição se uma série temporal estiver projetada para ultrapassar o limite em um futuro próximo, selecione Previsão.

    Por exemplo, selecione Limite (padrão).

  9. Na lista Gatilho de alerta, selecione a condição que aciona o alerta.

    Por exemplo, selecione Qualquer violação de série temporal (padrão).

  10. Na lista Posição do limite, selecione quando a condição será acionada.

    Por exemplo, selecione Acima do limite.

  11. No campo Valor do limite, digite um valor para a condição.

    Por exemplo, insira 0.

  12. No campo Nome da condição, insira um nome para sua condição.

    Por exemplo, insira Reservation RESERVATION_NAME consumed..

    Em que RESERVATION_NAME é o nome da reserva especificada nas etapas anteriores.

  13. Clique em Próxima.

    O painel Configurar notificações e finalizar alerta é exibido.

  14. Clique em Usar canais de notificação.

  15. No campo Canais de notificação, selecione os canais em que você quer receber notificações sobre o incidente.

    Se você não tiver canais de notificação disponíveis, clique em Gerenciar canais de notificação e siga as etapas para criar canais de notificação. Para saber mais, consulte Criar e gerenciar canais de notificação.

  16. No campo Duração do fechamento automático de incidentes, selecione um período após o qual um incidente é automaticamente fechado.

    Por exemplo, selecione 3 dias.

  17. No campo Nome da política de alertas, insira um nome para a política.

    Por exemplo, insira Alert: you started consuming reservation RESERVATION_NAME!.

    Em que RESERVATION_NAME é o nome da reserva especificada nas etapas anteriores.

  18. Clique em Próxima.

    A página de revisão da condição de alerta é aberta.

  19. Clique em Criar política.

    A criação da política de alertas pode levar alguns segundos para ser concluída. Essa ação retorna à página Criar política de alertas.

Para mais informações sobre as opções disponíveis ao criar políticas de alertas usando o console do Google Cloud e a consulta básica, consulte Criar políticas de alertas com base em métricas.

REST

Para criar uma política de alertas do Monitoring usando a consulta básica, faça uma solicitação POST para o método projects.alertPolicies.create.

POST https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alertPolicies

{
  "displayName": "Alert: you started consuming reservation RESERVATION_NAME!",
  "conditions": [
    {
      "displayName": "Reservation RESERVATION_NAME consumed.",
      "conditionThreshold": {
        "filter": "FILTER",
        "aggregations": [
          {
            "alignmentPeriod": "300s",
            "crossSeriesReducer": "REDUCE_NONE",
            "perSeriesAligner": "ALIGN_MEAN"
          }
        ],
        "comparison": "COMPARISON_GT",
        "duration": "0s",
        "trigger": {
          "count": 1
        },
        "thresholdValue": 0
      }
    }
  ],
  "alertStrategy": {
    "autoClose": "AUTO_CLOSE_TIME"
  },
  "combiner": "OR",
  "enabled": true,
  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/NOTIFICATION_CHANNEL"
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto atual.

  • RESERVATION_NAME: o nome de uma reserva existente localizada no projeto atual.

  • FILTER: o filtro do Monitoring a ser usado na política de alertas. Por exemplo, para monitorar a métrica used da reserva RESERVATION_NAME, especifique o seguinte:

    resource.type = 'compute.googleapis.com/Reservation' AND metric.type = 'compute.googleapis.com/reservation/used' AND metadata.system.name = 'RESERVATION_NAME'
    
  • AUTO_CLOSE_TIME: o tempo em segundos antes que um incidente seja fechado automaticamente. O valor precisa estar entre 0s e 604800s (sete dias). Por exemplo, insira 259200s (3 dias).

  • NOTIFICATION_CHANNEL: o nome de um canal de notificação existente. Para configurar um canal de notificação, consulte Criar e gerenciar canais de notificação.

Para mais informações sobre as opções disponíveis ao criar políticas de alertas usando a API Monitoring e a consulta básica, consulte Criar políticas de alertas usando a API.

MQL

O exemplo a seguir cria uma política de alertas que envia uma notificação de alerta sempre que a porcentagem de VMs usadas em vez de VMs reservadas nas suas reservas estiver acima de 90%.

Console

Para criar uma política de alertas do Monitoring usando o MQL, siga estas etapas:

  1. No console do Google Cloud, acesse Alertas.

    Acessar o alerta

  2. Clique em Criar política.

    A página Criar política de alertas é aberta.

  3. Na barra de ferramentas, clique em MQL.

    O painel Editar consulta é exibido.

  4. No painel Editar consulta, insira uma consulta MQL.

    Por exemplo, para criar uma consulta que agrupe suas reservas por nome e acione uma condição de alerta quando mais de 90% de suas reservas forem consumidas, insira a seguinte consulta:

    fetch compute.googleapis.com/Reservation
    | { metric compute.googleapis.com/reservation/used
        | group_by [metadata.system.name], sliding(1m), max(value.used)
      ; metric compute.googleapis.com/reservation/reserved
        | group_by [metadata.system.name], sliding(1m), max(value.reserved) }
    | ratio
    | every 1m
    | condition gt(val(), 0.9)
    
  5. Para executar a consulta que você acabou de inserir, clique em Executar consulta.

  6. Clique em Próxima.

    O painel Configurar acionador do alerta é exibido.

  7. No campo Nome da condição, insira um nome para ela.

    Por exemplo, insira Over 90% of your reservations are consumed..

  8. Clique em Próxima novamente.

    O painel Configurar notificações e finalizar alerta é exibido.

  9. Clique em Usar canais de notificação.

  10. No campo Canais de notificação, selecione os canais em que você quer receber notificações sobre o incidente.

    Se você não tiver canais de notificação disponíveis, clique em Gerenciar canais de notificação e siga as etapas para criar canais de notificação. Para saber mais, consulte Criar e gerenciar canais de notificação.

  11. No campo Duração do fechamento automático de incidentes, selecione um período após o qual um incidente é automaticamente fechado.

    Por exemplo, selecione 3 dias.

  12. No campo Nome da política de alertas, insira um nome para a política.

    Por exemplo, insira Alert: over 90% of your reservations are consumed..

  13. Clique em Próxima.

    A página de revisão da condição de alerta é aberta.

  14. Clique em Criar política.

    A criação da política de alertas pode levar alguns segundos para ser concluída. Essa ação retorna à página Criar política de alertas.

Para mais informações sobre como criar políticas de alertas usando o console do Google Cloud e o MQL, consulte Criar políticas de alertas (console) do MQL.

REST

Para criar uma política de alertas do Monitoring usando MQL, faça uma solicitação POST para o método projects.alertPolicies.create.

POST https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alertPolicies

{
  "displayName": "Alert: over 90% of your reservations are consumed.",
  "conditions": [
    {
      "displayName": "Over 90% of your reservations are consumed.",
      "conditionMonitoringQueryLanguage": {
        "duration": "0s",
        "trigger": {
          "count": 1
        },
        "query": "MQL_QUERY"
      }
    }
  ],
  "alertStrategy": {
    "autoClose": "AUTO_CLOSE_TIME"
  },
  "combiner": "OR",
  "enabled": true,
  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/NOTIFICATION_CHANNEL"
  ]
}

Substitua:

  • PROJECT_ID: o ID do projeto atual.

  • MQL_QUERY: uma consulta MQL a ser usada para a política de alertas. Por exemplo, para criar uma consulta que rastreie quando a porcentagem de VMs usadas em VMs reservadas está acima de 90% nas reservas do projeto atual, especifique o seguinte:

    fetch compute.googleapis.com/Reservation
    | { metric compute.googleapis.com/reservation/used
     | group_by [metadata.system.name], sliding(1m), max(value.used)
    ; metric compute.googleapis.com/reservation/reserved
     | group_by [metadata.system.name], sliding(1m), max(value.reserved) }
    | ratio
    | every 1m
    | condition gt(val(), 0.9)
    
  • AUTO_CLOSE_TIME: o tempo em segundos antes que um incidente seja fechado automaticamente. O valor precisa estar entre 0s e 604800s (sete dias). Por exemplo, insira 259200s (3 dias).

  • NOTIFICATION_CHANNEL: o nome de um canal de notificação existente. Para configurar um canal de notificação, consulte Criar e gerenciar canais de notificação.

Para mais informações sobre como criar políticas de alertas usando a API Monitoring e o MQL, consulte Criar políticas de alertas (API) MQL.

Resolver problemas

Saiba como resolver problemas com consumo de reserva.

A seguir