Soluciona problemas relacionados con la falta de notificaciones

Puedes diagnosticar y resolver las notificaciones de alertas faltantes de Cloud Monitoring inspeccionando los registros de notification_channel_events en el Explorador de registros. Luego, puedes corregir los problemas de entrega y configuración en los canales de webhook, Pub/Sub y SMS, o bien ajustar las políticas de alertas para los cierres de máquina virtual (VM) y las métricas de recuento de solicitudes.

No se reciben las notificaciones

Si no recibes notificaciones a través de ningún canal de notificación configurado, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página Explorador de registros del :

    Ir al Explorador de registros

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.

  2. Selecciona el proyecto Google Cloud adecuado.
  3. Consulta los registros de eventos del canal de notificaciones:

    1. Expande el menú Nombre del registro y selecciona notification_channel_events.
    2. Expande el menú Gravedad y selecciona Error.
    3. Opcional: Para seleccionar un período personalizado, usa el selector de período.
    4. Haz clic en Ejecutar consulta.

    En los pasos anteriores, se crea la siguiente consulta:

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

    Por lo general, la línea de resumen y el campo jsonPayload contienen información sobre la falla. Por ejemplo, cuando se produce un error de puerta de enlace, la línea de resumen incluye "failed with 502 Bad Gateway".

No se reciben notificaciones de webhook

Esta sección se aplica cuando no recibes notificaciones a través de un canal de notificaciones de webhook configurado.

Extremo privado

Si tienes un endpoint privado, usa las notificaciones de Pub/Sub combinadas con una suscripción de extracción a ese tema de notificación. No puedes usar webhooks para enviar notificaciones a extremos privados.

Cuando configuras un canal de notificaciones de Pub/Sub, las notificaciones de alerta se envían a una cola de Pub/Sub que tiene controles de Identity and Access Management. Cualquier servicio que pueda consultar o escuchar un tema de Pub/Sub puede consumir estas notificaciones. Por ejemplo, las aplicaciones que se ejecutan en App Engine, Cloud Run o máquinas virtuales de Compute Engine pueden consumir estas notificaciones.

Si usas una suscripción de extracción, se envía una solicitud a Google que espera a que llegue un mensaje. Estas suscripciones requieren acceso a Google, pero no reglas para firewalls ni acceso entrante.

Extremo público

Para identificar por qué falló la entrega, examina las entradas de registro de Cloud Logging para obtener información sobre la falla.

Por ejemplo, puedes buscar entradas de registro para el recurso del canal de notificación con el Explorador de registros y un filtro como el siguiente:

resource.type="stackdriver_notification_channel"

No se reciben notificaciones de Pub/Sub

Si no recibes notificaciones a través de un canal de notificaciones de Pub/Sub configurado, los registros pueden ayudarte a diagnosticar y resolver la falla. En esta sección, se describen las entradas de registro que escribe el sistema cuando no se puede enviar una notificación. Puedes usar la información de esta sección para resolver el motivo de la falla.

Los registros incluyen un error de Failed to authenticate as service account

Cuando consultes el registro notification_channel_events en busca de errores, es posible que encuentres una entrada de registro cuyo campo summary incluya el siguiente mensaje:

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

Este error se produce cuando no existe la cuenta de servicio de notificaciones. Como resultado, no se envían notificaciones.

Para verificar que la cuenta de servicio exista, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página IAM:

    Ir a IAM

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es IAM y administrador.

  2. Busca una cuenta de servicio que tenga la siguiente convención de nombres:

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

    Si esta cuenta de servicio no aparece en la lista, selecciona Incluir asignaciones de roles proporcionadas por Google.

Para activar Monitoring y crear la cuenta de servicio de notificaciones, comienza el proceso de creación de un canal de notificaciones de Pub/Sub:

  1. En la consola de Google Cloud , ve a la página Alertas :

    Ir a las Alertas

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. Haz clic en Editar un canal de notificaciones.
  3. En la sección Pub/Sub, haz clic en Agregar nuevo.

    Monitoring crea la cuenta de servicio de notificaciones cuando no existe una. En el diálogo Create Pub/Sub Channel, se muestra el nombre de la cuenta de servicio de notificaciones.

  4. Si no quieres agregar un canal de notificaciones, haz clic en Cancelar. De lo contrario, termina de crear el canal de notificaciones y haz clic en Agregar canal.

  5. Otorga permisos a la cuenta de servicio para publicar en tus temas de Pub/Sub:

    1. En una pestaña nueva del navegador, abre el documento Crea un canal de notificaciones.
    2. Selecciona la pestaña Pub/Sub y, luego, sigue los pasos que se indican en la sección Autoriza la cuenta de servicio de la página.

Los registros incluyen un error de PERMISSION_DENIED

Cuando consultes el registro notification_channel_events en busca de errores, es posible que encuentres una entrada de registro cuyo campo summary incluya el siguiente mensaje:

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

Este error se produce cuando la cuenta de servicio de notificaciones no se autorizó para enviar notificaciones sobre los temas de Pub/Sub de interés o cuando la API de Pub/Sub no está habilitada en tu proyecto.

