监控 BI Engine
BigQuery BI Engine 与 Google Cloud 服务搭配使用,以帮助监控 BI Engine 的使用情况并进行问题排查。 BigQuery 监控全面支持使用 BigQuery BI Engine 加速功能的 Looker Studio,包括 INFORMATION_SCHEMA、执行图和 Cloud Monitoring 指标。
Cloud Monitoring
BigQuery BI Engine 与 Cloud Monitoring 集成,使您可以监控汇总的 BI Engine 使用情况和配置提醒。如需了解如何使用 Monitoring 创建 BI Engine 指标的信息中心,请参阅 Monitoring 文档中的创建图表。
BigQuery BI Engine 提供以下指标:
资源 | 指标 | 详情 |
---|---|---|
BigQuery 项目 | 预留的总字节数 | 分配给一个 Google Cloud 项目的总容量 |
BigQuery 项目 | 预留的已用字节数 | 一个 Google Cloud 项目中所用的总容量 |
BigQuery 项目 | BI Engine 排名前列的表缓存字节数 | 每个表的缓存用量。此指标显示每个区域报告的前 N 个表使用情况。 |
您可以使用 Cloud Monitoring 查看由 BI Engine 缓存的 Looker Studio 数据源的流量。如需查看可用 Google Cloud 指标的完整列表,请参阅 Google Cloud 指标。
Looker Studio BigQuery 原生集成不提供每个模型的指标。而是使用 BigQuery API 监控功能在 INFORMATION_SCHEMA 表中公开数据源和报告 ID。
BI Engine 的查询统计信息
本部分介绍了如何查找查询统计信息,以帮助监控、诊断 BI Engine 的使用情况并进行问题排查。
BI Engine 加速模式
启用 BI Engine 加速后,您的查询可以在以下四种模式下运行:
BI_ENGINE_DISABLED |
BI Engine 停用了加速模式。biEngineReasons 指定了更详细的原因。该查询使用 BigQuery 执行引擎运行。 |
PARTIAL_INPUT |
部分查询输入已使用 BI Engine 加速。如查询优化和加速中所述,查询计划通常分解为多个输入阶段。BI Engine 支持信息中心中常用的子查询模式类型。如果查询包含多个输入阶段,其中只有部分输入阶段属于受支持的用例,则 BI Engine 会使用常规 BigQuery 引擎运行不受支持的阶段,而不进行加速。在这种情况下,BI Engine 会返回 PARTIAL 加速代码,并使用 biEngineReasons 填充未加速其他输入阶段的原因。 |
FULL_INPUT |
查询的所有输入阶段都使用 BI Engine 进行了加速。 |
FULL_QUERY |
整个查询都使用 BI Engine 进行了加速。 |
查看 BigQuery API 作业统计信息
关于 BI Engine 的详细统计信息可以通过 BigQuery API 获得。
如需提取与 BI Engine 加速查询关联的统计信息,请运行以下 bq 命令行工具命令:
bq show --format=prettyjson -j job_id
如果项目启用了 BI Engine 加速,则输出会生成一个新字段 biEngineStatistics
。下面是一个作业报告示例:
"statistics": {
"creationTime": "1602175128902",
"endTime": "1602175130700",
"query": {
"biEngineStatistics": {
"biEngineMode": "DISABLED",
"biEngineReasons": [
{
"code": "UNSUPPORTED_SQL_TEXT",
"message": "Detected unsupported join type"
}
]
},
如需详细了解 BiEngineStatistics
字段,请参阅作业参考。
BigQuery INFORMATION_SCHEMA 统计信息
BI Engine 加速统计信息包含在 BigQuery INFORMATION_SCHEMA
视图中,位于 INFORMATION_SCHEMA.JOBS_BY_*
视图的 bi_engine_statistics
列中。例如,以下查询返回当前项目在过去 24 小时内所有作业的 bi_engine_statistics
:
SELECT
creation_time,
job_id,
bi_engine_statistics
FROM
`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE
creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
AND CURRENT_TIMESTAMP()
AND job_type = "QUERY"
使用以下格式为 INFORMATION_SCHEMA
视图中的 project-id
、region
和 views
指定区域性:
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.VIEW
查看 Looker Studio 信息架构详细信息
您可以通过查看 INFORMATION_SCHEMA.JOBS
视图来跟踪 BigQuery 使用了哪些 Looker Studio 报告和数据源。启用 BigQuery 原生集成后,每个 Looker Studio 查询都会创建一个带有 report_id
和 datasource_id
标签的条目。打开报告或数据源页面时,这些 ID 会显示在 Looker Studio 网址的末尾。例如,网址为 https://lookerstudio.google.com/navigation/reporting/my-report-id-123
的报告的 ID 为 "my-report-id-123"
。
以下示例展示了如何查看报告和数据源:
查找每个 Looker Studio BigQuery 作业的报告和数据源网址
-- Standard labels used by Looker Studio. DECLARE requestor_key STRING DEFAULT 'requestor'; DECLARE requestor_value STRING DEFAULT 'looker_studio'; CREATE TEMP FUNCTION GetLabel(labels ANY TYPE, label_key STRING) AS ( (SELECT l.value FROM UNNEST(labels) l WHERE l.key = label_key) ); CREATE TEMP FUNCTION GetDatasourceUrl(labels ANY TYPE) AS ( CONCAT("https://lookerstudio.google.com/datasources/", GetLabel(labels, 'looker_studio_datasource_id')) ); CREATE TEMP FUNCTION GetReportUrl(labels ANY TYPE) AS ( CONCAT("https://lookerstudio.google.com/reporting/", GetLabel(labels, 'looker_studio_report_id')) ); SELECT job_id, GetDatasourceUrl(labels) AS datasource_url, GetReportUrl(labels) AS report_url, FROM `region-us`.INFORMATION_SCHEMA.JOBS jobs WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND GetLabel(labels, requestor_key) = requestor_value LIMIT 100;
查看使用报告和数据源生成的作业
-- Specify report and data source id, which can be found in the end of Looker Studio URLs. DECLARE user_report_id STRING DEFAULT '*report id here*'; DECLARE user_datasource_id STRING DEFAULT '*datasource id here*'; -- Standard labels Looker Studio uses in native integration. DECLARE requestor_key STRING DEFAULT 'requestor'; DECLARE requestor_value STRING DEFAULT 'looker_studio'; DECLARE datasource_key STRING DEFAULT 'looker_studio_datasource_id'; DECLARE report_key STRING DEFAULT 'looker_studio_report_id'; CREATE TEMP FUNCTION GetLabel(labels ANY TYPE, label_key STRING) AS ( (SELECT l.value FROM UNNEST(labels) l WHERE l.key = label_key) ); SELECT creation_time, job_id, FROM `region-us`.INFORMATION_SCHEMA.JOBS jobs WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND GetLabel(labels, requestor_key) = requestor_value AND GetLabel(labels, datasource_key) = user_datasource_id AND GetLabel(labels, report_key) = user_report_id ORDER BY 1 LIMIT 100;
Cloud Logging
您可以在 Google Cloud 控制台的 Cloud Logging 页面上查看 BI Engine 的日志信息。查看 BI Engine 的日志信息的方式取决于查询数据的工具:
- 对于未启用 Looker Studio 原生集成的 Looker Studio 查询:您可以在 Cloud Logging 页面上查看载荷为
protoPayload.serviceName="bigquerybiengine.googleapis.com"
的日志信息。 - 对于所有其他流量:您可以在 Cloud Logging 页面上查看载荷为
protoPayload.serviceName="bigquery.googleapis.com"
的日志信息。
后续步骤
- 详细了解 Cloud Monitoring。
- 详细了解如何监控图表。
- 详细了解 Monitoring 提醒。
- 详细了解 Cloud Logging。