Resolver problemas de notificações ausentes

Esta página explica por que você pode não receber notificações como esperado, e oferece possíveis soluções para essas situações.

Notificações não recebidas

Você configura canais de notificação e espera ser sejam notificados quando incidentes ocorrerem. Você não recebe notificações.

Para coletar informações sobre a causa da falha, faça o seguinte:

  1. No console do Google Cloud, acesse a página Análise de registros:

    Acessar a Análise de registros

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

  2. Selecione o projeto do Google Cloud apropriado.
  3. Consulte os registros em busca de eventos do canal de notificação:

    1. Expanda o menu Nome do registro e selecione notification_channel_events.
    2. Expanda o menu Gravidade e selecione Erro.
    3. Opcional: para escolher um período personalizado, use o seletor.
    4. Clique em Executar consulta.

    As etapas anteriores criam a seguinte consulta:

    resource.type:"stackdriver_notification_channel"
    logName="projects/PROJECT_ID/logs/monitoring.googleapis.com%2Fnotification_channel_events"
    severity=ERROR
    

    A linha de resumo e o campo jsonPayload normalmente contêm uma falha informações imprecisas ou inadequadas. Por exemplo, quando ocorre um erro de gateway, a linha de resumo inclui "falha com 502 gateway inválido".

As notificações de webhook não são recebidas

Você configura um canal de notificação do webhook e espera receber uma notificação quando ocorrerem incidentes. Você não recebe notificações.

Endpoint particular

Não é possível usar webhooks para notificações, a menos que o endpoint seja público.

Para resolver essa situação, use notificações do Pub/Sub combinadas com uma assinatura de pull para esse tópico de notificação.

Ao configurar um canal de notificação do Pub/Sub, as notificações de incidentes são enviadas para uma fila do Pub/Sub que tem controles do Identity and Access Management. Qualquer serviço que possa consultar ou detectar um tópico do Pub/Sub pode consumir essas notificações. Por exemplo, aplicativos executados em máquinas virtuais do App Engine, Cloud Run ou Compute Engine podem consumir essas notificações.

Se você usar uma assinatura pull, uma solicitação será enviada ao Google, que aguarda a chegada de uma mensagem Essas assinaturas exigem acesso ao Google, mas não exigem regras para firewalls ou acesso de entrada.

Endpoint público

Para identificar por que a entrega falhou, examine as entradas de registro do Cloud Logging em busca de informações de falha.

Por exemplo, é possível pesquisar nas entradas de registro pelo recurso de canal de notificação. Para isso, use o Explorador de registros, com um filtro como este:

resource.type="stackdriver_notification_channel"

Notificações do Pub/Sub não são recebidas

Você configura um canal de notificação do Pub/Sub, mas não recebe todas as notificações.

Para resolver essa condição, tente o seguinte:

  • Verifique se a conta do serviço de notificações existe. As notificações não são enviadas quando a conta de serviço é excluída.

    Para verificar se a conta de serviço existe, faça o seguinte:

    1. No console do Google Cloud, abra a página IAM.

      Acesse o IAM

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

    2. Pesquise uma conta de serviço que tenha a seguinte convenção de nomenclatura:

      service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com

      Se a conta de serviço não estiver listada, selecione Inclua concessões de papéis fornecidos pelo Google.

    Se a conta de serviço de notificações não existir, será necessário iniciar o processo de criação do canal de notificação do Pub/Sub para que o Monitoring crie a conta de serviço:

    1. No console do Google Cloud, acesse a página  Alertas:

      Acessar Alertas

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

    2. Clique em Editar canais de notificação.
    3. Na seção Pub/Sub, clique em Adicionar novo.

      O Monitoring cria a conta de serviço de notificações quando não existe um. Caixa de diálogo Criar canal do Pub/Sub mostra o nome da conta de serviço de notificações.

    4. Se não quiser adicionar um canal de notificação, clique em Cancelar. Caso contrário, conclua a criação do canal de notificação e clique Adicionar canal.

    5. Conceda permissões à conta de serviço para publicar seu Pub/Sub tópicos:

      1. Em uma nova guia do navegador, abra o Crie um documento de canal de notificação.
      2. Selecione a guia Pub/Sub e siga as etapas. na seção Autorizar conta de serviço da página.
  • Verifique se a conta de serviço de notificações foi autorizada a enviar notificações para os tópicos de interesse do Pub/Sub.

    Para conferir as permissões de uma conta de serviço, use o Console do Google Cloud ou o comando da Google Cloud CLI:

    • A página IAM no console do Google Cloud lista os papéis de cada conta de serviço.
    • A página Tópicos do Pub/Sub no console do Google Cloud lista cada tópico. Quando você seleciona um tópico, a guia Permissões lista os papéis concedidos às contas de serviço.
    • Para listar todas as contas de serviço e os papéis delas, execute o seguinte: Comando da Google Cloud CLI:

      gcloud projects get-iam-policy PROJECT_ID
      

      Veja a seguir uma resposta parcial para este comando:

          serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
             role: roles/monitoring.notificationServiceAgent
           - members:
             [...]
             role: roles/owner
           - members:
             - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
             role: roles/pubsub.publisher
      

      A resposta ao comando inclui apenas papéis, e não permissões por tópico.

    • Para listar as vinculações do IAM para um tópico específico, execute o seguinte comando:

      gcloud pubsub topics get-iam-policy TOPIC
      

      Veja a seguir um exemplo de resposta para este comando:

          bindings:
          - members:
            - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
            role: roles/pubsub.publisher
          etag: BwXPRb5WDPI=
          version: 1
      

    Para informações sobre como autorizar a conta de serviço de notificações, consulte Autorizar conta de serviço.

