Résoudre les problèmes de routage et de stockage des journaux

Ce document explique les problèmes courants de routage et de stockage et comment utiliser la console Google Cloud 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 page Afficher les journaux dans les destinations de récepteurs.

Résoudre les problèmes liés aux journaux de routage

Cette section explique comment résoudre les problèmes courants liés au routage des journaux.

La destination contient des journaux indésirables

Vous consultez les journaux acheminés vers une destination et déterminez que celle-ci contient des journaux indésirables.

Pour résoudre ce problème, mettez à jour les filtres d'exclusion de vos récepteurs qui acheminent les journaux vers la destination. Les filtres d'exclusion vous permettent d'exclure des journaux sélectionnés du routage vers une destination.

Par exemple, supposons que vous créez un récepteur agrégé pour acheminer les journaux d'une organisation vers une destination. Pour exclure les journaux d'un projet spécifique du routage vers la destination, ajoutez le filtre d'exclusion suivant au récepteur:

logName:projects/PROJECT_ID

Vous pouvez également exclure les journaux de plusieurs projets en utilisant l'opérateur logique-OR pour joindre des clauses logName.

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 comportent des libellés qui enregistrent les décomptes par nom de récepteur et de destination, et vous permettent de savoir si votre récepteur achemine correctement ou non les données des journaux. Pour en savoir plus sur l'affichage des métriques, consultez 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 la création ou la mise à jour du 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 tardifs 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/du filtre est incorrect

Erreur dans le filtre du récepteur

  • Le filtre du récepteur est incorrect et ne capture pas les journaux que vous pensiez voir dans votre destination.

    • Modifiez le filtre de votre récepteur à l'aide du routeur de journaux dans la console Google Cloud. Pour vérifier que vous avez saisi le bon filtre, 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 obtenir des instructions sur l'affichage et la gestion des récepteurs, consultez la section 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.

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 savoir comment afficher les journaux, consultez la page Afficher les journaux à l'aide de l'explorateur de journaux.

Vous pouvez utiliser la requête suivante dans le volet de l'éditeur de requêtes de l'explorateur de journaux pour examiner les journaux d'erreurs de votre récepteur. La même requête fonctionne dans l'API Logging et dans la gcloud CLI.

Avant de copier la requête, remplacez la variable SINK_NAME par le nom du récepteur que vous essayez de dépanner. Vous le trouverez sur la page Routeur de journaux de la console Google Cloud.

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

Par exemple, si le nom du 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é.

Pour mettre à jour votre récepteur, utilisez le routeur de journaux.

Dans le panneau de navigation de la console Google Cloud, sélectionnez Logging, puis Routeur de journaux :

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.

L'e-mail contient les informations suivantes:

  • ID de ressource: nom du projet Google Cloud ou d'une autre ressource Google Cloud dans lequel 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.

Pour afficher et gérer vos récepteurs, utilisez le routeur de journaux.

Dans le panneau de navigation de la console Google Cloud, sélectionnez Logging, puis Routeur de journaux :

Accéder au routeur de journaux

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

Si vous avez configuré un récepteur, mais que vous constatez une erreur de configuration indiquant que la destination est introuvable lorsque Logging a tenté d'acheminer les journaux, voici quelques raisons 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 à la page Routeur de journaux.

Dans le panneau de navigation de la console Google Cloud, sélectionnez Logging, puis Routeur de journaux :

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 liés aux récepteurs

Si vous avez désactivé un récepteur pour arrêter de stocker des journaux dans un bucket de journaux, mais que vous voyez toujours les journaux en cours de routage, attendez quelques minutes 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, son compte de service doit disposer des autorisations de destination appropriées. Si vous créez le récepteur dans la console Google Cloud dans le même projet Google Cloud, la console Google Cloud attribue ces autorisations automatiquement. Si vous créez le récepteur dans un autre projet Google Cloud, ou à l'aide de gcloud CLI ou de l'API Logging, vous devez configurer les autorisations manuellement.

Si vous rencontrez des erreurs liées aux autorisations pour votre récepteur, ajoutez les autorisations nécessaires à la destination ou mettez à jour votre récepteur pour qu'il utilise 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 essayez d'acheminer une entrée de journal, mais que vous rencontrez une règle d'administration qui empêche Logging d'écrire sur la destination du récepteur, celui-ci ne peut pas acheminer les données vers la destination sélectionnée et signale une erreur.

