GSP1250

概览
虽然 BigQuery 提供内置的可观测性功能,例如 INFORMATION_SCHEMA
视图,但详细的日志记录对于深入分析使用情况、审核和排查潜在问题仍然至关重要。启用 Log Analytics 后,您可以使用熟悉的 SQL 查询来查询和分析日志数据,然后查看查询结果或绘制查询结果图表。
BigQuery 是 Google Cloud 的全托管式企业数据仓库,可帮助您使用机器学习、地理空间分析和商业智能等内置功能管理和分析数据。
在本实验中,您将为日志存储桶启用 Log Analytics,然后在 Cloud Logging 中查看 BigQuery 日志。您还将使用 SQL 通过 Log Analytics 来分析日志。
目标
在本实验中,您将学习如何完成以下操作:
- 有效使用 Cloud Logging,获取有关 BigQuery 使用情况的分析洞见。
- 使用 Log Analytics 高效构建和运行 SQL 查询。
- 查看结果并绘制图表。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 Cloud Shell 信息窗口中的设置。
- 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud
的完整文档,请参阅 gcloud CLI 概览指南。
任务 1. 配置日志存储桶
在此任务中,您将配置 Cloud Logging,以升级启用了 Log Analytics 的现有日志存储桶。
如需升级现有存储桶以使用 Log Analytics,请执行以下操作:
- 在 Google Cloud 控制台标题栏的搜索字段中,输入 Logs storage,然后点击搜索结果中的 Logs storage。
“日志存储”页面随即打开。日志存储桶列表中列出了两个存储桶:_Default 和 _Required。
- 对于 _Required 日志存储桶,点击 Log Analytics 可用列下的 Upgrade(升级)。
- 再次点击升级,确认升级以使用 Log Analytics。
- 对 _Default 日志存储桶执行相同的操作。点击 Log Analytics 可用列下的Upgrade(升级)。
- 再次点击升级,确认升级以使用 Log Analytics。
点击检查我的进度,验证已完成以下目标:
升级日志存储桶。
任务 2. 执行 BigQuery 活动
在此任务中,您将生成 BigQuery 日志。为此,您需要使用 BigQuery 命令行工具 bq。
- 在 Cloud Shell 中,输入
bq mk
命令,在您的项目中创建名为 bq_logs 和 bq_logs_test 的新数据集:
bq mk bq_logs
bq mk bq_logs_test
- 输入
bq ls
命令以列出数据集:
bq ls
- 输入
bq rm
命令以删除数据集(出现提示时选择 Y):
bq rm bq_logs_test
- 创建新表
bq mk \
--table \
--expiration 3600 \
--description "This is a test table" \
bq_logs.test_table \
id:STRING,name:STRING,address:STRING
您应该会看到一条成功消息,告知您已为数据集创建了一个名为 test_table 的新空表。
现在运行一些查询来生成日志。
- 在 Cloud Shell 中输入以下查询:
bq query --use_legacy_sql=false 'SELECT current_date'
- 将以下命令粘贴到 Cloud Shell 中:
bq query --use_legacy_sql=false \
'SELECT
gsod2021.date,
stations.usaf,
stations.wban,
stations.name,
stations.country,
stations.state,
stations.lat,
stations.lon,
stations.elev,
gsod2021.temp,
gsod2021.max,
gsod2021.min,
gsod2021.mxpsd,
gsod2021.gust,
gsod2021.fog,
gsod2021.hail
FROM
`bigquery-public-data.noaa_gsod.gsod2021` gsod2021
INNER JOIN
`bigquery-public-data.noaa_gsod.stations` stations
ON
gsod2021.stn = stations.usaf
AND gsod2021.wban = stations.wban
WHERE
stations.country = "US"
AND gsod2021.date = "2021-12-15"
AND stations.state IS NOT NULL
AND gsod2021.max != 9999.9
ORDER BY
gsod2021.min;'
(此查询使用来自美国国家海洋和大气管理局 [NOAA] 的天气数据)
点击检查我的进度,验证已完成以下目标:
执行 BigQuery 活动。
任务 3. 执行日志分析
此任务将分析您在上一个任务中创建的日志数据。
挑战(可选):在运行查询之前,您能预测结果吗?
查询特定操作
分析 BigQuery 使用情况时,一项常见任务是搜索数据集的特定操作。在此任务中,您将查询创建和删除操作。
-
在左侧窗格中,点击 Log Analytics,然后在 Log Analytics 部分中找到查询字段。
-
如需查找创建和删除操作,请在查询字段中输入或粘贴以下查询,然后点击运行查询:
SELECT
timestamp,
severity,
resource.type,
proto_payload.audit_log.authentication_info.principal_email,
proto_payload.audit_log.method_name,
proto_payload.audit_log.resource_name,
FROM
`{{{ project_0.project_id | "Project ID" }}}.global._Required._AllLogs`
WHERE
log_id = 'cloudaudit.googleapis.com/activity'
AND proto_payload.audit_log.method_name LIKE 'datasetservice%'
LIMIT
100
您的查询应输出三个结果。
您还可以使用更具体的条件来限制搜索,例如 method_name = 'datasetservice.delete'。
查询 BigQuery 表的操作
- 如需查找 BigQuery 表的操作,请更改表服务的查询条件。运行此查询,查找对已创建或已删除的表执行的操作:
SELECT
timestamp,
severity,
resource.type,
proto_payload.audit_log.authentication_info.principal_email,
proto_payload.audit_log.method_name,
proto_payload.audit_log.resource_name,
FROM
`{{{ project_0.project_id | "Project ID" }}}.global._Required._AllLogs`
WHERE
log_id = 'cloudaudit.googleapis.com/activity'
AND proto_payload.audit_log.method_name LIKE '%TableService%'
LIMIT
100
此查询会输出一个结果。
- 如需查看已完成的 BigQuery 查询,请根据
jobCompletedEvent
搜索 data_access
日志。例如,运行以下 SQL 查询:
SELECT
timestamp,
resource.labels.project_id,
proto_payload.audit_log.authentication_info.principal_email,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobConfiguration.query.query) AS query,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobConfiguration.query.statementType) AS statementType,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatus.error.message) AS message,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.startTime) AS startTime,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.endTime) AS endTime,
CAST(TIMESTAMP_DIFF( CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.endTime) AS TIMESTAMP), CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.startTime) AS TIMESTAMP), MILLISECOND)/1000 AS INT64) AS run_seconds,
CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.totalProcessedBytes) AS INT64) AS totalProcessedBytes,
CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.totalSlotMs) AS INT64) AS totalSlotMs,
JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.referencedTables) AS tables_ref,
CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.totalTablesProcessed) AS INT64) AS totalTablesProcessed,
CAST(JSON_VALUE(proto_payload.audit_log.service_data.jobCompletedEvent.job.jobStatistics.queryOutputRowCount) AS INT64) AS queryOutputRowCount,
severity
FROM
`{{{ project_0.project_id | "Project ID" }}}.global._Default._AllLogs`
WHERE
log_id = "cloudaudit.googleapis.com/data_access"
AND proto_payload.audit_log.service_data.jobCompletedEvent IS NOT NULL
ORDER BY
startTime
滚动浏览这两个结果,并查看 query 列。其中列出了已完成的 BigQuery 查询。由于查询字符串包含在 SQL 查询中,因此结果可能会很大。
任务 4. 创建图表
Log Analytics 支持创建图表以直观呈现结果,而无需使用表格。
- 在结果视图中,点击图表按钮,
- 选择饼图作为图表类型,并选择query 作为列。
- 您应该会看到类似于下图的图表:

恭喜!
现在,您已经获得了利用 Cloud Logging 和 Log Analytics 构建查询、绘制结果图表以及深入了解 BigQuery 使用情况的实操经验。
后续步骤/了解详情
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 5 月 2 日
上次测试实验的时间:2025 年 5 月 2 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。