arrow_back

使用 BigQuery 和 Cloud Logging 分析 BigQuery 使用情况

加入 登录
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

使用 BigQuery 和 Cloud Logging 分析 BigQuery 使用情况

Lab 45 分钟 universal_currency_alt 1 个积分 show_chart 入门级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP617

Google Cloud 自定进度实验

概览

Cloud Logging 是来自各种 Google Cloud 服务(包括 BigQuery)的日志的中央存储库,非常适合进行短期到中期的日志存储。许多行业要求将日志保留更长的时间。为了保留日志来支持更长期的历史分析或复杂的审计,您可以设置一个接收器以将特定日志导出到 BigQuery。

在此实验中,您将在 Cloud Logging 中查看 BigQuery 日志、设置接收器以将其导出到 BigQuery,然后使用 SQL 分析这些日志。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google 控制台。 该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。

    注意:如果您看见选择帐号对话框,请点击使用其他帐号
  3. 如有必要,请从实验详细信息面板复制用户名,然后将其粘贴到登录对话框中。点击下一步

  4. 请从实验详细信息面板复制密码,然后将其粘贴到欢迎对话框中。点击下一步

    重要提示:您必须使用左侧面板中的凭据。请勿使用您的 Google Cloud Skills Boost 凭据。 注意:在本次实验中使用您自己的 Google Cloud 帐号可能会产生额外费用。
  5. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于该帐号为临时帐号,请勿添加帐号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Cloud 控制台。

注意:您可以点击左上角的导航菜单来查看列有 Google Cloud 产品和服务的菜单。 “导航菜单”图标

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 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 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

  2. 现在,输出的内容应如下所示:

输出:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 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 控制台

  1. 在 Google Cloud 控制台中,选择导航菜单 > BigQuery

您会看到欢迎在 Cloud 控制台中使用 BigQuery 消息框,其中提供了指向快速入门指南和版本说明的链接。

  1. 点击完成

BigQuery 控制台即会打开。

任务 2. 创建数据集

  1. 探索器部分,点击以 qwiklabs-gcp- 开头的项目旁边的三个点。

  2. 点击创建数据集

  3. 将“数据库 ID”设置为 bq_logs

  4. 点击创建数据集

点击检查我的进度以验证是否完成了以下目标: 创建数据集

任务 3. 运行查询

首选,运行一个简单查询,这会生成一条日志。后面在设置将日志从 Cloud Logging 导出至 BigQuery 时,您将使用这一条日志。

  1. 请复制以下查询并将其粘贴到 BigQuery 查询编辑器中:
SELECT current_date
  1. 点击运行

任务 4. 设置从 Cloud Logging 导出日志

  1. 在 Cloud 控制台中,选择导航菜单 > Logging > Logs Explorer
注意:如果系统提示工作未保存,请点击“退出”。
  1. 资源中,选择 BigQuery,然后点击应用

  2. 现在点击右上角的运行查询按钮。

此时会显示来自该查询的几条日志。

查找包含“jobcompleted”一词的日志条目。

BigQuery 日志

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

展开的日志以及突出显示的日志条目左侧的箭头

然后点击右侧的展开嵌套字段按钮。

这会显示完整的 JSON 日志条目。向下滚动,查看其不同的字段。

  1. 向上滚动回此日志条目的标题,点击 jobcompleted 并选择显示匹配条目

jobcompleted 日志

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

查询构建器

创建接收器

现在您已得到了所需的日志,该设置接收器了。

  1. 点击更多操作下拉菜单中的创建接收器

突出显示的“创建接收器”选项

  1. 填写各个字段,如下所示:
  • 填写接收器名称:JobComplete,然后点击下一步
  • 选择接收器服务:BigQuery 数据集
  • 选择 BigQuery 数据集(目标位置):bq_logs(即您之前设置的数据集)
  • 将其他选项保留为其默认设置。
  1. 点击创建接收器

来自 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 中查看日志

  1. 回到 BigQuery(导航菜单 > BigQuery)。

  2. 展开名称以 qwiklabs-gcp- 开头的资源,然后展开 bq_logs 数据集。

您应该会看到一个“cloudaudit_googleapis_com_data_access”表,虽然名称可能会略有不同。

注意:您可能需要再次运行示例查询才能看到该表。
  1. 点击表名称,检查表的架构。请注意,该表中可能包含很多字段。

如果您点击了预览但发现最近运行的查询所产生的日志并未出现,这是因为日志是流式传输到表中的,也就是说,新数据可以查询,但需要等一会才会显示在“预览”中。

为了使该表更有用,请创建一个视图,它会拉取表的一部分字段,并执行一些计算来派生出一个有关查询时间的指标。

  1. 点击编写新查询。在 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 中查看日志

  1. 现在查询此视图。编写一个新查询,并运行以下命令:
SELECT * FROM bq_logs.v_querylogs
  1. 滚动浏览所执行查询的结果。

恭喜!

您已成功从 Cloud Logging 将 BigQuery 日志导入到了 BigQuery 表,然后使用 SQL 对其进行了分析。

后续步骤/了解详情

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 2 月 5 日

上次测试实验的时间:2023 年 9 月 27 日

版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。