Deploy application

检查我的进度

/ 50

Create a Log bucket

检查我的进度

/ 25

create the log sink

检查我的进度

/ 25

此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP1088

Google Cloud 自学实验

概览

Cloud Logging 是一项全托管式服务,让您能够对来自 Google Cloud 的日志数据和事件进行存储、搜索、分析、监控并设置提醒。在本实验中,您将了解 Cloud Logging 提供的各项功能和工具,以深入了解您的应用。

学习内容

在本实验中,您将学习如何完成以下操作:

  • 有效使用 Cloud Logging,并深入了解在 Google Kubernetes Engine (GKE) 上运行的应用。
  • 利用 Observability Analytics 有效地构建和运行查询。

本实验中使用的演示版应用

在本实验中,您将基于部署到 GKE 集群的这一微服务演示版应用来完成一个场景。此演示版应用中嵌入了许多微服务和依赖项。

展示许多微服务及其依赖项的图表

设置和要求

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

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

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

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

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

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。右侧是实验设置和访问权限面板,其中包含以下内容:

    • 打开 Google Cloud 控制台按钮
    • 您在本实验中必须使用的临时凭证(用户名和密码)
    • 帮助您逐步完成该实验所需的其他信息(如果需要)

    请注意,实验计时器位于页面顶部附近,将显示剩余时间。

  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:可以将这些标签页分别放在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验设置和访问权限面板中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验设置和访问权限面板中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭证。请勿使用您的 Google Cloud 账号凭证。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 依次点击进入后续页面:

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

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

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

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

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 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 自动补全功能。

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

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

任务 1. 基础设施设置

验证 GKE 集群

连接一个 GKE 集群,并验证该集群是否已正确创建。

  1. 在 Cloud Shell 中,使用 gcloud 设置可用区:
gcloud config set compute/zone {{{project_0.default_zone|placeholder}}}
  1. 使用以下命令查看集群的状态:
gcloud container clusters list

您应该会看到类似如下所示的状态:

NAME: day2-ops LOCATION: us-west1 MASTER_VERSION: 1.31.5-gke.1023000 MASTER_IP: 34.169.197.173 MACHINE_TYPE: e2-standard-2 NODE_VERSION: 1.31.5-gke.1023000 NUM_NODES: 3 STATUS: RUNNING

集群状态应显示为“正在运行”。如果状态仍为“正在预配”,请稍等片刻,然后再次运行上述命令。重复运行命令,直到状态显示为“正在运行”。

您还可以在 Google Cloud 控制台中查看进度。在导航菜单 (“导航菜单”图标) 中,点击 Kubernetes Engine > 集群

  1. 当集群状态显示为“正在运行”后,获取集群凭证:
gcloud container clusters get-credentials day2-ops --region {{{project_0.default_region|placeholder}}}

输出的内容应如下所示:

Fetching cluster endpoint and auth data. kubeconfig entry generated for day2-ops.
  1. 验证节点是否已经创建:
kubectl get nodes

输出的内容应如下所示:

NAME STATUS ROLES AGE VERSION gke-day2-ops-day2-ops-node-pool-0d9c7ef3-xc44 Ready <none> 11m v1.31.5-gke.1023000 gke-day2-ops-day2-ops-node-pool-b17ac6d6-tch7 Ready <none> 11m v1.31.5-gke.1023000 gke-day2-ops-day2-ops-node-pool-ed506ae8-wsc5 Ready <none> 11m v1.31.5-gke.1023000

任务 2. 部署应用

接下来,将一个名为 Online Boutique 的微服务应用部署到集群中,以创建一个可供监控的实际工作负载。

  1. 运行以下命令以克隆此代码库:
git clone https://github.com/GoogleCloudPlatform/microservices-demo.git
  1. 前往 microservices-demo 目录:
cd microservices-demo
  1. 使用 kubectl 安装应用:
kubectl apply -f release/kubernetes-manifests.yaml
  1. 确认一切都在正常运行:
kubectl get pods

输出应类似以下内容。重新运行该命令,直到所有 Pod 都显示为“正在运行”状态,然后再继续执行下一步。

