本页介绍如何查找和使用 Cloud Logging 以查看和查询 Cloud SQL 实例的日志。
Cloud SQL 使用 Cloud Logging。如需了解完整信息,请参阅 Cloud Logging 文档并查看 Cloud SQL 示例查询。
查看日志
通过启用general_log
标志并将 log_output
标志设置为 FILE
,您可以在常规日志文件中查看对数据库实例执行的 SQL 查询,包括由最终用户直接执行的 SQL 查询。如需查看 Cloud SQL 实例日志条目的日志,请执行以下操作:
控制台
-
在 Google Cloud 控制台中,转到 Cloud Logging 页面。
- 在页面顶部选择一个现有 Cloud SQL 项目。
- 在查询构建器中,添加以下内容:
- 资源:选择 Cloud SQL 数据库。在该对话框中,选择一个 Cloud SQL 实例。
- 日志名称:滚动到 Cloud SQL 部分,并为您的实例选择相应的日志文件。例如:
- cloudsql.googleapis.com/mysql-general.log
- cloudsql.googleapis.com/mysql.err
- 严重程度:选择一个日志级别。
- 时间范围:选择预设范围或创建自定义范围。
gcloud
使用 gcloud logging
命令查看日志条目。在下面的示例中,替换 PROJECT_ID
。
limit
标志是一个可选参数,用于指示要返回的最大条目数。
gcloud logging read "resource.type=cloudsql_database" \ --project=PROJECT-ID \ --limit=10 \ --format=json
查看实例操作日志
您可以在操作窗格中查看实例的日志。操作窗格会将对实例执行的所有操作记录到日志中,并包含以下信息:
- 操作完成的时间,按照您的本地时区报告。
- 操作的类型。
- 操作的状态。
- 说明操作结果的消息。
如果操作失败,您可以使用该消息来排查问题。
如需查看实例操作日志,请执行以下操作:
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 点击操作切换到显示操作日志的窗格。
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 |