GSP617

概览
Cloud Logging 是来自各种 Google Cloud 服务(包括 BigQuery)的日志的中央存储库,非常适合进行短期到中期的日志存储。许多行业要求将日志保留更长的时间。为了保留日志来支持更长期的历史分析或复杂的审计,您可以设置一个接收器,以便将特定日志导出到 BigQuery。
在此实验中,您将在 Cloud Logging 中查看 BigQuery 日志、设置接收器以将其导出到 BigQuery,然后使用 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. 打开 BigQuery
打开 BigQuery 控制台
- 在 Google Cloud 控制台中,选择导航菜单 > BigQuery。
您会看到欢迎在 Cloud 控制台中使用 BigQuery 消息框,其中提供了指向快速入门指南和版本说明的链接。
- 点击完成。
BigQuery 控制台即会打开。
任务 2. 创建数据集
-
在探索器部分,点击以 qwiklabs-gcp-
开头的项目旁边的三个点。
-
点击创建数据集。
-
将“数据库 ID”设置为 bq_logs。
-
点击创建数据集。
点击检查我的进度以验证是否完成了以下目标:
创建数据集
任务 3. 运行查询
首选,运行一个简单查询,这会生成一条日志。后面在设置将日志从 Cloud Logging 导出至 BigQuery 时,您将使用这一条日志。
- 请复制以下查询并将其粘贴到 BigQuery 查询编辑器中:
SELECT current_date
- 点击运行。
任务 4. 设置从 Cloud Logging 导出日志
- 在 Cloud 控制台中,选择导航菜单 > 查看所有产品 > 日志记录 > Logs Explorer。
注意:如果系统提示工作未保存,请点击“退出”。
-
在所有资源中,选择 BigQuery,然后点击应用。
-
现在点击右上角的运行查询按钮。
此时会显示来自该查询的几条日志。
查找包含“jobcompleted”一词的日志条目。

- 点击左侧的箭头以展开此条目。

然后点击右侧的展开嵌套字段按钮。
这会显示完整的 JSON 日志条目。向下滚动,查看其不同的字段。
- 向上滚动回此日志条目的标题,点击类似条目按钮,然后选择显示类似条目。

这样可便于您使用正确的字词来设置搜索。您可能需要切换显示查询按钮才能看到。

创建接收器
现在您已得到了所需的日志,该设置接收器了。
- 点击更多操作下拉菜单中的创建接收器。

- 填写各个字段,如下所示:
- 填写接收器名称:JobComplete,然后点击下一步。
- 选择接收器服务:BigQuery 数据集
- 选择 BigQuery 数据集(目标位置):bq_logs(即您之前设置的数据集)
- 将其他选项保留为其默认设置。
- 点击创建接收器。
来自 BigQuery 的任何后续日志条目将导出至 bq_logs 数据集的一个表中。
点击检查我的进度以验证是否完成了以下目标:
创建接收器
任务 5. 运行示例查询
为了向您的新表填充一些日志,请运行一些示例查询。
- 转到 Cloud Shell,然后将以下各条 BigQuery 命令添加到 Cloud Shell 中:
bq query --location=us --use_legacy_sql=false --use_cache=false \
'SELECT fullName, AVG(CL.numberOfYears) avgyears
FROM `qwiklabs-resources.qlbqsamples.persons_living`, UNNEST(citiesLived) as CL
GROUP BY fullname'
bq query --location=us --use_legacy_sql=false --use_cache=false \
'select month, avg(mean_temp) as avgtemp from `qwiklabs-resources.qlweather_geo.gsod`
where station_number = 947680
and year = 2010
group by month
order by month'
bq query --location=us --use_legacy_sql=false --use_cache=false \
'select CONCAT(departure_airport, "-", arrival_airport) as route, count(*) as numberflights
from `bigquery-samples.airline_ontime_data.airline_id_codes` ac,
`qwiklabs-resources.qlairline_ontime_data.flights` fl
where ac.code = fl.airline_code
and regexp_contains(ac.airline , r"Alaska")
group by 1
order by 2 desc
LIMIT 10'
您应该会看到每个查询返回的结果。
点击检查我的进度以验证是否完成了以下目标:
运行示例查询
任务 6. 在 BigQuery 中查看日志
-
回到 BigQuery(导航菜单 > BigQuery)。
-
展开名称以 qwiklabs-gcp- 开头的资源,然后展开 bq_logs 数据集。
您应该会看到一个“cloudaudit_googleapis_com_data_access”表,虽然名称可能会略有不同。
注意:您可能需要再次运行示例查询才能看到该表。
- 点击表名称,检查表的架构。请注意,该表中可能包含很多字段。
如果您点击了预览,但发现最近运行的查询所产生的日志并未出现,这是因为日志是流式传输到表中的,也就是说,新数据可以查询,但需要等一会才会显示在“预览”中。
为了使该表更有用,请创建一个视图,它会拉取表的一部分字段,并执行一些计算来派生出一个有关查询时间的指标。
- 点击编写新查询。在 BigQuery 查询编辑器中,将 替换为您的项目的名称并运行以下 SQL 命令(可从实验页面左侧的实验详情页面轻松找到项目 ID):
CREATE OR REPLACE VIEW
bq_logs.v_querylogs AS
SELECT
resource.labels.project_id,
protopayload_auditlog.authenticationInfo.principalEmail,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobConfiguration.query.query,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobConfiguration.query.statementType,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatus.error.message,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.startTime,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.endTime,
TIMESTAMP_DIFF(protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.endTime, protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.startTime, MILLISECOND)/1000 AS run_seconds,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.totalProcessedBytes,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.totalSlotMs,
ARRAY(SELECT as STRUCT datasetid, tableId FROM UNNEST(protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.referencedTables)) as tables_ref,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.totalTablesProcessed,
protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.queryOutputRowCount,
severity
FROM
`<YOUR-PROJECT-ID>.bq_logs.cloudaudit_googleapis_com_data_access_*`
ORDER BY
startTime
点击检查我的进度以验证是否完成了以下目标:
在 BigQuery 中查看日志
- 现在查询此视图。编写一个新查询,并运行以下命令:
SELECT * FROM bq_logs.v_querylogs
- 滚动浏览所执行查询的结果。
恭喜!
您已成功从 Cloud Logging 将 BigQuery 日志导入到了 BigQuery 表,然后使用 SQL 对其进行了分析。
后续步骤/了解详情
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 5 月 31 日
上次测试实验的时间:2024 年 5 月 31 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。