Résoudre les problèmes de notifications manquantes

Vous pouvez diagnostiquer et résoudre les problèmes de notifications d'alerte Cloud Monitoring manquantes en inspectant les journaux notification_channel_events dans l'explorateur de journaux. Vous pouvez ensuite résoudre les problèmes de diffusion et de configuration sur les canaux webhook, Pub/Sub et SMS, ou ajuster les règles d'alerte pour les arrêts de machines virtuelles (VM) et les métriques du nombre de requêtes.

Notifications non reçues

Si vous ne recevez aucune notification sur les canaux de notification configurés, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la pageExplorateur de journaux :

    Accéder à l'explorateur de journaux

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

  2. Sélectionnez le projet Google Cloud approprié.
  3. Interrogez les journaux pour les événements du canal de notification :

    1. Développez le menu Nom du journal, puis sélectionnez notification_channel_events.
    2. Développez le menu Gravité et sélectionnez Erreur.
    3. Facultatif : Pour sélectionner une période personnalisée, utilisez le sélecteur de période.
    4. Cliquez sur Exécuter la requête.

    Les étapes précédentes créent la requête suivante :

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

    La ligne récapitulative et le champ jsonPayload contiennent généralement des informations sur les échecs. Par exemple, lorsqu'une erreur de passerelle se produit, la ligne récapitulative inclut "Échec avec l'erreur 502 : passerelle incorrecte".

Notifications de webhook non reçues

Cette section s'applique lorsque vous ne recevez pas de notifications via un canal de notification de webhook configuré.

Point de terminaison privé

Si vous disposez d'un point de terminaison privé, utilisez les notifications Pub/Sub combinées à un abonnement pull à ce sujet de notification. Vous ne pouvez pas utiliser de webhooks pour les notifications vers des points de terminaison privés.

Lorsque vous configurez un canal de notification Pub/Sub, les notifications d'alerte sont envoyées à une file d'attente Pub/Sub qui dispose de contrôles Identity and Access Management. Tout service autorisé à interroger ou à écouter un sujet Pub/Sub peut utiliser ces notifications. Par exemple, les applications exécutées sur des machines virtuelles App Engine, Cloud Run ou Compute Engine peuvent utiliser ces notifications.

Si vous utilisez un abonnement pull, une requête est envoyée à Google, et attend la réception d'un message. Ces abonnements nécessitent un accès à Google, mais pas de règles pour les pare-feu ni d'accès entrant.

Point de terminaison public

Pour identifier la raison de l'échec de distribution, examinez les entrées de journal Cloud Logging pour obtenir des informations sur les échecs.

Par exemple, vous pouvez rechercher des entrées de journal correspondant à la ressource du canal de notification à l'aide de l'explorateur de journaux et d'un filtre semblable à celui-ci :

resource.type="stackdriver_notification_channel"

Notifications Pub/Sub non reçues

Si vous ne recevez pas de notifications via un canal de notification Pub/Sub configuré, les journaux peuvent vous aider à diagnostiquer et à résoudre l'échec. Cette section décrit les entrées de journal que le système écrit lorsqu'une notification n'a pas pu être envoyée. Vous pouvez utiliser les informations de cette section pour résoudre le problème.

Les journaux incluent une erreur Failed to authenticate as service account

Lorsque vous interrogez le journal notification_channel_events pour rechercher des erreurs, vous pouvez trouver une entrée de journal dont le champ summary inclut le message suivant :

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

Cette erreur se produit lorsque le compte de service de notifications n'existe pas. Par conséquent, aucune notification n'est envoyée.

Pour vérifier que le compte de service existe, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page IAM :

    Accéder à IAM

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est IAM et administration.

  2. Recherchez un compte de service qui suit la convention d'attribution de noms suivante :

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

    Si ce compte de service n'est pas listé, sélectionnez Inclure les attributions de rôles fournies par Google.