As notificações para políticas de alertas de verificação de tempo de atividade não são recebidas

Você quer receber uma notificação se uma máquina virtual (VM) for reinicializada ou desligada. Para isso, crie uma política de alertas que monitore a métrica compute.googleapis.com/instance/uptime. Você cria e configura a condição para gerar um incidente quando não há dados de métrica. Para definir a condição, use a linguagem de consulta de monitoramento (MQL, na sigla em inglês)1. Você não recebe notificações quando a máquina virtual (VM) é reinicializada ou encerrada.

Esta política de alertas só monitora séries temporais para instâncias de VM do Compute Engine que estão no estado RUNNING. As séries temporais de VMs que estão em qualquer outro estado, como STOPPED ou DELETED, são filtradas antes que a condição seja avaliada. Devido a esse comportamento, não é possível usar uma política de alertas com uma condição de alerta de ausência de métricas para determinar se uma instância de VM está em execução. Para informações sobre os estados da instância de VM, consulte Ciclo de vida da instância da VM.

Para resolver esse problema, crie uma política de alertas para monitorar uma verificação de tempo de atividade. Para endpoints particulares, use o tempo de atividade particular de controle de acesso.

Uma alternativa aos alertas nas verificações de tempo de atividade é usar políticas de alertas que monitoram a ausência de dados. É altamente recomendável gerar alertas sobre o tempo de atividade Verificações em vez da ausência de dados: políticas de alertas de ausência de métrica podem gerar falsos positivos em caso de problemas temporários com a disponibilidade dos dados do Monitoring.

No entanto, se não for possível usar as verificações de tempo de atividade, crie um alerta política com o MQL que notifica que a VM foi encerrada. As condições definidas pelo MQL não pré-filtram dados de séries temporais com base no o estado atual da instância de VM. Como o MQL não filtra os dados por estados da VM, é possível usá-lo para detectar a ausência de dados das VMs que foram encerradas.

Considere a seguinte condição da MQL que monitora a métrica compute.googleapis.com/instance/cpu/utilization:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
|absent_for 3m

Se uma VM monitorada por essa condição for encerrada, um incidente será gerado três minutos depois e as notificações serão enviadas. O valor de absent_for precisa ter pelo menos três minutos.

Para mais informações sobre o MQL, consulte Políticas de alertas com MQL.

1: o MQL é uma arquitetura linguagem baseada em texto que pode ser usada com chamadas da API Cloud Monitoring e no console do Google Cloud. Para configurar uma condição com o MQL ao usar console do Google Cloud, use o editor de código.

As notificações para políticas de alertas de contagem de solicitações não são recebidas

Você quer monitorar o número de solicitações concluídas. Você criou um política de alertas que monitora a métrica serviceruntime.googleapis.com/api/request_count, mas você não são notificados quando o número de solicitações excede o limite que você configurada.

O período de alinhamento máximo para a métrica de contagem de solicitações é de 7 horas e 30 minutos.

Para resolver esse problema, verifique o valor do período de alinhamento no seu alerta política. Se o valor for maior que o máximo para esta métrica, reduza o período de alinhamento para, no máximo, 7 horas e 30 minutos.