Résoudre les problèmes de configuration de l'Analyse de journaux

Ce document explique comment résoudre les erreurs qui peuvent se produire lorsque vous utilisez la page Log Analytics de la console Google Cloud .

Messages d'erreur

Cette section décrit les messages d'erreur que vous pouvez rencontrer et comment résoudre les conditions d'erreur correspondantes.

Message d'erreur No completion signal within allotted timeframe

Saisissez une requête SQL, puis sélectionnez Exécuter la requête. La requête ne s'exécute pas 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 :

  • Raccourcissez l'intervalle sur lequel les journaux sont interrogés, puis réessayez. Par exemple, si l'intervalle d'une 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 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 et sélectionnez Exécuter la requête. La requête ne s'exécute pas 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 de Log Analytics.

Message d'erreur "La clause FROM doit contenir exactement une 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 une vue de journaux 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 de dénomination Log Analytics. BigQuery et l'Analyse de journaux ont des exigences différentes concernant le nom de la table. Pour trouver la syntaxe requise pour le nom de la table, affichez la requête par défaut.

  • Si l'ID de projet, la région, l'ID de bucket ou l'ID de vue d'un bucket de journaux Google Cloud contient des points ((.)), assurez-vous que chacun de ces champs est entouré d'un accent grave ((`)).

    Par exemple, si un ID de projet Google Cloud est example.com:bluebird, pour interroger la vue _AllLogs du bucket de journaux _Default, utilisez la syntaxe suivante pour spécifier la table :

    
    SELECT *
    FROM `example.com:bluebird`.`global`.`_Default`.`_AllLogs`
    

    La requête précédente suppose que le bucket _Default se trouve dans la région global.

Impossible d'enregistrer une requête

Vous souhaitez enregistrer votre requête actuelle. Vous l'exécutez, puis cliquez sur Enregistrer, mais l'option Enregistrer la requête est désactivée ou vous ne pouvez pas suivre les étapes de la boîte de dialogue.

Lorsque l'option Enregistrer la requête est désactivée, les paramètres de ressources par défaut de votre organisation ou de votre dossier définissent un emplacement qui n'est pas 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 Configurer les paramètres par défaut pour les organisations et les dossiers.

Si l'option Enregistrer la requête est activée, mais que vous ne parvenez pas à remplir la boîte de dialogue et à enregistrer la requête, procédez comme suit :

  1. Assurez-vous que la requête ne contient pas d'erreurs de syntaxe. Vous ne pouvez enregistrer que les requêtes valides.
  2. Facultatif : Copiez la requête dans le presse-papiers.
  3. Actualisez la page.
  4. Si vous avez copié la requête dans le presse-papiers, collez-la dans le volet Requête, exécutez-la, puis enregistrez-la.

Impossible de créer une vue analytique

Vous souhaitez créer une vue analytique. Vous saisissez et exécutez une requête SQL, puis vous cliquez sur Enregistrer, mais l'option Enregistrer en tant que vue analytique est désactivée.

Pour résoudre ce problème, assurez-vous que vos rôles IAM incluent les autorisations suivantes :

  • observability.analyticsViews.{get, list, create, update, delete}

Ces autorisations ne sont incluses dans aucun rôle Cloud Logging prédéfini. Pour en savoir plus sur les rôles requis, consultez Créer et interroger des vues analytiques : avant de commencer.

Impossible d'interroger une vue Analytics

Vous souhaitez interroger une vue Analytics, mais le volet Vues de la page Analyse de journaux n'affiche aucune vue Analytics.

Pour résoudre ce problème, procédez comme suit :

  • Assurez-vous que vos rôles IAM incluent les autorisations suivantes :

    • observability.analyticsViews.{get, list}

    Ces autorisations ne sont incluses dans aucun rôle Cloud Logging prédéfini. Pour en savoir plus sur les rôles requis, consultez Créer et interroger des vues analytiques : avant de commencer.

  • Assurez-vous que des vues Analytics existent dans votre projet Google Cloud .

Accès refusé à la page Analyse de journaux

