GSP1088
概览
Cloud Logging 是一项全托管式服务,让您能够对来自 Google Cloud 的日志数据和事件进行存储、搜索、分析、监控并设置提醒。在本实验中,您将了解 Cloud Logging 提供的各项功能和工具,以深入了解您的应用。
学习内容
在本实验中,您将学习如何完成以下操作:
- 有效使用 Cloud Logging,并深入了解在 Google Kubernetes Engine (GKE) 上运行的应用。
- 利用 Observability Analytics 有效地构建和运行查询。
本实验中使用的演示版应用
在本实验中,您将基于部署到 GKE 集群的这一微服务演示版应用来完成一个场景。此演示版应用中嵌入了许多微服务和依赖项。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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. 基础设施设置
验证 GKE 集群
连接一个 GKE 集群,并验证该集群是否已正确创建。
- 在 Cloud Shell 中,使用
gcloud 设置可用区:
gcloud config set compute/zone {{{project_0.default_zone|placeholder}}}
- 使用以下命令查看集群的状态:
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 > 集群。
- 当集群状态显示为“正在运行”后,获取集群凭证:
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.
- 验证节点是否已经创建:
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 的微服务应用部署到集群中,以创建一个可供监控的实际工作负载。
- 运行以下命令以克隆此代码库:
git clone https://github.com/GoogleCloudPlatform/microservices-demo.git
- 前往
microservices-demo 目录:
cd microservices-demo
- 使用
kubectl 安装应用:
kubectl apply -f release/kubernetes-manifests.yaml
- 确认一切都在正常运行:
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
- 运行以下命令以获取应用的外部 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
- 最后,确认应用已启动并正在运行:
curl -o /dev/null -s -w "%{http_code}\n" http://${EXTERNAL_IP}
确认信息如下所示:
200
应用部署完成后,您还可以在控制台中查看状态。
-
在 Kubernetes Engine 页面中,点击左侧窗格中的工作负载,查看所有 Pod 是否正常运行。
-
在左侧窗格中,点击 Gateway、Service 和 Ingress,然后点击服务标签页,确认所有服务的状态是否均显示为“正常”。
打开应用
在 Gateway、Service 和 Ingress > 服务页面上,点击 frontend-external 服务的端点 IP。
此时,系统应该会打开一个类似于下图的演示网页:
注意:如果出现提示,您可能需要点击“继续访问网站”按钮。
点击检查我的进度以验证是否完成了以下目标:
部署应用
任务 3. 管理日志存储桶
您可以通过两种方式启用 Observability Analytics。一种方法是升级现有存储桶。另一种方法是创建启用了 Observability Analytics 的新日志存储桶。
升级现有存储桶
您可以按照以下步骤升级现有日志存储桶。
-
在控制台的导航菜单 (
) 中,点击查看所有产品 > 可观测性 > 日志记录。点击收藏,方便稍后在实验中快速访问。
-
点击日志存储。
-
对现有存储桶 Default bucket,点击升级。
-
在确认对话框中点击升级。
-
等待状态变为已升级。
-
点击 打开,然后选择 _AllLogs 视图。
系统会打开“Observability Analytics”页面。
创建新的日志存储桶
您可以按照以下步骤创建新的日志存储桶。
-
在左侧窗格中,点击日志存储,然后点击“日志存储”窗口顶部的创建日志存储桶。
-
为存储桶提供一个名称,例如 day2ops-log。
-
勾选升级以使用 Observability Analytics 和创建关联到此存储桶的新 BigQuery 数据集。
-
输入 BigQuery 数据集名称 day2ops_log。
-
在“区域”字段中,选择全球选项。
勾选“Create a linked dataset in BigQuery”(在 BigQuery 中创建关联的数据集)后,如果 BigQuery 中尚不存在相应数据集,系统会自动为您创建一个。这样您就可以在 BigQuery 中运行查询。
- 点击创建存储桶,即可创建日志存储桶。
点击检查我的进度以验证是否完成了以下目标:
创建日志存储桶
写入新的日志存储桶
您可以通过以下几种方式创建日志接收器,从而将日志条目路由到新的日志存储桶:
- 直接从日志路由器创建。
- 从 Logs Explorer 创建。创建接收器时,您可以运行日志查询来选择和过滤您感兴趣的日志。这种方式的优势在于,日志查询会自动作为过滤条件复制到接收器配置中。
-
点击左侧窗格中的 Logs Explorer。
-
在右上角,启用显示查询,并在查询字段中运行以下查询:
resource.type="k8s_container"
-
点击操作 > 创建接收器。
-
对于接收器名称,请输入 day2ops-sink。
-
点击下一步。
-
在接收器服务下拉列表中选择 Logging 存储桶。
-
选择您刚刚创建的新日志存储桶。
您的新日志存储桶应类似于以下内容:
projects/qwiklabs-gcp-00-xxxxxxx/locations/global/buckets/day2ops-log
- 点击下一步。
您应该会看到资源类型查询已存在于过滤条件中。
- 点击创建接收器。
等待大约一分钟,接收器应该就会创建完毕。
点击检查我的进度以验证是否完成了以下目标:
创建日志接收器
从新日志存储桶中读取
在左侧窗格中,前往 Logs Explorer。请注意,在字段列表的资源类型部分中,日志有许多不同的资源类型。
-
如需查看新日志存储桶中的日志,请在 Logs Explorer 窗口的左上角点击项目日志 > 日志视图 > 新日志存储桶(您刚刚创建的存储桶)。
-
点击应用。
此时您会发现,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 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。