NAME READY STATUS RESTARTS AGE adservice-55f94cfd9c-4lvml 1/1 Running 0 20m cartservice-6f4946f9b8-6wtff 1/1 Running 2 20m checkoutservice-5688779d8c-l6crl 1/1 Running 0 20m currencyservice-665d6f4569-b4sbm 1/1 Running 0 20m emailservice-684c89bcb8-h48sq 1/1 Running 0 20m frontend-67c8475b7d-vktsn 1/1 Running 0 20m loadgenerator-6d646566db-p422w 1/1 Running 0 20m paymentservice-858d89d64c-hmpkg 1/1 Running 0 20m productcatalogservice-bcd85cb5-d6xp4 1/1 Running 0 20m recommendationservice-685d7d6cd9-pxd9g 1/1 Running 0 20m redis-cart-9b864d47f-c9xc6 1/1 Running 0 20m shippingservice-5948f9fb5c-vndcp 1/1 Running 0 20m
  1. 运行以下命令以获取应用的外部 IP。
export EXTERNAL_IP=$(kubectl get service frontend-external -o jsonpath="{.status.loadBalancer.ingress[0].ip}") echo $EXTERNAL_IP

只有在部署服务后,系统才会返回 IP 地址。您可能需要重复运行此命令,直至系统分配外部 IP 地址。

分配 IP 地址后,输出应类似于以下内容:

35.222.235.86
  1. 最后,确认应用已启动并正在运行:
curl -o /dev/null -s -w "%{http_code}\n" http://${EXTERNAL_IP}

确认信息如下所示:

200

应用部署完成后,您还可以在控制台中查看状态。

  1. 在 Kubernetes Engine 页面中,点击左侧窗格中的工作负载,查看所有 Pod 是否正常运行。

  2. 在左侧窗格中,点击 Gateway、Service 和 Ingress,然后点击服务标签页,确认所有服务的状态是否均显示为“正常”。

打开应用

Gateway、Service 和 Ingress > 服务页面上,点击 frontend-external 服务的端点 IP。

此时,系统应该会打开一个类似于下图的演示网页:

注意:如果出现提示,您可能需要点击“继续访问网站”按钮。 “演示版应用”网页

点击检查我的进度以验证是否完成了以下目标: 部署应用

任务 3. 管理日志存储桶

您可以通过两种方式启用 Observability Analytics。一种方法是升级现有存储桶。另一种方法是创建启用了 Observability Analytics 的新日志存储桶。

升级现有存储桶

您可以按照以下步骤升级现有日志存储桶。

  1. 在控制台的导航菜单 (“导航菜单”图标) 中,点击查看所有产品 > 可观测性 > 日志记录。点击收藏,方便稍后在实验中快速访问。

  2. 点击日志存储

  3. 对现有存储桶 Default bucket,点击升级

  4. 在确认对话框中点击升级

  5. 等待状态变为已升级

  6. 点击 打开,然后选择 _AllLogs 视图。

系统会打开“Observability Analytics”页面。

创建新的日志存储桶

您可以按照以下步骤创建新的日志存储桶。

  1. 在左侧窗格中,点击日志存储,然后点击“日志存储”窗口顶部的创建日志存储桶

  2. 为存储桶提供一个名称,例如 day2ops-log

  3. 勾选升级以使用 Observability Analytics创建关联到此存储桶的新 BigQuery 数据集

  4. 输入 BigQuery 数据集名称 day2ops_log

  5. 在“区域”字段中,选择全球选项。

勾选“Create a linked dataset in BigQuery”(在 BigQuery 中创建关联的数据集)后,如果 BigQuery 中尚不存在相应数据集,系统会自动为您创建一个。这样您就可以在 BigQuery 中运行查询。

  1. 点击创建存储桶,即可创建日志存储桶。

点击检查我的进度以验证是否完成了以下目标: 创建日志存储桶

写入新的日志存储桶

您可以通过以下几种方式创建日志接收器,从而将日志条目路由到新的日志存储桶:

  • 直接从日志路由器创建。
  • Logs Explorer 创建。创建接收器时,您可以运行日志查询来选择和过滤您感兴趣的日志。这种方式的优势在于,日志查询会自动作为过滤条件复制到接收器配置中。
  1. 点击左侧窗格中的 Logs Explorer

  2. 在右上角,启用显示查询,并在查询字段中运行以下查询:

