Résoudre les problèmes de routage et de récepteurs

Lors du routage des journaux à l'aide de récepteurs, l'une des situations suivantes peut se produire :

  • Des journaux sont manquants sur la destination du récepteur.
  • Un journal contient des informations d'erreur de configuration de récepteur.
  • Vous recevez une notification par e-mail indiquant que votre récepteur contient des erreurs.

Ce document décrit les problèmes courants liés au récepteur et explique comment utiliser la console pour afficher et résoudre les erreurs de configuration ou les résultats inattendus.

Pour obtenir des informations générales sur l'utilisation des journaux dans les destinations de récepteurs, consultez la section Afficher les journaux du récepteur de destinations.

Journaux manquants sur la destination

Le problème de récepteur le plus courant est le fait d'avoir des journaux manquants sur une destination de récepteur.

Dans certains cas, il peut arriver qu'aucune erreur ne soit générée mais que les journaux soient indisponibles lorsque vous essayez d'y accéder dans votre destination. Si vous pensez que votre récepteur n'achemine pas correctement les journaux, vérifiez ses métriques basées sur les journaux système :

  • exports/byte_count : nombre d'octets dans les entrées de journal qui ont été acheminées.
  • exports/log_entry_count : nombre d'entrées de journal acheminées.
  • exports/error_count : nombre d'entrées de journal dont le routage a échoué.

Les métriques incluent des libellés qui enregistrent les décomptes par nom de récepteur et par nom de destination afin de vous permettre de vérifier si le récepteur parvient à acheminer les données de journaux. Pour en savoir plus sur l'affichage des métriques, consultez la page Afficher les métriques basées sur les journaux.

Si les métriques de votre récepteur indiquent que celui-ci ne fonctionne pas comme prévu, voici quelques-unes des causes possibles et des solutions permettant d'y remédier :

Latence

  • Aucune entrée de journal correspondante n'a été reçue depuis que vous avez créé ou mis à jour votre récepteur. Seules les nouvelles entrées de journal sont acheminées.

    Patientez une heure, puis vérifiez à nouveau votre destination.

  • Les entrées de journal arrivent en retard.

    Il peut y avoir un délai avant que vous puissiez afficher vos journaux dans la destination. Les journaux en retard sont particulièrement courants pour les récepteurs qui ont configuré des buckets Cloud Storage comme destinations. Patientez quelques heures, puis vérifiez à nouveau votre destination.

L'affichage du champ d'application/filtre est incorrect

Erreur dans le filtre de récepteur

  • Le filtre du récepteur est incorrect et ne capture pas les journaux attendus dans votre destination.

    • Modifiez le filtre du récepteur à l'aide du routeur de journaux dans la console. Pour vérifier que vous avez saisi le filtre approprié, sélectionnez Prévisualiser les journaux dans le panneau Modifier le récepteur. L'explorateur de journaux s'ouvre dans un nouvel onglet avec le filtre prérempli. Pour savoir comment afficher et gérer vos récepteurs, consultez la page Gérer les récepteurs.

Afficher les erreurs

Pour chacune des destinations de récepteur compatibles, Logging fournit des messages d'erreur pour les récepteurs mal configurés.

Il existe plusieurs façons d'afficher les erreurs liées au récepteur. Les méthodes correspondantes sont décrites dans les sections suivantes :

  • Afficher les journaux d'erreurs générés pour le récepteur.
  • Recevoir des notifications d'erreur de récepteur par e-mail.
  • Utiliser le flux d'activité de la console

Error logs

La méthode recommandée pour inspecter en détail les erreurs liées au récepteur consiste à afficher les entrées de journal d'erreurs générées par le récepteur. Pour en savoir plus sur l'affichage des journaux, consultez la page Utiliser l'explorateur de journaux.

Vous pouvez utiliser la requête suivante dans le volet du générateur de requêtes Cloud Logging de Google Cloud Console pour examiner les journaux d'erreurs de votre récepteur. La même requête fonctionne dans l'API Logging ou la CLI gcloud. Remplacez la variable SINK_NAME par le nom du récepteur que vous essayez de résoudre. Vous trouverez le nom du récepteur sur la page Routeur de journal de Google Cloud Console.