Pour déclencher la création du compte de service de notifications par Monitoring, commencez à créer un canal de notification Pub/Sub :

  1. Dans la console Google Cloud , accédez à la page Alertes :

    Accéder à la page Alertes

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  2. Cliquez sur Modifier les canaux de notification.
  3. Dans la section Pub/Sub, cliquez sur Nouveau.

    Monitoring crée le compte de service des notifications s'il n'existe pas. La boîte de dialogue Créer un canal Pub/Sub affiche le nom du compte de service de notifications.

  4. Si vous ne souhaitez pas ajouter de canal de notification, cliquez sur Annuler. Sinon, terminez la création du canal de notification, puis cliquez sur Ajouter un canal.

  5. Accordez au compte de service les autorisations de publication dans vos sujets Pub/Sub :

    1. Dans un nouvel onglet de navigateur, ouvrez le document Créer un canal de notification.
    2. Sélectionnez l'onglet Pub/Sub, puis suivez les étapes de la section Autoriser le compte de service de la page.

Les journaux incluent une erreur PERMISSION_DENIED

Lorsque vous interrogez le journal notification_channel_events pour rechercher des erreurs, vous pouvez trouver une entrée de journal dont le champ summary inclut le message suivant :

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

Cette erreur se produit lorsque le compte de service de notification n'a pas été autorisé à envoyer des notifications pour les sujets Pub/Sub qui vous intéressent ou lorsque l'API Pub/Sub n'est pas activée dans votre projet.

Pour afficher les autorisations d'un compte de service, vous pouvez utiliser la consoleGoogle Cloud ou la commande Google Cloud CLI :

  • La page IAM de la console Google Cloud liste les rôles de chaque compte de service.
  • La page Sujets de Pub/Sub dans la console Google Cloud liste chaque sujet. Lorsque vous sélectionnez un thème, l'onglet Autorisations liste les rôles accordés aux comptes de service.
  • Pour répertorier tous les comptes de service et leurs rôles, exécutez la commande Google Cloud CLI suivante :

    gcloud projects get-iam-policy PROJECT_ID
    

    Voici une réponse partielle de cette commande :

    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 réponse à la commande n'inclut que les rôles. Elle n'inclut pas l'autorisation par thème.

  • Pour répertorier les liaisons IAM d'un sujet spécifique, exécutez la commande suivante :

    gcloud pubsub topics get-iam-policy TOPIC_ID
    

    Voici un exemple de réponse pour cette commande :

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

Pour en savoir plus sur l'autorisation du compte de service des notifications, consultez la section Autoriser le compte de service.

Les journaux incluent une erreur FAILED_PRECONDITION

Lorsque vous interrogez le journal notification_channel_events pour rechercher des erreurs, vous pouvez trouver une entrée de journal dont le champ summary inclut le message suivant :

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