Si vous rencontrez des erreurs liées aux règles d'administration, vous pouvez procéder comme suit:

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

  • Si vous ne pouvez pas mettre à jour la règle d'administration, mettez à jour votre récepteur sur la page Routeur de journaux pour qu'il utilise une destination conforme.

    Dans le panneau de navigation de la console Google Cloud, sélectionnez Logging, puis Routeur de journaux :

    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, qu'elles soient gérées par Cloud Key Management Service ou par vous, pour chiffrer les données dans la destination du récepteur, des erreurs associées peuvent s'afficher. Voici quelques problèmes potentiels et des solutions pour les résoudre:

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

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

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

  • La clé Cloud KMS est introuvable.

    • Le projet Google Cloud contenant la clé Cloud KMS configurée pour chiffrer les données est introuvable.

    • Utilisez une clé Cloud KMS valide provenant d'un projet Google Cloud existant.

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

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

    • Utilisez une clé Cloud KMS contenue dans un projet Google 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, des quotas spécifiques à la destination s'appliquent aux projets Google Cloud dans lesquels ils 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 la tentative d'acheminement des entrées de journal avec différents types de données, ce qui provoque une non-concordance du 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.

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

    Lorsque BigQuery identifie une non-concordance de schéma, il crée une table dans l'ensemble de données correspondant pour stocker les informations d'erreur. Le type d'une table détermine son nom. Pour les tables segmentées par date, le format de nom est export_errors_YYYYMMDD. Pour les tables partitionnées, le format de nom est export_errors. Pour en savoir plus sur le schéma des tables d'erreurs et sur la manière d'éviter les futures incohérences de types de champ, consultez la section Incohérences dans le schéma.

  • 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 Google Cloud contenant la destination du récepteur.

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

  • 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 en raison de nouvelles tentatives ou d'erreurs de configuration. Cloud Logging déduplique les entrées de journal ayant les mêmes valeurs 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 bon projet Google Cloud.

  • 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 vos récepteurs sur la page Routeur de journaux pour vous assurer que vous n'incluez pas les journaux dans les filtres des 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 que ces journaux ne s'affichent dans l'explorateur de journaux, vous pouvez affiner le champ d'application de votre recherche sur votre projet ou bucket Google Cloud source.

Résoudre les problèmes de stockage de journaux

Pourquoi ne puis-je pas supprimer ce bucket ?

Si vous essayez de supprimer un bucket, procédez comme suit :

  • Assurez-vous de disposer des autorisations appropriées pour supprimer le bucket. Pour obtenir la liste des autorisations dont vous avez besoin, consultez la page Contrôle des accès avec IAM.

  • Déterminez si le bucket est verrouillé en répertoriant les attributs du bucket. Si le bucket est verrouillé, vérifiez sa durée de conservation. Vous ne pouvez pas supprimer un bucket verrouillé tant que tous les journaux qu'il contient n'ont pas atteint la date limite de conservation du bucket.

  • Vérifiez que le bucket de journaux n'est associé à aucun ensemble de données BigQuery. Vous ne pouvez pas supprimer un bucket de journaux auquel un ensemble de données est associé.

    L'erreur suivante s'affiche en réponse à une commande delete sur un bucket de journaux auquel un ensemble de données est associé:

    FAILED_PRECONDITION: This bucket is used for advanced analytics and has an active link. The link must be deleted first before deleting the bucket
    

    Pour répertorier les liens associés à un bucket de journaux, exécutez la commande [gcloud logging links list][link-list] ou la méthode API projects.locations.buckets.links.list.

Quels comptes de service acheminent les journaux vers mon bucket ?

Pour déterminer si des comptes de service disposent d'autorisations IAM pour acheminer les journaux vers votre bucket, procédez comme suit :

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez IAM :

    Accéder à IAM

  2. À partir de l'onglet Autorisations, affichez la liste par Rôles. Une table s'affiche avec tous les rôles et comptes principaux IAM associés à votre projet Google Cloud.

  3. Dans la tableFiltre zone de texte, saisissez Rédacteur de bucket de journaux.

    Tous les comptes principaux dotés du rôle Rédacteur de bucket de journaux s'affichent. Si un compte principal est un compte de service, son ID contient la chaîne gserviceaccount.com.

  4. Facultatif: Si vous souhaitez empêcher un compte de service d'acheminer les journaux vers votre projet Google Cloud, cochez la case correspondant au compte de service, puis cliquez sur Supprimer.

Pourquoi les journaux d'un projet Google Cloud s'affichent-ils alors que je les ai exclus de mon récepteur _Default ?

Vous consultez peut-être des journaux dans un bucket de journaux d'un projet Google Cloud centralisé, qui agrège les journaux de l'ensemble de votre organisation.

Si vous utilisez l'explorateur de journaux pour accéder à ces journaux et consulter ceux que vous avez exclus du récepteur _Default, votre vue peut être limitée au niveau du projet Google Cloud.

Pour résoudre ce problème, sélectionnez Recherche par espace de stockage dans le panneau Affiner le champ d'application, puis sélectionnez le bucket _Default dans votre projet Google Cloud. Vous ne devriez plus voir les journaux exclus.