logName:"logging.googleapis.com%2Fsink_error"
resource.type="logging_sink"
resource.labels.name="<var>SINK_NAME</var>"

Par exemple, si le nom de votre récepteur est my-sink-123, l'entrée de journal peut se présenter comme suit :

{
  "textPayload": "Cloud Logging export config error in my-logs-project, export sink my-sink-123: dataset_not_found ()",
  "insertId": "12akhzyb14452",
  "resource": {
    "type": "logging_sink",
    "labels": {
      "project_id": "my-logs-test-project",
      "destination": "",
      "name": "my-sink-123"
    }
  },
  "timestamp": "2021-08-02T17:01:28.620961700Z",
  "severity": "ERROR",
  "labels": {
    "error_code": "dataset_not_found",
    ...
    "destination": "bigquery.googleapis.com/projects/my-logs-project/datasets/my-dataset",
    "sink_id": "my-sink-123",
    "activity_type_name": "LoggingSinkConfigErrorV2"
  },
  "logName": "projects/cloud-logs-test-project/logs/logging.googleapis.com%2Fsink_error",
  "receiveTimestamp": "2021-08-02T17:01:30.148869575Z"
}

Le champ LogEntry labels et ses informations de clé-valeur imbriquées vous aident à cibler la source de l'erreur de récepteur. Ce champ contient la ressource concernée, le récepteur concerné et le code d'erreur. Le champ labels.error_code contient une description abrégée de l'erreur qui vous indique quel composant de votre récepteur doit être reconfiguré.

Vous pouvez accéder au routeur de journalisation de la console pour mettre à jour votre récepteur :

Accéder au Routeur de journaux

Notifications par e-mail

Si vous êtes abonné à un projet Google Cloud ou à sa ressource parente en tant que contact technique principal, vous recevrez des notifications par e-mail pour les erreurs de configuration de récepteur. Si aucun contact technique principal n'est configuré pour une ressource, les utilisateurs bénéficiant du rôle IAM Propriétaire de projet roles/owner pour la ressource reçoivent la notification par e-mail.

Les e-mails sont envoyés une fois par jour et par groupe d'erreurs. Le message envoyé par e-mail contient les informations suivantes :

  • ID de ressource : nom du projet Cloud ou d'une autre ressource Google Cloud dans laquelle le récepteur a été configuré.
  • Nom du récepteur : nom du récepteur contenant l'erreur de configuration.
  • Destination du récepteur : chemin d'accès complet de la destination de routage du récepteur (par exemple, bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID).
  • Code d'erreur : description abrégée de la catégorie d'erreur (par exemple, dataset_not_found).
  • Détails de l'erreur : informations détaillées sur l'erreur, y compris des recommandations pour la résoudre.

L'e-mail contient également un lien vers la page Routeur de journal de la console, qui vous permet d'afficher et de gérer vos récepteurs:

Accéder au Routeur de journaux

Flux d'activité

Pour afficher les versions tronquées des récepteurs et les erreurs de configuration, vous pouvez utiliser le flux d'activité Google Cloud Console. Procédez comme suit :

  1. Vérifiez que vous disposez des autorisations appropriées pour afficher les erreurs dans le flux d'activités. Vous avez besoin du rôle Propriétaire pour votre ressource Google Cloud.

  2. Accédez au flux d'activités associé au projet Cloud ou à la ressource dans laquelle le récepteur a été créé :

    Accéder au flux d'activités

  3. Dans le panneau Filtres, sélectionnez Types d'activité > Configuration, et Type de ressource > Récepteur d'exportations de journaux.

  4. Ajustez la date et l'heure pour afficher les erreurs de récepteur correspondant à la période.

Toutes les erreurs de configuration de récepteur qui s'appliquent à la ressource apparaissent dans la liste sous la forme Cloud Logging sink configuration error. Chaque erreur contient un lien vers l'une des entrées de journal générées par le récepteur défectueux. Pour examiner en détail les erreurs sous-jacentes, consultez la section Journaux d'erreurs.

Types d'erreurs de récepteur

Les sections suivantes décrivent des catégories générales d'erreurs liées aux récepteurs et indiquent comment les résoudre.

