查看实例日志

本页介绍如何查找和使用 Cloud Logging 以查看和查询 Cloud SQL 实例的日志。

Cloud SQL 使用 Cloud Logging。如需了解完整信息,请参阅 Cloud Logging 文档并查看 Cloud SQL 示例查询

查看日志

通过启用 general_log 标志并将 log_output 标志设置为 FILE,您可以在常规日志文件中查看对数据库实例执行的 SQL 查询,包括由最终用户直接执行的 SQL 查询。

如需查看 Cloud SQL 实例日志条目的日志,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud Logging 页面。

    转到 Cloud Logging

  2. 在页面顶部选择一个现有 Cloud SQL 项目。
  3. 在查询构建器中,添加以下内容:
    • 资源:选择 Cloud SQL 数据库。在该对话框中,选择一个 Cloud SQL 实例。
    • 日志名称:滚动到 Cloud SQL 部分,并为您的实例选择相应的日志文件。例如:
      • cloudsql.googleapis.com/mysql-general.log
      • cloudsql.googleapis.com/mysql.err
    • 严重程度:选择一个日志级别。
    • 时间范围:选择预设范围或创建自定义范围。

gcloud

使用 gcloud logging 命令查看日志条目。在下面的示例中,替换 PROJECT_IDlimit 标志是一个可选参数,用于指示要返回的最大条目数。

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

查看实例操作日志

您可以在操作窗格中查看实例的日志。操作窗格会将对实例执行的所有操作记录到日志中,并包含以下信息:

  • 操作完成的时间,按照您的本地时区报告。
  • 操作的类型。
  • 操作的状态。
  • 说明操作结果的消息。

如果操作失败,您可以使用该消息来排查问题。

如需查看实例操作日志,请执行以下操作

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击操作切换到显示操作日志的窗格。
注意:操作日志不包含使用外部管理工具(如 mysql 客户端)执行的操作。只有使用 Google Cloud 控制台、gcloud 命令行工具或 Cloud SQL Admin API 执行的用户管理和密码更改操作才会出现在操作日志中。

查看应用日志

连接到 Cloud SQL 的应用会将其日志存储在不同位置。

App Engine(柔性环境)

计算 > App Engine > 服务中:

  • 在服务列表中,找到您的服务。
  • 点击工具下拉菜单。
  • 选择日志

在 Google Cloud 控制台的操作 > Logging > 日志浏览器部分中,使用以下查询:

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

Cloud Run

在 Google Cloud 控制台的 Cloud Run Logs Explorer 部分中查看日志。请注意,Cloud Run 仅报告来自 Cloud SQL 身份验证代理的错误消息。使用如下所示的查询:

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

Cloud SQL Auth 代理

操作 > Logging > 日志浏览器中,使用以下查询:

log_id("appengine.googleapis.com/cloud-sql-proxy")

查看审核日志

您可以查看 Cloud SQL 实例的以下类型的审核日志:

  • 管理员活动:包括写入元数据或配置信息的管理员操作。您无法停用这些日志。
  • 数据访问:包括读取元数据或配置信息的管理员操作。这些日志还包括读取或写入用户提供的数据的操作。如需接收数据访问审核日志,您必须明确启用这些日志
  • 系统事件:标识 Google Cloud 中修改资源配置的自动操作。您无法停用这些日志。

如需详细了解如何查看管理员活动、数据访问和系统事件审核日志,请参阅查看日志

价格

如需详细了解 Cloud Logging 价格,请参阅 Cloud Logging 价格摘要

问题排查

问题 问题排查
未找到审核日志。 只有当操作是经过身份验证的用户进行的 API 调用(用于创建、修改或读取用户创建的数据),或者操作访问配置文件或资源元数据时,才会写入数据访问日志。
在日志中找不到操作信息。 您想要详细了解某项操作。

例如,用户已被删除,但您找不到谁执行了此操作。日志显示操作已开始,但未提供任何更多信息。您必须为要记录的详细个人身份信息 (PII) 等启用审核日志记录

Logging 占用了大量磁盘空间。 有三种类型的日志文件占用磁盘空间:重做日志、常规日志和二进制日志。

连接到数据库并运行以下命令以获取每种类型的详细信息:

SHOW VARIABLES LIKE 'innodb_log_file%';

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

SHOW BINARY LOGS;
    
日志文件难以读取。 最好以 json 或文本形式查看日志。您可以使用 gcloud logging read 命令以及 Linux 后处理命令来下载日志。

如需将日志下载为 JSON,请执行以下操作:

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
    

如需将日志下载为 TEXT,请执行以下操作:

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"| jq -rnc --stream 'fromstream(1|truncate_stream(inputs)) \
| .textPayload' \
--order=asc
> downloaded-log.txt