Ce document explique les problèmes de routage et de stockage courants, et comment utiliser la console Google Cloud pour afficher et résoudre les erreurs de configuration ou les résultats inattendus.
Pour en savoir plus sur l'utilisation des journaux dans vos destinations de récepteurs, consultez la section 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 à l'acheminement de vos journaux.
La destination contient des journaux indésirables
Vous consultez les journaux acheminés vers une destination et vous déterminez qu'elle 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'empêcher le routage de journaux sélectionnés vers une destination.
Par exemple, supposons que vous créiez un récepteur agrégé pour acheminer les journaux d'une organisation vers une destination. Pour empêcher l'acheminement des journaux d'un projet spécifique 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 à l'aide de l'opérateur logique OU 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 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 présentation des 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 de 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 tardifs sont particulièrement courants avec les récepteurs qui utilisent des buckets Cloud Storage comme destinations. Essayez d'attendre quelques heures et de vérifier à nouveau votre destination.
Champ d'application/filtre de la vue incorrect
Le champ d'application que vous utilisez pour afficher les journaux dans les destinations de buckets de journalisation est incorrect.
Limitez votre recherche à une ou plusieurs vues de stockage comme suit:
Si vous utilisez l'explorateur de journaux, utilisez le bouton Affiner la portée.
Si vous utilisez gcloud CLI, utilisez la commande
gcloud logging read
et ajoutez un indicateur--view=AllLogs
.
La période que vous utilisez pour [sélectionner et afficher les données dans la destination de votre récepteur][export-log-bucket est trop restreinte.
Essayez d'élargir la période que vous utilisez lorsque vous sélectionnez des données dans la destination de votre récepteur.
Erreur dans le filtre de l'évier
Le filtre du récepteur est incorrect et ne capture pas les journaux que vous souhaitez transférer vers votre destination.
- Modifiez le filtre de votre récepteur à l'aide du routeur de journaux dans la console Google Cloud. Pour vérifier que le filtre saisi est correct, 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. L'expéditeur de cet e-mail est
logging-noreply@google.com
.
Journaux d'erreurs
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 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 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 trouverez le nom de votre récepteur sur la page Routeur de journaux de Google Cloud Console.
logName:"logging.googleapis.com%2Fsink_error"
resource.type="logging_sink"
resource.labels.name="SINK_NAME"
Par exemple, si le nom de votre récepteur est my-sink-123
, l'entrée de journal peut se présenter comme suit:
{
errorGroups: [
0: {
id: "COXu96aNws6BiQE"
}]
insertId: "170up6jan"
labels: {
activity_type_name: "LoggingSinkConfigErrorV2"
destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
error_code: "topic_not_found"
error_detail: ""
sink_id: "my-sink-123"
}
logName: "projects/my-project/logs/logging.googleapis.com%2Fsink_error"
receiveTimestamp: "2024-07-11T14:41:42.578823830Z"
resource: {
labels: {
destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
name: "my-sink-123"
project_id: "my-project"
}
type: "logging_sink"
}
severity: "ERROR"
textPayload: "Cloud Logging sink configuration error in my-project, sink my-sink-123: topic_not_found ()"
timestamp: "2024-07-11T14:41:41.296157014Z"
}
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 résoudre ce problème, modifiez votre évier. Par exemple, vous pouvez modifier votre récepteur à l'aide de la page Routeur de journaux:
Accéder au routeur de journaux
Notifications par e-mail
Contacts essentiels envoie des notifications par e-mail pour les erreurs de configuration de récepteur aux contacts attribués à la catégorie de notification "Technique" d'un projet Google Cloud ou de sa ressource parente.
Si aucun contact n'est configuré pour les notifications techniques de la 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.
Le message envoyé par e-mail contient les informations suivantes:
- ID de ressource: nom du projet Google 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,
pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
). - Code d'erreur: description abrégée de la catégorie d'erreur (par exemple,
topic_not_found
). - Détails de l'erreur : informations détaillées sur l'erreur, y compris des recommandations pour la résoudre.
L'expéditeur de cet e-mail est logging-noreply@google.com
.
Pour afficher et gérer vos récepteurs, utilisez la page 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
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.
Pour résoudre ces types de défaillances, [modifiez votre évier]export-manage-sink. Par exemple, vous pouvez modifier votre récepteur à l'aide de la page 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 collecteur pour arrêter de stocker des journaux dans un bucket de journaux, mais que vous voyez toujours des journaux acheminés, attendez quelques minutes pour que les modifications apportées au collecteur soient appliquées.
Problèmes d'autorisation
Lorsqu'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 de destination appropriées. Si vous créez le récepteur en utilisant Google Cloud Console dans le même projet Google Cloud, Google Cloud Console attribue généralement ces autorisations automatiquement. Toutefois, si vous créez le récepteur dans un autre projet Google Cloud, ou que vous utilisez gcloud CLI ou 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 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 de la destination pour supprimer les contraintes qui empêchent le récepteur d'acheminer les entrées de journal. Cela suppose que vous disposez des autorisations appropriées pour mettre à jour la règle d'administration.
Vous pouvez vérifier si une restriction d'emplacement de ressource (
constraints/gcp.resourceLocations
) existe. Cette contrainte détermine les emplacements où les données peuvent être stockées. De plus, certains services acceptent des contraintes qui peuvent affecter un collecteur de journaux. Par exemple, plusieurs restrictions peuvent s'appliquer lorsqu'une destination Pub/Sub est sélectionnée. Pour obtenir la liste des contraintes possibles, consultez la section Contraintes liées aux règles d'administration.Pour savoir comment procéder, 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 sur la page Routeur de journaux afin d'utiliser une destination conforme.
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 Google 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 Google Cloud contenant la clé.
Assurez-vous qu'un compte de facturation valide est associé au projet Google Cloud contenant la clé. Si aucun compte de facturation n'est associé au projet Google Cloud, activez la facturation pour ce projet Google Cloud 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 le chiffrement des données est introuvable.
Utilisez une clé Cloud KMS valide contenue dans 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 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 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, les quotas spécifiques à la destination s'appliquent aux projets Google 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 :
- Vérifiez que le compte de service du collecteur de journaux dispose des autorisations appropriées. Pour en savoir plus, consultez la section Problèmes d'autorisations de ce document.
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.
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 incohérence 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 des noms est
export_errors_YYYYMMDD
. Pour les tables partitionnées, le format des noms estexport_errors
. Pour en savoir plus sur le schéma des tables d'erreurs et sur la façon d'éviter les futures incohérences de type 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 qui contient le récepteur de destination.
Assurez-vous qu'un compte de facturation est associé à votre projet Google Cloud. Si aucun compte de facturation n'est 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 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 de défaillances lors du streaming de journaux vers BigQuery, y compris en raison de nouvelles tentatives ou de configurations incorrectes. Cloud Logging déduplique les entrées de journal avec le même
timestamp
et le mêmeinsertId
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 Google 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 Google Cloud source.
Résoudre les problèmes de stockage des 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 section 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 qu'aucun ensemble de données BigQuery n'est associé au bucket de journaux. Vous ne pouvez pas supprimer un bucket de journaux associé à un ensemble de données.
L'erreur suivante s'affiche en réponse à une commande
delete
sur un bucket de journaux associé à un ensemble de données: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 lister les liens associés à un bucket de journaux, exécutez la commande [
gcloud logging links list
][link-list] ou la méthode APIprojects.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 :
-
Dans la console Google Cloud, accédez à la page 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.
À partir de l'onglet Autorisations, affichez la liste par Rôles. Une table contenant tous les rôles et comptes principaux IAM associés à votre projet Google Cloud s'affiche.
Dans la tableFiltre zone de texte filter_list, 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
.Facultatif: si vous souhaitez empêcher un compte de service d'acheminer les journaux vers votre projet Google Cloud, cochez la case check_box_outline_blank pour le compte de service, puis cliquez sur Supprimer.
Pourquoi les journaux d'un projet Google Cloud apparaissent-ils alors que je les ai exclus de mon récepteur _Default
?
Vous pouvez consulter les journaux d'un bucket de journaux dans un projet Google Cloud centralisé qui regroupe les journaux de votre organisation.
Si vous utilisez l'explorateur de journaux pour accéder à ces journaux et que vous voyez les journaux que vous avez exclus du récepteur _Default
, votre vue peut être définie au niveau du projet Google Cloud.
Pour résoudre ce problème, sélectionnez Vue des journaux dans le menu Affiner le champ d'application, puis sélectionnez la vue des journaux associée au bucket _Default
dans votre projet Google Cloud. Vous ne devriez plus voir les journaux exclus.