Resolver problemas de ausência de notificações

É possível diagnosticar e resolver notificações de alerta do Cloud Monitoring ausentes inspecionando os registros notification_channel_events na Análise de registros. Em seguida, é possível corrigir problemas de entrega e configuração em webhooks, Pub/Sub e canais de SMS ou ajustar políticas de alerta para desligamentos de máquina virtual (VMs) e métricas de contagem de solicitações.

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

Se você não receber notificações em nenhum dos canais configurados, 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 Google Cloud adequado.
  3. Consulte os registros de eventos do canal de notificação:

    1. Expanda o menu Nome do registro e selecione notification_channel_events.
    2. Abra o menu Gravidade e selecione Erro.
    3. Opcional: para selecionar um período personalizado, use o seletor de período.
    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 geralmente contêm informações de falha. Por exemplo, quando ocorre um erro de gateway, a linha de resumo inclui "falhou com 502 Bad Gateway".

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

Esta seção se aplica quando você não recebe notificações por um canal de notificação de webhook configurado.

Endpoint particular

Se você tiver um endpoint particular, use as notificações do Pub/Sub combinadas com uma assinatura por pull para esse tópico de notificação. Não é possível usar webhooks para notificações em endpoints particulares.

Quando você configura um canal de notificações do Pub/Sub, as notificações de alerta são enviadas para uma fila do Pub/Sub com 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 por pull, uma solicitação será enviada ao Google e aguardará a chegada de uma mensagem. Essas assinaturas exigem acesso ao Google, mas não 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"

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

Se você não receber notificações por um canal de notificação do Pub/Sub configurado, os registros poderão ajudar a diagnosticar e resolver a falha. Esta seção descreve as entradas de registro que o sistema grava quando uma notificação não é enviada. Use as informações nesta seção para resolver o motivo da falha.

Os registros incluem um erro Failed to authenticate as service account

Ao consultar o registro notification_channel_events em busca de erros, você pode encontrar uma entrada de registro cujo campo summary inclui a seguinte mensagem:

Failed to authenticate as service account service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com

Esse erro ocorre quando a conta de serviço de notificações não existe. Como resultado, as notificações não são enviadas.

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

  1. No console Google Cloud , acesse 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. Procure uma conta de serviço que tenha a seguinte convenção de nomenclatura:

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

    Se essa conta de serviço não estiver listada, selecione Incluir concessões de papel fornecidas pelo Google.

Para acionar o Monitoring e criar a conta de serviço de notificações, comece o processo de criação de um canal de notificação do Pub/Sub:

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

  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 ela não existe. A caixa de diálogo Criar canal do Pub/Sub mostra o nome da conta de serviço de notificações.

  4. Se você não quiser adicionar um canal de notificação, clique em Cancelar. Caso contrário, termine de criar o canal de notificação e clique em Adicionar canal.

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

    1. Em uma nova guia do navegador, abra o documento Criar um 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.

Os registros incluem um erro PERMISSION_DENIED

Ao consultar o registro notification_channel_events em busca de erros, você pode encontrar uma entrada de registro cujo campo summary inclui a seguinte mensagem:

An error occurred while publishing notification to Cloud Pub/Sub topic TOPIC_ID. Possible causes: 1) you don't have the required role (https://cloud.google.com/monitoring/support/notification-options#pubsub); or 2) Cloud Pub/Sub API is not enabled in your project: PERMISSION_DENIED

Esse erro ocorre quando a conta de serviço de notificações não foi autorizada a enviar notificações para os tópicos do Pub/Sub de interesse ou quando a API Pub/Sub não está ativada no seu projeto.

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

  • A página IAM no console Google Cloud lista os papéis de cada conta de serviço.
  • A página Tópicos do Pub/Sub no console 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 respectivos papéis, 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 do comando inclui apenas papéis, não autorização por tema.

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

    gcloud pubsub topics get-iam-policy TOPIC_ID
    

    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.

Os registros incluem um erro FAILED_PRECONDITION

Ao consultar o registro notification_channel_events em busca de erros, você pode encontrar uma entrada de registro cujo campo summary inclui a seguinte mensagem:

An error occurred while publishing notification to Cloud Pub/Sub topic TOPIC_ID: FAILED_PRECONDITION

