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

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égion global.

Impossible d'enregistrer une requête

Si vous saisissez et exécutez une requête SQL et que l'option 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 page Configurer les paramètres par défaut pour les organisations et les dossiers.

Si 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:

  1. Assurez-vous que la requête ne contient pas d'erreurs de syntaxe. Vous ne pouvez enregistrer que des 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 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:

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 (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 (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:

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

  2. 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:

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

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

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

    Par exemple, supposons que la charge utile JSON contient fieldA et fieldB, 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;