Ce document explique comment résoudre les erreurs pouvant se produire lors de l'utilisation de la page Log Analytics de la console Google Cloud.
Messages d'erreur
Cette section décrit les messages d'erreur susceptibles de s'afficher et explique comment résoudre les conditions d'erreur correspondantes.
Message d'erreur No completion signal within allotted timeframe
Vous saisissez une requête SQL, puis sélectionnez Run query (Exécuter la requête). La requête n'est pas terminée, et le message d'erreur suivant s'affiche:
The query failed to execute and return results due to error: No completion signal within allotted timeframe.
Pour résoudre cette erreur, effectuez l'une des opérations suivantes:
Réduisez l'intervalle sur lequel les journaux sont interrogés, puis relancez la requête. Par exemple, si l'intervalle de requête est de 14 jours, réduisez-le à 7 jours, puis exécutez la requête.
Créez un ensemble de données BigQuery associé, puis exécutez la requête depuis l'interface BigQuery. L'interface BigQuery accepte les requêtes qui nécessitent un temps d'exécution plus long que l'interface Cloud Logging. Pour en savoir plus, consultez la page Interroger un ensemble de données BigQuery associé.
Message d'erreur concernant les requêtes sur des buckets avec des clés CMEK distinctes
Vous saisissez une requête SQL qui interroge plusieurs buckets de journaux, puis sélectionnez Exécuter la requête. La requête n'est pas terminée, et le message d'erreur suivant s'affiche:
Queries against buckets with distinct CMEK keys must have a key configured in the LogSettings.
Pour résoudre ce problème, effectuez l'une des opérations suivantes:
- Configurez vos buckets de journaux pour qu'ils utilisent la même clé Cloud Key Management Service (Cloud KMS).
- Lorsque les buckets de journaux se trouvent au même emplacement, vous pouvez configurer un dossier ou une organisation qui est une ressource parente pour les buckets de journaux avec une clé Cloud KMS par défaut. La clé par défaut du parent doit se trouver au même emplacement que les buckets de journaux. Avec cette configuration, la clé par défaut du parent chiffre toutes les données temporaires générées par la requête Log Analytics. Pour en savoir plus, consultez la section Restrictions Log Analytics.
La clause FROM doit contenir exactement un message d'erreur de vue
Vous saisissez une requête SQL dans le volet de requête de la page Analyse de journaux de la console Google Cloud, mais l'analyseur SQL affiche l'erreur suivante:
FROM clause must contain exactly one log view
L'erreur précédente est signalée lorsque la table spécifiée dans l'instruction FROM
ne peut pas être résolue en vue de journal spécifique.
Pour résoudre cette erreur, assurez-vous que le nom de votre table respecte la syntaxe appropriée:
Assurez-vous que le nom de la table respecte la syntaxe requise par le schéma d'attribution de noms Log Analytics. BigQuery et Log Analytics ont des exigences différentes concernant le nom de la table. Pour connaître la syntaxe requise pour le nom de la table, affichez la requête par défaut.
Si l'ID de projet Google Cloud, la région, l'ID de bucket ou l'ID de vue d'un bucket de journaux contient des caractères de point,
(.)
, assurez-vous que chacun de ces champs est entouré d'une seule apostrophe arrière,(`)
.Par exemple, si l'ID d'un projet Google Cloud est
example.com:bluebird
, pour interroger la vue_AllLogs
du bucket de journaux_Default
, utilisez la syntaxe suivante pour spécifier le tableau:SELECT * FROM `example.com:bluebird`.`global`.`_Default`.`_AllLogs`
La requête précédente suppose que le bucket
_Default
se trouve dans la régionglobal
.
Impossible d'enregistrer une requête
Si vous saisissez et exécutez une requête SQL et que l'option Configurer les paramètres par défaut pour les organisations et les dossiers.
Enregistrer est désactivée, cela signifie que les paramètres de ressources par défaut de votre organisation ou de votre dossier définissent un emplacement non autorisé par la règle d'administration. Pour résoudre ce problème, demandez à l'administrateur de votre organisation de définir un emplacement dans les paramètres de ressources par défaut qui correspond à un emplacement autorisé par votre règle d'administration. Pour en savoir plus, consultez la pageSi le bouton
Enregistrer est activé, mais que vous ne parvenez pas à terminer la boîte de dialogue et à enregistrer la requête, procédez comme suit:- Assurez-vous que la requête ne contient pas d'erreurs de syntaxe. Vous ne pouvez enregistrer que des requêtes valides.
- Facultatif: Copiez la requête dans le presse-papiers.
- Actualisez la page.
- Si vous avez copié la requête dans le presse-papiers, collez-la dans le volet Requête, exécutez-la, puis effectuez l'opération d'enregistrement.
Accès refusé à la page Log Analytics
Vous ouvrez la page Log Analytics dans la console Google Cloud, et un message d'erreur indiquant que l'autorisation est refusée s'affiche.
Pour obtenir les autorisations nécessaires pour charger la page Log Analytics, exécuter des requêtes et afficher des journaux, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet:
-
Afficher les journaux :
Lecteur de journaux (
roles/logging.viewer
) -
Afficher les journaux dans des buckets de journaux personnalisés :
Accesseur de vues de journaux (
roles/logging.viewAccessor
)
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou des rôles prédéfinis de journalisation.
Les autorisations requises pour afficher les entrées de journal et exécuter des requêtes sur la page Log Analytics sont les mêmes que celles requises pour afficher les journaux sur la page Explorateur de journaux. Pour en savoir plus sur les rôles supplémentaires dont vous avez besoin pour interroger des vues sur des buckets définis par l'utilisateur ou pour interroger la vue _AllLogs
du bucket de journaux _Default
, consultez la section Rôles Cloud Logging.
La mise à niveau du bucket de journaux pour utiliser l'Analyse de journaux échoue
Vous créez un bucket de journaux et sélectionnez l'option d'utiliser l'Analyse de journaux, ou vous mettez à niveau un bucket de journaux existant pour utiliser l'Analyse de journaux. La mise à niveau échoue et une condition d'erreur semblable à la suivante s'affiche:
Failed precondition (HTTP 400): Constraint "my-constraint" violated for PROJECT_ID with location global.
Le message d'erreur précédent indique que votre organisation a configuré une règle d'administration qui limite les régions pouvant être utilisées. Les buckets de journaux pouvant être mis à niveau pour utiliser l'Analyse de journaux doivent utiliser la région global
. Si vous pouvez supprimer la règle d'administration qui limite l'utilisation de la région global
, vous pouvez mettre à niveau votre bucket de journaux. Sinon, vous ne pourrez pas mettre à niveau vos buckets de journaux.
Échec de la création d'un ensemble de données BigQuery associé
Vous modifiez un bucket de journaux pour créer un ensemble de données BigQuery associé ou vous créez un bucket de journaux et sélectionnez l'option permettant de créer un ensemble de données associé. Toutefois, l'ensemble de données associé n'est pas créé.
Pour résoudre ce problème, demandez à l'administrateur système du projet Google Cloud de vous accorder un rôle IAM incluant l'autorisation suivante:
logging.links.create
L'autorisation précédente est incluse dans les rôles "Administrateur Logging" (roles/logging.admin
) et "Rédacteur de configuration des journaux" (roles/logging.configWriter
).
Pour en savoir plus sur les rôles et les autorisations, consultez la page Contrôle des accès avec IAM.
Échec de la suppression d'un ensemble de données BigQuery associé
Vous ne souhaitez plus utiliser l'ensemble de données associé, mais l'option de suppression de cet ensemble de données est désactivée.
Pour résoudre ce problème, demandez à l'administrateur système du projet Google Cloud de vous accorder un rôle IAM incluant l'autorisation suivante:
logging.links.delete
L'autorisation précédente est incluse dans les rôles "Administrateur Logging" (roles/logging.admin
) et "Rédacteur de configuration des journaux" (roles/logging.configWriter
).
Cette autorisation vous permet de supprimer l'ensemble de données associé sur la page Stockage des journaux de la console Google Cloud. Pour en savoir plus sur les rôles et les autorisations, consultez la page Contrôle des accès avec IAM.
Le bouton des paramètres du moteur de requête est manquant
Si le bouton settings Settings (Paramètres) ne s'affiche pas à côté du bouton Run query (Exécuter la requête), les emplacements BigQuery réservés ne sont pas activés dans votre projet Google Cloud. Pour activer le bouton settings Settings (Paramètres), configurez des emplacements BigQuery réservés pour votre projet.
Le bouton "Exécuter sur BigQuery" est désactivé
Si le bouton Exécuter sur BigQuery s'affiche, mais est désactivé, cela signifie qu'une vue de journal référencée par votre requête ne dispose pas d'ensemble de données associé. Pour exécuter votre requête sur vos réservations emplacement BigQuery, créez un ensemble de données BigQuery associé dans votre vue des journaux.
Aucun compte de service de surveillance
Vous souhaitez créer une règle d'alerte pour surveiller les résultats d'une requête SQL. Les étapes de configuration vous obligent à attribuer des rôles IAM au compte de service Monitoring, mais ce compte n'existe pas.
Le compte de service de surveillance est appelé agent de service, car il est créé et géré par Google Cloud. Le compte est créé automatiquement lorsque vous configurez une ressource ou un service qui en a besoin. Par exemple, si vous créez un canal de notification Pub/Sub, cette action peut entraîner la création du compte de service Monitoring.
Selon le flux de création, le compte de service Monitoring peut se voir attribuer le rôle Agent de service de surveillance (monitoring.NotificationServiceAgent
) sur votre projet. Vous pouvez modifier les rôles attribués au compte.
Si le compte de service de surveillance n'existe pas, procédez comme suit pour créer une stratégie d'alerte qui surveille le résultat d'une requête SQL:
Créez manuellement un agent de service. Pour en savoir plus sur cette étape, consultez la section Créer et attribuer des rôles aux agents de service.
Attribuez les rôles requis à l'agent de service. Pour en savoir plus sur ces rôles, consultez la section Surveiller les résultats de vos requêtes SQL: avant de commencer.
Des entrées de journal en double s'affichent dans mes résultats Log Analytics
Vous exécutez une requête qui compte ou signale des entrées en double. Étant donné que l'explorateur de journaux supprime les entrées en double en fonction du nom du journal, de l'horodatage et de l'ID d'insertion, vous vous attendez à ce que Log Analytics déduplique les entrées de journal avant l'exécution d'une requête.
Log Analytics n'effectue pas le même type de déduplication que l'explorateur de journaux.
Pour résoudre les entrées de journal en double, procédez comme suit:
Déterminez si les entrées de journal en double ont des valeurs de code temporel de réception différentes. Lorsque les codes temporels sont différents, cela indique que les mêmes données ont été écrites dans le journal plusieurs fois.
Pour résoudre les écritures en double, recherchez des messages d'erreur ou des erreurs de configuration dans votre intégration de journalisation.
Si votre bucket est configuré pour utiliser des clés Cloud Key Management Service, assurez-vous de respecter le quota et que votre clé est accessible de manière cohérente. Le dépassement du quota ou la perte d'accès aux clés peuvent entraîner des entrées de journal en double.
Pour résoudre ces échecs, assurez-vous de ne pas dépasser votre quota et que votre clé est accessible.
Modifiez votre requête pour supprimer les entrées de journal en double.
Par exemple, supposons que la charge utile JSON contient
fieldA
etfieldB
, le premier étant une chaîne et le second étant numérique. Supposons également que la charge utile JSON contient un champ intituléserver
, qui contient une chaîne. Ensuite, examinons la requête suivante:SELECT JSON_VALUE(json_payload.fieldA) AS fieldA SUM(IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0)) AS sum_fieldB FROM `TABLE_NAME_OF_LOG_VIEW` WHERE JSON_VALUE(json_payload.server) = "test" GROUP BY fieldA;
Vous pouvez modifier la requête pour supprimer les entrées de journal en double, où le nom du journal, l'horodatage et l'ID d'insertion sont examinés pour déterminer si une entrée de journal est en double:
WITH deduplicated AS ( SELECT JSON_VALUE(json_payload.fieldA) AS fieldA IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0) AS fieldB FROM `TABLE_NAME_OF_LOG_VIEW` a WHERE JSON_VALUE(json_payload.server) = "test" QUALIFY ROW_NUMBER() OVER (PARTITION BY a.log_name, a.timestamp, a.insert_id ) = 1 ) SELECT fieldA, SUM(fieldB) AS sum_fieldB FROM deduplicated GROUP BY fieldA;