Ce document décrit les problèmes courants liés au routage et au stockage, et explique comment utiliser le la console Google Cloud pour afficher et corriger les erreurs de configuration des résultats inattendus.
Pour obtenir des informations générales sur l'utilisation des journaux dans les destinations de vos récepteurs, consultez la page Affichez 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éez récepteur agrégé pour acheminer les journaux une organisation à 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, puis vérifiez que les journaux système de votre récepteur métriques:
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 savoir comment afficher les métriques, consultez Affichez 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 évier ; 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 en particulier pour les récepteurs qui ont configuré Cloud Storage des buckets comme destinations. Essayez d'attendre quelques heures et de vérifier à nouveau votre destination.
L'affichage du champ d'application/du filtre est incorrect
Le niveau d'accès que vous utilisez pour afficher les journaux dans le bucket Logging destinations incorrectes.
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 la gcloud CLI, utilisez la commande Commande
gcloud logging read
et ajoutez un indicateur--view=AllLogs
.
La plage de dates que vous utilisez pour sélectionner et afficher les données dans la destination de votre récepteur est trop étroite.
Essayez d'élargir la période que vous utilisez lorsque vous sélectionnez des données dans votre destination de récepteur.
Erreur dans le filtre de l'évier
Le filtre du récepteur est incorrect et n'enregistre pas les journaux que vous attendiez voir dans votre destination.
- Modifiez le filtre du récepteur en utilisant le routeur de journaux dans le 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 obtenir des instructions sur l'affichage et la gestion des récepteurs, consultez 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.
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ête dans le Explorateur de journaux pour examiner les journaux d'erreurs de votre récepteur. La même requête fonctionne dans l'API Logging et la CLI gcloud.
Avant de copier la requête, remplacez la variable SINK_NAME par le nom du récepteur que vous essayez de dépanner. Vous pouvez trouver le nom de votre lavabo sur la page Routeur de journaux de la console Google Cloud.
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 ressembler à ceci :
semblable à ce qui 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, modifier votre récepteur. 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
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.
Le message envoyé par e-mail contient les informations suivantes :
- ID de ressource: nom du projet Google Cloud ou d'un 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.
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 d'échecs, 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
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 désactivé un récepteur d'arrêter de stocker des journaux dans un bucket de journaux, mais tout de même de voir les journaux acheminés, puis attendez quelques minutes que les modifications soient appliquées au récepteur.
Problèmes d'autorisation
Lorsqu'un récepteur tente d'acheminer une entrée de journal, mais ne dispose pas des autorisations les autorisations IAM pour la destination du récepteur, celui-ci 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 qui lui est associé doit disposer du rôle approprié autorisations des destinations. Si vous créez le récepteur dans la console Google Cloud dans le même projet Google Cloud, la console Google Cloud attribue généralement ces automatiquement les autorisations. Toutefois, si vous créez le récepteur dans un autre un projet Google Cloud, ou à l'aide de gcloud CLI 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 ou mettez à jour votre récepteur pour qu'il utilise vers votre 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 empêcher le récepteur d'acheminer les entrées de journal ; cela présuppose que vous avez les autorisations appropriées pour mettre à jour la règle d’administration. Pour 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 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 les moyens de 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é pour chiffrer les données est introuvable.
Utilisez une clé Cloud KMS valide provenant d'une projet Google Cloud.
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.
Utiliser une clé Cloud KMS contenue dans un projet Google Cloud 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 :
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.
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 été créé avec succès autorisations de compte de service correctes, cette erreur s'affiche si aucun compte de facturation valide n'est associé à le 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é à la destination du récepteur d'un projet Google Cloud, activer la facturation pour ce projet ou modifiez la destination du récepteur afin qu'elle se trouve dans un 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 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 des 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 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 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 que le bucket de journaux n'est pas associé à un ensemble de données BigQuery. 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 supprimer un compte de service de l'acheminement dans votre projet Google Cloud, sélectionnez case à cocher check_box_outline_blank pour le compte de service, puis cliquez sur Supprimer.
Pourquoi des journaux d'un projet Google Cloud s'affichent-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 de journal dans le
Menu Affiner le champ d'application
puis sélectionnez la vue de journal associée au bucket _Default
projet Google Cloud. Vous ne devriez plus voir les journaux exclus.