Para ver los permisos de una cuenta de servicio, puedes usar la consola deGoogle Cloud o el comando de Google Cloud CLI:

  • En la página IAM de la consola de Google Cloud , se enumeran los roles de cada cuenta de servicio.
  • En la página Temas de Pub/Sub en la consola de Google Cloud , se muestra una lista de cada tema. Cuando seleccionas un tema, en la pestaña Permisos, se enumeran los roles otorgados a las cuentas de servicio.
  • Para enumerar todas las cuentas de servicio y sus roles, ejecuta el siguiente comando de Google Cloud CLI:

    gcloud projects get-iam-policy PROJECT_ID
    

    A continuación, se muestra una respuesta 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
    

    La respuesta del comando solo incluye roles; no incluye la autorización por tema.

  • Para enumerar las vinculaciones de IAM de un tema específico, ejecuta el siguiente comando:

    gcloud pubsub topics get-iam-policy TOPIC_ID
    

    A continuación, se muestra una respuesta de ejemplo 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 obtener información sobre cómo autorizar la cuenta de servicio de notificaciones, consulta Autoriza la cuenta de servicio.

Los registros incluyen un error de FAILED_PRECONDITION

Cuando consultes el registro notification_channel_events en busca de errores, es posible que encuentres una entrada de registro cuyo campo summary incluya el siguiente mensaje:

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

Este error se produce cuando Pub/Sub rechaza una solicitud de publicación de Monitoring porque el tema de destino no cumple con una condición previa obligatoria. Estas son algunas de las causas más comunes de este error:

  • Política de almacenamiento de mensajes y restricciones de residencia de datos: La política de almacenamiento de mensajes de tu tema restringe las Google Cloud regiones en las que se pueden procesar o almacenar mensajes:

    • Aplicación de la política en tránsito en una región no permitida: La política de almacenamiento de mensajes del tema tiene enforceInTransit establecida en true, y la solicitud de publicación llega a una región que no está en allowedPersistenceRegions. Cuando enforceInTransit es true, Pub/Sub rechaza las solicitudes de regiones no permitidas en lugar de redireccionarlas. Si el tema usa transformaciones de inferencia de IA de un solo mensaje, la región de publicación también debe estar permitida por la transformación.
    • Regiones de persistencia permitidas restringidas: El tema tiene enforceInTransit establecido en false y la solicitud de publicación llega fuera de allowedPersistenceRegions, pero Pub/Sub no puede redireccionar la solicitud porque no hay ningún clúster viable disponible y allowedPersistenceRegions solo contiene regiones privadas o restringidas.
    • Replicación síncrona entre regiones sin una región secundaria válida: El tema usa la replicación síncrona entre regiones y tiene una política de almacenamiento de mensajes, pero allowedPersistenceRegions no incluye una región de replicación secundaria válida para la ubicación de publicación.
    • Endpoint regional sin aplicación de la política en tránsito: La solicitud de publicación se enruta a un endpoint regional, pero la política de almacenamiento de mensajes del tema tiene enforceInTransit establecida en false.

    Para resolver los errores de la política de almacenamiento de mensajes, actualiza la política de almacenamiento de mensajes del tema o la configuración de la región de transformación de mensaje único de modo que allowedPersistenceRegions incluya la región de publicación y cualquier región de replicación secundaria requerida, o bien establece enforceInTransit en false si no se requiere la aplicación regional en tránsito.

  • Errores de clave de encriptación administrada por el cliente (CMEK): Tu tema está configurado para usar una clave de encriptación administrada por el cliente de Cloud Key Management Service (Cloud KMS), y Pub/Sub no puede encriptar el mensaje publicado:

    • Se denegó el permiso para la clave de Cloud KMS: Cloud KMS devuelve un error PERMISSION_DENIED cuando Pub/Sub intenta encriptar el mensaje, lo que Pub/Sub informa como FAILED_PRECONDITION. Por ejemplo, este error se produce cuando el agente de servicio de Pub/Sub no tiene el rol de encriptador/desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) en la clave.
    • Estado de clave de Cloud KMS inutilizable: Cloud KMS devuelve un error FAILED_PRECONDITION porque la versión de la clave está inhabilitada o destruida, o porque no se puede acceder a una clave del administrador de claves externo.

    Para resolver los errores de CMEK, verifica que la versión de la clave de Cloud KMS esté habilitada y sea accesible, y asegúrate de que el agente de servicio de Pub/Sub tenga el rol roles/cloudkms.cryptoKeyEncrypterDecrypter en la clave.

No recibes notificaciones cuando se apaga una VM

Para recibir notificaciones cuando se apague una máquina virtual (VM), crea una verificación de tiempo de actividad para consultar periódicamente la VM y, luego, crea una política de alertas para supervisar esa verificación de tiempo de actividad. Si usas una nube privada virtual (VPC), es posible que debas crear una verificación de tiempo de actividad privada.

Una política de alertas que supervisa la métrica compute.googleapis.com/instance/uptime no te notificará cuando se apague la VM. En el caso de esta métrica, las políticas de alertas solo supervisan las series temporales de las instancias de VM que se encuentran en el estado RUNNING. Si una VM se encuentra en cualquier otro estado, como STOPPED o DELETED, no se supervisa. Para obtener información sobre los estados de las instancias de VM, consulta Ciclo de vida de la instancia de VM.

No se reciben notificaciones para las políticas de alertas de recuento de solicitudes

Si no recibes notificaciones de una política de alertas que supervisa la métrica serviceruntime.googleapis.com/api/request_count, asegúrate de que el período de alineación de la política no sea superior a 7 horas y 30 minutos.

No se reciben mensajes de notificación SMS ni códigos de verificación

Si no recibes notificaciones ni códigos de verificación por SMS, asegúrate de no haber alcanzado el límite de mensajes SMS. Es posible que haya registros que confirmen este error. Revisa tus registros de Denied quota token.

Ten en cuenta que los SMS no son un tipo de canal de notificación confiable y es posible que no estén disponibles en ciertas regiones. Evita depender únicamente de los canales de SMS para las notificaciones. En su lugar, configura canales de notificaciones adicionales, como el correo electrónico.