Destination incorrecte

Après avoir configuré un récepteur, si vous rencontrez une erreur indiquant que la destination est introuvable lors de la tentative de routage des journaux par Logging, voici quelques-unes des causes possibles :

  • La configuration de récepteur contient une faute d'orthographe ou une erreur de formatage dans la destination de récepteur spécifiée.

    Vous devez mettre à jour la configuration de récepteur pour spécifier correctement la destination existante.

  • La destination spécifiée a peut-être été supprimée.

    Vous pouvez modifier la configuration de récepteur pour utiliser une destination différente, ou recréer la destination avec le même nom.

Dans les deux cas, pour résoudre les problèmes, accédez au routeur de journaux dans la console:

Accéder au Routeur de journaux

Votre récepteur commence à acheminer les journaux lorsque la destination est trouvée et que de nouveaux journaux correspondant à votre filtre sont reçus par Logging.

Gérer les problèmes des récepteurs

Si vous avez désactivé un récepteur pour arrêter l'ingestion des journaux, mais que les journaux sont toujours acheminés, attendez quelques minutes pour que les modifications apportées au récepteur soient appliquées.

Problèmes d'autorisation

Si un récepteur tente d'acheminer une entrée de journal sans disposer des autorisations IAM appropriées pour sa destination, il signale une erreur (que vous pouvez afficher) et ignore l'entrée de journal.

Lorsque vous créez un récepteur, le compte de service du récepteur doit disposer des autorisations spécifiques à la destination appropriées. Si vous créez le récepteur dans Google Cloud Console dans le même projet Cloud, Google Cloud Console attribue ces autorisations automatiquement. Si vous créez le récepteur dans un autre projet Cloud, ou à l'aide de la CLI gcloud ou de l'API Logging, vous devez configurer les autorisations manuellement.

Si vous constatez des erreurs liées aux autorisations pour votre récepteur, ajoutez les autorisations nécessaires à la destination ou mettez à jour votre récepteur afin d'utiliser une autre destination. Pour savoir comment mettre à jour ces autorisations, consultez la section Autorisations de destination.

Un délai s'applique entre la création du récepteur et l'utilisation du nouveau compte de service du récepteur pour autoriser l'écriture sur la destination. Votre récepteur commence à acheminer les journaux lorsque les autorisations sont corrigées et que de nouveaux journaux correspondant à votre filtre sont reçus par Logging.

Problèmes liés aux règles d'administration

Si vous tentez d'acheminer une entrée de journal et qu'une règle d'administration empêche Logging d'écrire dans la destination du récepteur, le récepteur ne peut pas acheminer la requête vers la destination sélectionnée et renvoie une erreur.

Si vous rencontrez des erreurs liées aux règles d'administration, vous pouvez effectuer les opérations suivantes :

  • Mettez à jour la règle d'administration pour la destination afin de supprimer les contraintes qui bloquent le récepteur pour les entrées de journal de routage. Cela suppose que vous disposez des autorisations appropriées pour mettre à jour la règle d'administration. Pour obtenir des instructions, consultez Créer et modifier des règles.

  • Si vous ne pouvez pas mettre à jour la règle d'administration, mettez à jour votre récepteur dans le routeur de journaux afin d'utiliser une destination conforme :

    Accéder au Routeur de journaux

Votre récepteur commence à acheminer les journaux lorsque la règle d'administration ne l'empêche plus d'écrire sur la destination et que de nouveaux journaux correspondant au filtre sont reçus par Logging.

Problèmes liés aux clés de chiffrement

