监控和日志记录对于在云端运行可靠应用至关重要。BigQuery 工作负载也不例外,尤其是在工作负载量大或工作负载是任务关键型工作负载的情况下。本文档简要介绍了适用于 BigQuery 的监控数据。
指标
指标是定期收集且可用于分析的瞬时数值。您可以使用指标执行以下操作:
- 创建图表和信息中心。
- 针对需要人为干预的重大状况或情况触发提醒。
- 分析历史性能。
对于 BigQuery,可用指标包括正在运行的作业数、查询期间扫描的字节数以及查询时间分布。查询的指标只有在查询成功后才可用,并且最多可能需要 7 分钟才会报告。不会报告失败的查询的指标。如需查看可用指标的完整列表(包括其采样率、可见性和限制),请参阅 Google Cloud 指标下的 bigquery
。
使用 Cloud Monitoring 查看 BigQuery 指标并创建图表和提醒。每个指标都有一个资源类型(即 bigquery_dataset
、bigquery_project
或 global
)和一组标签。使用此信息在 Monitoring Query Language (MQL) 中构建查询。您可以使用标签对每项指标进行分组或过滤。
例如,如需为进行中的交互式查询数量绘制图表,请使用以下 MQL 语句,其按 priority
等于 interactive
进行过滤:
fetch global
| metric 'bigquery.googleapis.com/query/count'
| filter metric.priority = 'interactive'
在下一个示例中,获取正在执行的加载作业数量,并按 10 分钟的间隔进行分组:
fetch bigquery_project
| metric 'bigquery.googleapis.com/job/num_in_flight'
| filter metric.job_type = 'load'
| group_by 10m
如需了解详情,请参阅为 BigQuery 创建图表和提醒。
日志
日志是为响应特定事件或操作而生成的文本记录。BigQuery 会为创建或删除表、购买槽或运行加载作业等操作创建日志条目。如需详细了解 Google Cloud 中的日志记录,请参阅 Cloud Logging。
日志是仅允许附加操作的日志条目集合。例如,您可以将自己的日志条目写入名为 projects/PROJECT_ID/logs/my-test-log
的日志。许多 Google Cloud 服务(包括 BigQuery)都会创建一种称为审核日志的日志。这些日志记录包括:
- 管理活动,如创建或修改资源。
- 数据访问,例如从资源读取用户提供的数据。
- 由 Google 系统(而非用户操作)生成的系统事件。
审核日志采用结构化 JSON 格式编写。Google Cloud 日志条目的基本数据类型是 LogEntry
结构。此结构包含日志的名称、生成日志条目的资源、时间戳和其他基本信息。
所记录事件的详细信息包含在名为载荷字段的子字段中。对于审核日志,载荷字段名为 protoPayload
。此字段的值是一种 AuditLog
结构,由设置为 type.googleapis.com/google.cloud.audit.AuditLog
的 protoPayload.@type
字段值指示。
对数据集、表和作业的操作,BigQuery 目前以两种不同的格式写入审核日志,但两种格式共享 AuditLog
基本类型。
如果是旧版格式:
resource.type
字段为bigquery_resource
。- 系统会将操作的相关详情写入
protoPayload.serviceData
字段。此字段的值是一种AuditData
结构。
如果是新版格式:
resource.type
字段为bigquery_project
或bigquery_dataset
。bigquery_project
资源包含与作业有关的日志条目,而bigquery_dataset
资源则包含与存储空间有关的日志条目。- 系统会将操作的相关详情写入
protoPayload.metadata
字段。此字段的值是一种BigQueryAuditMetadata
结构。
我们建议您使用新版格式日志。如需了解详情,请参阅审核日志迁移指南。
以下是显示失败操作的日志条目的简化示例:
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"status": {
"code": 5,
"message": "Not found: Dataset my-project:my-dataset was not found in location US"
},
"authenticationInfo": { ... },
"requestMetadata": { ... },
"serviceName": "bigquery.googleapis.com",
"methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
"metadata": {
},
"resource": {
"type": "bigquery_project",
"labels": { .. },
},
"severity": "ERROR",
"logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
...
}
对 BigQuery Reservations 的操作,protoPayload
是一种 AuditLog
结构,protoPayload.request
和 protoPayload.response
字段包含更多信息。您可以在 BigQuery Reservations API 中查找字段定义。如需了解详情,请参阅监控 BigQuery Reservations。
INFORMATION_SCHEMA
次浏览
INFORMATION_SCHEMA
视图是 BigQuery 中的另一个数据分析来源,您可以将其与指标和日志结合使用。
这些视图包含有关作业、数据集、表和其他 BigQuery 实体的元数据。例如,您可以获取关于在指定时间段内运行了哪些 BigQuery 作业的实时元数据,然后按项目、用户、引用的表和其他维度对结果进行分组或过滤。
您可以使用此信息对您的 BigQuery 工作负载执行更详细的分析,并回答类似下面的问题:
- 指定项目在过去 7 天内所有查询的平均槽利用率是多少?
- 哪些用户针对指定项目提交了批量加载作业?
- 过去 30 分钟内发生了哪些流式传输错误(按错误代码分组)?
请特别查看作业元数据、流式传输元数据和预留元数据以深入了解 BigQuery 工作负载的性能。
您可以在 GitHub 上找到示例 INFORMATION_SCHEMA
查询,其中显示了组织的槽和预留利用率、作业执行和作业错误。您还可以查看根据这些查询构建的 Google 数据洞察信息中心;请参阅 BigQuery 系统表报告。
如果您有槽预留,则除了编写您自己的查询外,您还可以使用 BigQuery Admin 资源图表来查看显示槽使用情况、作业并发和作业运行时间的图表。如需了解详情,请参阅 BigQuery Admin 资源图表简介(预览)。
后续步骤
- 如需了解如何创建图表和提醒,请参阅为 BigQuery 创建图表和提醒。