Esse erro ocorre quando o Pub/Sub rejeita uma solicitação de publicação do Monitoring porque o tópico de destino não atende a uma pré-condição obrigatória. Causas comuns para esse erro:

  • Política de armazenamento de mensagens e restrições de residência de dados: a política de armazenamento de mensagens do seu tópico restringe as Google Cloud regiões em que as mensagens podem ser processadas ou armazenadas:

    • Aplicação em trânsito em uma região não permitida: a política de armazenamento de mensagens do tópico tem enforceInTransit definido como true, e a solicitação de publicação chega em uma região que não está em allowedPersistenceRegions. Quando enforceInTransit é true, o Pub/Sub rejeita solicitações de regiões não permitidas em vez de redirecioná-las. Se o tópico usar transformações de mensagem única de inferência de IA, a região de publicação também precisará ser permitida pela transformação.
    • Regiões de persistência permitidas restritas: o tópico tem enforceInTransit definido como false, e a solicitação de publicação chega fora de allowedPersistenceRegions, mas o Pub/Sub não pode redirecionar a solicitação porque nenhum cluster viável está disponível e allowedPersistenceRegions contém apenas regiões privadas ou restritas.
    • Replicação síncrona entre regiões sem uma região secundária válida: o tópico usa replicação síncrona entre regiões e tem uma política de armazenamento de mensagens, mas allowedPersistenceRegions não inclui uma região secundária de replicação válida para o local de publicação.
    • Endpoint regional sem aplicação em trânsito: a solicitação de publicação é encaminhada para um endpoint regional, mas a política de armazenamento de mensagens do tópico tem enforceInTransit definido como false.

    Para resolver erros na política de armazenamento de mensagens, atualize a política de armazenamento de mensagens do tópico ou a configuração de região de transformação de mensagem única para que allowedPersistenceRegions inclua a região de publicação e qualquer região de replicação secundária necessária. Também é possível definir enforceInTransit como false se a aplicação regional em trânsito não for necessária.

  • Erros de chave de criptografia gerenciada pelo cliente (CMEK): seu tópico está configurado para usar uma chave de criptografia gerenciada pelo cliente do Cloud Key Management Service (Cloud KMS), e o Pub/Sub não consegue criptografar a mensagem publicada:

    • Permissão negada na chave do Cloud KMS: o Cloud KMS retorna um erro PERMISSION_DENIED quando o Pub/Sub tenta criptografar a mensagem, que o Pub/Sub informa como FAILED_PRECONDITION. Por exemplo, esse erro ocorre quando o agente de serviço do Pub/Sub não tem o papel de criptografia/descriptografia (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave.
    • Estado de chave do Cloud KMS inutilizável: o Cloud KMS retorna um erro FAILED_PRECONDITION porque a versão da chave está desativada ou destruída ou porque uma chave do gerenciador de chaves externas está inacessível.

    Para resolver erros da CMEK, verifique se a versão da chave do Cloud KMS está ativada e acessível e se o agente de serviço do Pub/Sub tem a função roles/cloudkms.cryptoKeyEncrypterDecrypter na chave.

Você não recebe uma notificação quando uma VM é desligada

Para receber uma notificação quando uma máquina virtual (VM) for desligada, crie uma verificação de tempo de atividade para consultar periodicamente a VM e, em seguida, crie uma política de alertas para monitorar essa verificação. Se você estiver usando uma nuvem privada virtual (VPC), talvez seja necessário criar uma verificação de tempo de atividade privada.

Uma política de alertas que monitora a métrica compute.googleapis.com/instance/uptime não vai notificar você quando a VM for desligada. Para essa métrica, as políticas de alertas monitoram apenas série temporal de instâncias de VM no estado RUNNING. Se uma VM estiver em qualquer outro estado, como STOPPED ou DELETED, ela não será monitorada. Para informações sobre os estados da instância de VM, consulte Ciclo de vida da instância de VM.

Não é possível receber notificações para políticas de alertas de contagem de solicitações

Se você não receber notificações de uma política de alertas que monitora a métrica serviceruntime.googleapis.com/api/request_count, verifique se o período de alinhamento da política não é superior a 7 horas e 30 minutos.

Não recebo mensagens de notificação por SMS ou códigos de verificação

Se você não receber notificações por SMS ou códigos de verificação, verifique se não atingiu o limite de mensagens SMS. Pode haver registros que confirmam esse erro. Verifique os registros de Denied quota token.

O SMS não é um tipo de canal de notificação confiável e pode não estar disponível em algumas regiões. Evite depender apenas de canais de SMS para notificações. Em vez disso, configure outros canais de notificação, como e-mail.