Si vous utilisez des clés de chiffrement gérées par vos soins ou avec Cloud Key Management Service pour chiffrer les données dans la destination du récepteur, des erreurs correspondantes peuvent survenir. Voici quelques problèmes possibles et des solutions pour les résoudre :

  • La facturation n'est pas activée pour le projet Cloud qui contient la clé Cloud KMS.

    • Même si le récepteur a bien été créé avec la bonne destination, ce message d'erreur s'affiche si aucun compte de facturation valide n'est associé au projet Cloud contenant la clé.

    • Assurez-vous qu'un compte de facturation valide est associé au projet Cloud contenant la clé. Si aucun compte de facturation n'est associé au projet Cloud, activez la facturation pour ce projet Cloud ou utilisez une clé Cloud KMS contenue dans un projet Cloud auquel un compte de facturation valide est associé.

  • La clé Cloud KMS est introuvable.

    • Le projet Cloud contenant la clé Cloud KMS configurée pour le chiffrement des données est introuvable.

    • Utilisez une clé Cloud KMS valide contenue dans un projet Cloud existant.

  • L'emplacement de la clé Cloud KMS ne correspond pas à l'emplacement de la destination.

    • Si le projet Cloud contenant la clé Cloud KMS se trouve dans une région différente de la région de destination, le chiffrement échoue et le récepteur ne peut pas acheminer les données vers cette destination.

    • Utilisez une clé Cloud KMS résidant dans un projet Cloud dont la région correspond à la destination du récepteur.

  • L'accès à la clé de chiffrement est refusé au compte de service du récepteur.

    • Même si le récepteur a bien été créé avec les autorisations de compte de service appropriées, ce message d'erreur s'affiche si la destination du récepteur utilise une clé de chiffrement qui ne donne pas au compte de service des autorisations suffisantes pour chiffrer ou déchiffrer les données.

    • Accordez le rôle Chiffreur/Déchiffreur de CryptoKey Cloud KMS au compte de service spécifié dans le champ writerIdentity du récepteur pour la clé utilisée dans la destination. Assurez-vous également que l'API Cloud KMS est activée.

Problèmes de quota

Lorsque les récepteurs écrivent des journaux, les quotas spécifiques à la destination s'appliquent aux projets Cloud dans lesquels les récepteurs ont été créés. Si les quotas sont épuisés, le récepteur arrête d'acheminer les journaux vers la destination.

Par exemple, lors du routage de données vers BigQuery, une erreur peut indiquer que le quota d'insertion en flux continu par tableau est dépassé pour un certain tableau de votre ensemble de données. Dans ce cas, le récepteur achemine peut-être trop d'entrées de journal, trop rapidement. Le même concept s'applique aux autres destinations de récepteurs compatibles, par exemple aux sujets Pub/Sub.

Pour résoudre les problèmes d'épuisement des quotas, réduisez la quantité de données de journalisation acheminées en mettant à jour le filtre de votre récepteur afin de conserver moins d'entrées de journaux. Vous pouvez utiliser la fonction sample de votre filtre pour sélectionner une fraction du nombre total d'entrées de journal.

Votre récepteur commence à acheminer les journaux vers votre destination une fois que vous avez mis à jour votre récepteur pour conserver moins d'entrées de journal ou une fois que vos quotas sont renouvelés.

Pour en savoir plus sur les limites qui peuvent s'appliquer lors du routage des journaux, consultez les informations de quota de la destination correspondante :

Outre les types d'erreurs de récepteur généraux, voici les types d'erreurs de destination les plus courants ainsi que la façon de les résoudre.

Routage des erreurs vers Cloud Storage

Les erreurs les plus courantes lors du routage de journaux vers Cloud Storage sont les suivantes :

  • Entrées de journal tardives :

    • Les entrées de journal acheminées sont enregistrées par lot toutes les heures dans des buckets Cloud Storage. L'affichage des premières entrées peut prendre 2 à 3 heures.

    • Les partitions de fichiers journaux acheminées qui possèdent le suffixe An ("Append", ajout) contiennent les entrées de journal arrivées en retard. Si la destination Cloud Storage cesse de fonctionner, Cloud Logging conserve les données en mémoire tampon jusqu'à la fin de l'interruption.

  • Impossible d'accorder les autorisations appropriées à la destination :

    • Même si le récepteur a bien été créé avec les autorisations de compte de service appropriées, ce message d'erreur s'affiche si le modèle de contrôle d'accès du bucket Cloud Storage a été défini sur Accès uniforme lors de la création du bucket.

    • Pour les buckets Cloud Storage existants, vous pouvez modifier le modèle de contrôle d'accès au cours des 90 premiers jours suivant la création du bucket à l'aide de l'onglet Autorisations. Pour les nouveaux buckets, sélectionnez le modèle de contrôle d'accès précis défini lors de la création du bucket. Pour plus d'informations, consultez la section Créer des buckets Cloud Storage.