Vous ouvrez la page Analyse de journaux dans la console Google Cloud et un message d'erreur "Autorisation refusée" s'affiche.

Pour obtenir les autorisations nécessaires pour charger la page Log Analytics, exécuter des requêtes et afficher les journaux, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :

Vous pouvez également obtenir les autorisations requises grâce aux rôles personnalisés ou aux rôles prédéfinis de journalisation.

Les autorisations dont vous avez besoin pour afficher les entrées de journal et exécuter des requêtes sur la page Analyse de journaux sont les mêmes que celles dont vous avez besoin 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 Rôles Cloud Logging.

Échec de la mise à niveau d'un bucket de journaux pour utiliser l'Analyse de journaux

Vous créez un bucket de journaux et sélectionnez l'option permettant 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 affiche une erreur semblable à celle-ci :

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 qui peuvent ê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 cette erreur, 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 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 permettant de le supprimer est désactivée.

Pour résoudre cette erreur, 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 Contrôle des accès avec IAM.

Le bouton des paramètres du moteur de requête est manquant

Si le bouton Paramètres  ne s'affiche pas à côté du bouton Exécuter la requête, cela signifie que les emplacements BigQuery réservés ne sont pas activés pour votre projet Google Cloud . Pour activer le bouton 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 journaux référencée par votre requête n'est pas associée à un ensemble de données. Pour exécuter votre requête sur vos réservations de slots BigQuery, créez un ensemble de données BigQuery associé dans votre vue des journaux.

Aucun compte de service Monitoring

Vous souhaitez créer une règle d'alerte pour surveiller les résultats d'une requête SQL. Les étapes de configuration vous ont demandé d'attribuer des rôles IAM au compte de service Monitoring, mais ce compte n'existe pas.

Le compte de service Monitoring est appelé agent de service, car il est créé et géré parGoogle Cloud. Le compte est créé automatiquement lorsque vous configurez une ressource ou un service qui le nécessite. Par exemple, si vous créez un canal de notification Pub/Sub, cela peut entraîner la création du compte de service Monitoring.

Pour créer le compte de service Monitoring et lui accorder les autorisations requises pour les règles d'alerte basées sur SQL, procédez comme suit :

  1. Créez le compte de service Monitoring. Pour en savoir plus, consultez Créer et attribuer des rôles aux agents de service.

  2. Attribuez les rôles suivants au compte de service Monitoring :

Erreur "Autorisation refusée" pour le compte de service Monitoring

Vous souhaitez créer une règle d'alerte pour surveiller les résultats d'une requête SQL. Toutefois, une erreur PermissionDenied s'affiche avec un message commençant par Error authenticating service account.

Pour résoudre ce problème, accordez les rôles suivants au compte de service Monitoring :

Des entrées de journaux en double figurent dans les résultats de l'Analyse de journaux

Vous exécutez une requête qui compte ou signale les 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 l'analyse de journaux déduplique les entrées de journal avant l'exécution d'une requête.

L'analyse de journaux n'effectue pas le même type de déduplication que l'explorateur de journaux.

Pour résoudre les problèmes d'entrées de journaux en double, essayez les solutions suivantes :

  1. Déterminez si les entrées de journaux en double ont des valeurs d'horodatage de réception différentes. Lorsque les codes temporels sont différents, cela indique que les mêmes données ont été écrites plusieurs fois dans Logging.

    Pour résoudre les problèmes d'écritures en double, examinez votre intégration de journalisation pour détecter les messages d'erreur ou les erreurs de configuration.

  2. 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 toujours accessible. Le dépassement du quota ou la perte de l'accès à la clé 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.

  3. Modifiez votre requête pour supprimer les entrées de journal en double.

    Par exemple, supposons que la charge utile JSON contienne fieldA et fieldB, la première étant une chaîne et la seconde un nombre. Supposons également que la charge utile JSON contienne un champ intitulé server, qui contient une chaîne. Ensuite, considérez 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. Pour déterminer si une entrée de journal est un doublon, le nom du journal, le code temporel et l'ID d'insertion sont examinés :

    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;