resource.type="k8s_container"
  1. 点击操作 > 创建接收器

  2. 对于接收器名称,请输入 day2ops-sink

  3. 点击下一步

  4. 在接收器服务下拉列表中选择 Logging 存储桶

  5. 选择您刚刚创建的新日志存储桶。

您的新日志存储桶应类似于以下内容:

projects/qwiklabs-gcp-00-xxxxxxx/locations/global/buckets/day2ops-log
  1. 点击下一步

您应该会看到资源类型查询已存在于过滤条件中。

  1. 点击创建接收器

等待大约一分钟,接收器应该就会创建完毕。

点击检查我的进度以验证是否完成了以下目标: 创建日志接收器

从新日志存储桶中读取

在左侧窗格中,前往 Logs Explorer。请注意,在字段列表的资源类型部分中,日志有许多不同的资源类型。

  1. 如需查看新日志存储桶中的日志,请在 Logs Explorer 窗口的左上角点击项目日志 > 日志视图 > 新日志存储桶(您刚刚创建的存储桶)

  2. 点击应用

此时您会发现,Kubernetes 容器已成为唯一的资源类型,且日志条目也随之减少了。这是因为只有符合过滤条件的日志才会被发送到该存储桶中。

任务 4. 日志分析

  • 在左侧窗格中,点击 Observability Analytics 即可打开 Observability Analytics 页面。

如果查询字段为空,或者您忘记了要使用哪个表,只需点击运行查询按钮,即可找回示例查询。

您可以在查询字段中运行自定义查询。此任务提供了一些示例。

重要提示:FROM 子句中的日志视图名称因日志存储桶而异。请务必使用正确的视图名称。您可以利用上一步进行验证。

用于查找最短、最长和平均延迟时间的示例查询

在右侧窗格中,选择 <> SQL。点击清除按钮,移除查询编辑器中的所有现有内容。将查询粘贴到编辑器中,然后点击运行查询,以检索容器中的最新错误。

使用该查询查找前端服务在某个时段内的最短、最长和平均延迟时间:

SELECT hour, MIN(took_ms) AS min, MAX(took_ms) AS max, AVG(took_ms) AS avg FROM ( SELECT FORMAT_TIMESTAMP("%H", timestamp) AS hour, CAST( JSON_VALUE(json_payload, '$."http.resp.took_ms"') AS INT64 ) AS took_ms FROM `{{{project_0.project_id | "PROJECT_ID"}}}.global.day2ops-log._AllLogs` WHERE timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR) AND json_payload IS NOT NULL AND SEARCH(labels, "frontend") AND JSON_VALUE(json_payload.message) = "request complete" ORDER BY took_ms DESC, timestamp ASC ) GROUP BY 1 ORDER BY 1

用于查找商品页面访问次数的示例查询

使用该查询查找过去一小时内用户访问特定产品页面的次数:

SELECT count(*) FROM `{{{project_0.project_id | "PROJECT_ID"}}}.global.day2ops-log._AllLogs` WHERE text_payload like "GET %/product/L9ECAV7KIM %" AND timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)

用于查找以购物车结账结束的会话数量的示例查询

使用该查询查找有多少会话最终以结账告终(即对 /cart/checkout 服务进行 POST 调用):

SELECT JSON_VALUE(json_payload.session), COUNT(*) FROM `{{{project_0.project_id | "PROJECT_ID"}}}.global.day2ops-log._AllLogs` WHERE JSON_VALUE(json_payload['http.req.method']) = "POST" AND JSON_VALUE(json_payload['http.req.path']) = "/cart/checkout" AND timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) GROUP BY JSON_VALUE(json_payload.session)

恭喜!

现在,您已经了解了如何使用 Cloud Logging 深入了解在 GKE 上运行的应用,并使用 Observability Analytics 构建和运行了查询。

Google Cloud 培训和认证

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

上次更新手册的时间:2026 年 8 月 6 日

上次测试实验的时间:2026 年 8 月 6 日

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

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。