Erreurs de routage vers BigQuery

Voici les erreurs les plus courantes lors du routage des journaux vers BigQuery :

  • Schéma de table non valide :

    • Les journaux diffusés vers le tableau de votre ensemble de données BigQuery ne correspondent pas au schéma de tableau actuel. Les problèmes courants incluent le fait de transférer des entrées de journal avec différents types de données, ce qui entraîne une incohérence de schéma. Par exemple, l'un des champs de l'entrée de journal est un nombre entier, tandis que la colonne correspondante dans le schéma correspond à un type de chaîne.

    • Assurez-vous que vos entrées de journal correspondent au schéma du tableau. Après avoir corrigé la source de l'erreur, vous pouvez renommer votre tableau actuel et laisser Stackdriver Logging recréer le tableau. Pour en savoir plus, consultez la section Correspondances de schéma.

    • BigQuery accepte le chargement de données imbriquées dans ses tables. Toutefois, lors du chargement de données depuis Logging, la limite maximale de profondeur des données imbriquées pour une colonne est de 13 niveaux.

  • Les entrées de journal dépassent les limites temporelles autorisées :

    • Les journaux diffusés vers la table BigQuery partitionnée sont en dehors des limites temporelles autorisées. BigQuery n'accepte pas les journaux trop éloignés dans le passé ou le futur.

    • Vous pouvez mettre à jour votre récepteur pour acheminer ces journaux vers Cloud Storage et utiliser une tâche de chargement BigQuery. Consultez la documentation BigQuery pour obtenir des instructions.

  • Un ensemble de données n'est pas autorisé à accéder au compte de service associé au récepteur de journaux :

    • Même si le récepteur a bien été créé avec les autorisations de compte de service appropriées, ce message d'erreur s'affiche si aucun compte de facturation valide n'est associé au projet Cloud qui contient le récepteur de destination.

    • Assurez-vous qu'un compte de facturation est associé à votre projet Cloud. Si aucun compte de facturation n'est associé au projet Cloud de destination du récepteur, activez la facturation pour ce projet Cloud ou mettez à jour la destination du récepteur afin qu'elle se trouve dans un projet Cloud dont le compte de facturation est valide.

  • L'ensemble de données contient des entrées de journal en double:

    • Des entrées de journal en double peuvent se produire en cas d'échec de la diffusion des journaux dans BigQuery, y compris à cause de nouvelles tentatives ou d'erreurs de configuration. Cloud Logging déduplique les entrées de journal avec les mêmes timestamp et insertId au moment de la requête. BigQuery n'élimine pas les entrées de journal en double.

    • Pour ignorer les entrées de journal en double dans BigQuery, incluez la clause SELECT DISTINCT dans votre requête. Exemple :

    SELECT DISTINCT insertId, timestamp FROM TABLE_NAME
    

Routage des erreurs vers des buckets Cloud Logging

Il peut arriver que vous puissiez voir dans l'explorateur des journaux que vous avez exclus avec votre récepteur. Vous pouvez toujours consulter ces journaux si l'une des conditions suivantes est satisfaite :

  • Vous exécutez votre requête dans le projet Google Cloud qui a généré les journaux.

    Pour résoudre ce problème, assurez-vous d'exécuter votre requête dans le projet Cloud approprié.

  • Les journaux exclus ont été envoyés à plusieurs buckets de journaux et l'entrée que vous voyez est une copie du journal que vous souhaitez exclure.

    Pour résoudre ce problème, vérifiez l'état des récepteurs sur la page Routeur de journaux afin de ne pas inclure ces journaux dans les filtres d'autres récepteurs.

  • Vous avez accès aux vues du bucket de journaux dans lequel les journaux ont été envoyés. Dans ce cas, vous pouvez voir ces journaux par défaut.

    Pour éviter de voir ces journaux dans l'explorateur de journaux, vous pouvez affiner le champ d'application de votre recherche pour votre projet ou votre bucket Cloud source.