Cette erreur se produit lorsque Pub/Sub rejette une demande de publication de Monitoring, car le sujet cible ne répond pas à une condition requise. Voici les causes les plus courantes de cette erreur :

  • Règle de stockage des messages et restrictions de résidence des données : la règle de stockage des messages de votre sujet limite les Google Cloud régions dans lesquelles les messages peuvent être traités ou stockés :

    • Application du transit dans une région non autorisée : la règle de stockage des messages du sujet est définie sur true pour enforceInTransit, et la requête de publication arrive dans une région qui ne figure pas dans allowedPersistenceRegions. Lorsque enforceInTransit est défini sur true, Pub/Sub rejette les requêtes provenant de régions non autorisées au lieu de les rediriger. Si le sujet utilise des transformations de message unique pour l'inférence d'IA, la région de publication doit également être autorisée par la transformation.
    • Régions de persistance autorisées restreintes : le sujet a la valeur false pour enforceInTransit et la requête de publication arrive en dehors de allowedPersistenceRegions, mais Pub/Sub ne peut pas rediriger la requête, car aucun cluster viable n'est disponible et allowedPersistenceRegions ne contient que des régions privées ou restreintes.
    • Réplication synchrone interrégionale sans région secondaire valide : le sujet utilise la réplication synchrone interrégionale et dispose d'une règle de stockage des messages, mais allowedPersistenceRegions n'inclut pas de région de réplication secondaire valide pour le lieu de publication.
    • Point de terminaison régional sans application du transit : la requête de publication est acheminée vers un point de terminaison régional, mais la règle de stockage des messages du thème est définie sur false pour enforceInTransit.

    Pour résoudre les erreurs liées aux règles de stockage des messages, mettez à jour la règle de stockage des messages ou la configuration de la région de transformation de message unique de votre sujet afin que allowedPersistenceRegions inclue la région de publication et toute région de réplication secondaire requise, ou définissez enforceInTransit sur false si l'application régionale en transit n'est pas requise.

  • Erreurs liées aux clés de chiffrement gérées par le client (CMEK) : votre sujet est configuré pour utiliser une clé de chiffrement gérée par le client depuis Cloud Key Management Service (Cloud KMS), et Pub/Sub ne peut pas chiffrer le message publié :

    • Autorisation refusée pour la clé Cloud KMS : Cloud KMS renvoie une erreur PERMISSION_DENIED lorsque Pub/Sub tente de chiffrer le message, que Pub/Sub signale comme FAILED_PRECONDITION. Par exemple, cette erreur se produit lorsque l'agent de service Pub/Sub ne dispose pas du rôle Chiffreur/Déchiffreur de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) sur la clé.
    • État de clé Cloud KMS inutilisable : Cloud KMS renvoie une erreur FAILED_PRECONDITION, car la version de clé est désactivée ou détruite, ou parce qu'une clé de gestionnaire de clés externe est inaccessible.

    Pour résoudre les erreurs CMEK, vérifiez que la version de la clé Cloud KMS est activée et accessible, et assurez-vous que l'agent de service Pub/Sub dispose du rôle roles/cloudkms.cryptoKeyEncrypterDecrypter sur la clé.

Vous ne recevez pas de notification lorsqu'une VM s'arrête.

Pour recevoir une notification lorsqu'une machine virtuelle (VM) s'arrête, créez un test de disponibilité pour interroger régulièrement la VM, puis créez une règle d'alerte pour surveiller ce test de disponibilité. Si vous utilisez un cloud privé virtuel (VPC), vous devrez peut-être créer un test de disponibilité privé.

Une règle d'alerte qui surveille la métrique compute.googleapis.com/instance/uptime ne vous avertit pas lorsque la VM s'arrête. Pour cette métrique, les règles d'alerte ne surveillent que les séries temporelles des instances de VM dont l'état est RUNNING. Si une VM se trouve dans un autre état, tel que STOPPED ou DELETED, elle n'est pas surveillée. Pour en savoir plus sur les états des instances de VM, consultez la section Cycle de vie des instances de VM.

Notifications pour les règles d'alerte sur le nombre de demandes non reçues

Si vous ne recevez pas de notifications pour une règle d'alerte qui surveille la métrique serviceruntime.googleapis.com/api/request_count, assurez-vous que la période d'alignement de la règle ne dépasse pas 7 heures et 30 minutes.

Je ne reçois pas de notifications ni de codes de validation par SMS

Si vous ne recevez pas de notifications ni de codes de validation par SMS, assurez-vous de ne pas avoir atteint la limite de messages SMS. Il peut exister des journaux qui confirment cette erreur. Vérifiez vos journaux pour Denied quota token.

Notez que les SMS ne sont pas un type de canal de notification fiable et qu'ils peuvent ne pas être disponibles dans certaines régions. Évitez de vous appuyer uniquement sur les canaux SMS pour les notifications. Configurez plutôt des canaux de notification supplémentaires, comme l'e-mail.