Journalisation Cloud SQL

Cette page explique comment trouver et utiliser Cloud Logging pour afficher et interroger les journaux de votre instance Cloud SQL.

Cloud SQL utilise Cloud Logging. Consultez la documentation de Cloud Logging pour obtenir des informations complètes et accéder à des exemples de requêtes Cloud SQL.

Afficher les journaux

Vous pouvez afficher les requêtes SQL exécutées sur l'instance de base de données, y compris les requêtes SQL exécutées directement par des utilisateurs finaux, dans le fichier journal général en activant l'option general_log et en définissant l'option log_output sur FILE.

Pour afficher les journaux correspondant aux entrées de journal de votre instance Cloud SQL, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Cloud Logging.

    Accéder à Cloud Logging

  2. Sélectionnez un projet Cloud SQL existant en haut de la page.
  3. Dans le générateur de requêtes, ajoutez les éléments suivants :
    • Ressource : sélectionnez Base de données Cloud SQL. Dans la boîte de dialogue, sélectionnez une instance Cloud SQL.
    • Noms des journaux : faites défiler la page jusqu'à la section Cloud SQL et sélectionnez les fichiers journaux correspondant à votre instance. Par exemple :
      • cloudsql.googleapis.com/mysql-general.log
      • cloudsql.googleapis.com/mysql.err
    • Gravité : sélectionnez un niveau de journalisation.
    • Période : sélectionnez une valeur prédéfinie ou créez une période personnalisée.

gcloud

Exécutez la commande gcloud logging pour afficher les entrées de journal. Dans l'exemple ci-dessous, remplacez PROJECT_ID. L'option limit est un paramètre facultatif qui indique le nombre maximal d'entrées à renvoyer.

gcloud logging read "resource.type=cloudsql_database" \
--project=PROJECT-ID \
--limit=10 \
--format=json

Afficher le journal des opérations de l'instance

Vous pouvez afficher les journaux d'une instance à partir du volet Opérations. Les informations suivantes sont consignées dans le volet Opérations pour chaque opération effectuée sur l'instance :

  • Heure à laquelle l'opération est terminée, indiquée dans votre fuseau horaire local
  • Type d'opération
  • État de l'opération
  • Message décrivant le résultat de l'opération

Si une opération échoue, vous pouvez vous baser sur le message de description du résultat pour identifier et résoudre le problème.

Pour afficher un journal d'opérations d'instance :

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Cliquez sur Opérations pour accéder au volet affichant le journal des opérations.
Remarque : Le journal des opérations n'inclut pas les opérations effectuées à l'aide d'outils de gestion externes, tels que le client MySQL. Seules les opérations de gestion des utilisateurs et de modification du mot de passe effectuées à l'aide de Google Cloud Console, de l'outil de ligne de commande gcloud ou de l'API Cloud SQL Admin apparaissent dans le journal des opérations.

Afficher des journaux d'application

Les applications qui se connectent à Cloud SQL stockent leurs journaux dans différents emplacements.

App Engine (environnement flexible)

Sous Compute > App Engine > Services :

  • Dans la liste des services, recherchez votre service.
  • Cliquez sur le menu déroulant Outils.
  • Sélectionnez journaux.

Dans la section Opérations > Journalisation > Explorateur de journaux de Google Cloud Console, utilisez la requête suivante :

resource.type="gae_app"
resource.labels.module_id="default"

Cloud Run

Affichez les journaux dans la section Explorateur de journaux de Cloud Run dans Google Cloud Console. Notez que Cloud Run ne signale que les messages d'erreur du proxy d'authentification Cloud SQL. Utilisez une requête qui ressemble à ce qui suit :

resource.type="cloud_run_revision"
resource.labels.service_name="$SERVICE_NAME"
resource.labels.revision_name="$REVISION_NAME"

Proxy d'authentification Cloud SQL

Sous Opérations > Journalisation > Explorateur de journaux, utilisez la requête suivante :

log_id("appengine.googleapis.com/cloud_sql_proxy")

Dépannage

Problème Dépannage
La journalisation consomme une grande quantité de processeurs et de mémoire sur votre instance Cloud SQL. Vous devez régler la journalisation.

Vous pouvez définir l'option log_statement sur "aucun" et désactiver l'option logging_collector. Si la journalisation continue, d'autres options liées aux journaux peuvent être réglées. Vous pouvez modifier l'instance afin de changer ces options.

Les journaux d'audit sont introuvables. Les journaux d'accès aux données ne sont écrits que si l'opération est un appel d'API authentifié qui crée, modifie ou lit des données créées par l'utilisateur, ou si l'opération accède à des fichiers de configuration ou à des métadonnées de ressources.
Les informations sur les opérations sont introuvables dans les journaux. Vous souhaitez obtenir davantage d'informations sur une opération.

Par exemple, un utilisateur a été supprimé, mais vous ne pouvez pas savoir qui est à l'origine de cette opération. Les journaux indiquent que l'opération a commencé, mais ne fournissent pas plus d'informations. Pour obtenir des informations détaillées et des informations personnelles telles que celles-ci, vous devez activer la journalisation d'audit.

Certains journaux sont filtrés du journal error.log d'une instance Cloud SQL pour SQL Server. Les journaux filtrés incluent les journaux AD sans horodatage, et incluent les éléments suivants : Login failed for user 'x'. Reason: Token-based server access validation failed with an infrastructure error. Login lacks connect endpoint permission. [CLIENT: 127.0.0.1]. Ces journaux sont filtrés, car ils peuvent prêter à confusion.
La journalisation consomme une grande quantité d'espace disque. Trois types de fichiers journaux utilisent l'espace disque : les journaux de rétablissement, les journaux généraux et les journaux binaires.

Connectez-vous à la base de données et exécutez les commandes suivantes pour en savoir plus sur chaque type:


SHOW VARIABLES LIKE 'innodb_log_file%';

SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2),2)
AS GB from mysql.general_log;

SHOW BINARY LOGS;
    
Les fichiers journaux sont difficiles à lire. Vous préférez afficher les journaux au format JSON ou texte. Pour télécharger les journaux, vous pouvez utiliser la commande gcloud logging read avec les commandes Linux de post-traitement.

Pour télécharger les journaux au format JSON, procédez comme suit :


gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format json \
--project=PROJECT_ID \
--freshness="1d" \
> downloaded-log.json
    

Pour télécharger les journaux au format TEXT, procédez comme suit :


gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format text \
--project=PROJECT_ID \
--freshness="1d"| jq -rnc --stream 'fromstream(1|truncate_stream(inputs)) \
| .textPayload' \
> downloaded-log.txt