GSP617
![Google Cloud 自学实验的徽标](https://cdn.qwiklabs.com/GMOHykaqmlTHiqEeQXTySaMXYPHeIvaqa2qHEzw6Occ%3D)
概览
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
。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
Your Cloud Platform project in this session is set to YOUR_PROJECT_ID
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = <project_ID>
输出示例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Note: For full documentation of gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
任务 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”一词的日志条目。
![BigQuery 日志](https://cdn.qwiklabs.com/3P1wbCo0ts2Wgs424mzRFGjOc6Pj%2BayjSrJJmaxPgEg%3D)
- 点击左侧的箭头以展开此条目。
![展开的日志以及突出显示的日志条目左侧的箭头](https://cdn.qwiklabs.com/8uDpeQAIbInlYnGV8BOISnTb8gF2dK8f1pE%2Bp2S8oaU%3D)
然后点击右侧的展开嵌套字段按钮。
这会显示完整的 JSON 日志条目。向下滚动,查看其不同的字段。
- 向上滚动回此日志条目的标题,点击类似条目按钮,然后选择显示类似条目。
![jobcompleted 日志](https://cdn.qwiklabs.com/0E2EdCxr0FlL9lZEth0mY7zjfVquiAqU%2Bl43R4fjbjM%3D)
这样可便于您使用正确的字词来设置搜索。您可能需要切换显示查询按钮才能看到。
![查询构建器](https://cdn.qwiklabs.com/E%2FYaW29E8iZZkpOXHNdwbzqnQJMwnWlq9VEM3f5Ob2A%3D)
创建接收器
现在您已得到了所需的日志,该设置接收器了。
- 点击更多操作下拉菜单中的创建接收器。
![突出显示的“创建接收器”选项](https://cdn.qwiklabs.com/b%2B0RFe5fogdfK90OLueNdLV%2BLOHlp3AtgWDGXvD2wsI%3D)
- 填写各个字段,如下所示:
- 填写接收器名称: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 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。