查看应用请求的延迟
了解如何从应用中收集和查看延迟时间数据:
使用 Google Cloud CLI 创建 Google Kubernetes Engine (GKE) 集群。
下载示例应用并将其部署到您的集群。
通过向示例应用发送 HTTP 请求来创建跟踪记录。
查看您创建的跟踪记录的延迟时间信息。
清理。
如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示:
准备工作
-
您的组织定义的安全限制条件可能会导致您无法完成以下步骤。如需了解相关问题排查信息,请参阅在受限的 Google Cloud 环境中开发应用。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine and Cloud Trace APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine and Cloud Trace APIs.
创建 GKE 集群
在工具栏中,点击 terminal
激活 Cloud Shell ,然后在 Cloud Shell 中执行以下步骤。创建集群:
gcloud container clusters create cloud-trace-demo --zone us-central1-c
上一个命令(需要几分钟才能完成)会在可用区
us-central1-c
中创建一个名为cloud-trace-demo
的标准集群。将
kubectl
配置为自动刷新其凭据,以使用与 Google Cloud CLI 相同的身份:gcloud container clusters get-credentials cloud-trace-demo --zone us-central1-c
验证对集群的访问权限:
kubectl get nodes
此命令的示例输出如下:
NAME STATUS ROLES AGE VERSION gke-cloud-trace-demo-default-pool-063c0416-113s Ready <none> 78s v1.22.12-gke.2300 gke-cloud-trace-demo-default-pool-063c0416-1n27 Ready <none> 79s v1.22.12-gke.2300 gke-cloud-trace-demo-default-pool-063c0416-frkd Ready <none> 78s v1.22.12-gke.2300
下载和部署应用
下载并部署使用 Flask 框架和 OpenTelemetry 软件包的 Python 应用。本页的关于该应用部分介绍了该应用。
在 Cloud Shell 中,执行以下操作:
如需从 GitHub 克隆 Python 应用,请运行以下命令:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
运行以下命令以部署示例应用:
cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.sh
脚本
setup.sh
需要几分钟才能完成。该脚本使用预构建的映像配置三项服务,然后等待所有资源预配完成。工作负载分别命名为
cloud-trace-demo-a
、cloud-trace-demo-b
和cloud-trace-demo-c
。此命令的示例输出如下:
deployment.apps/cloud-trace-demo-a is created service/cloud-trace-demo-a is created deployment.apps/cloud-trace-demo-b is created service/cloud-trace-demo-b is created deployment.apps/cloud-trace-demo-c is created service/cloud-trace-demo-c is created Wait for load balancer initialization complete...... Completed.
创建跟踪记录数据
跟踪记录会描述应用完成单个操作所需的时间。
如需创建跟踪记录,请在 Cloud Shell 中运行以下命令:
curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
上述命令的响应如下所示:
Hello, I am service A
And I am service B
Hello, I am service C
您可以多次执行 curl
命令以生成多条跟踪记录。
查看延迟时间数据
-
在 Google Cloud 控制台中,转到 Trace 探索器页面:
您也可以使用搜索栏查找此页面。
以下屏幕截图显示了多次运行
curl
命令的结果。该图表会显示 span 的汇总延迟时间数据,这些 span 描述了跟踪记录子操作。 如需查看详细的跟踪记录,请选择图表中的相 span 或表中的相应行。
系统随即会打开轨迹详情对话框,如下方屏幕截图所示:
甘特图显示有关所选跟踪记录的信息。甘特图中的第一行用于表示跟踪记录,后续的每一行表示跟踪中的某个 span。
如需查看有关 span 的详细信息,请在甘特图中选择该 span。
关于应用
本快速入门中使用的示例应用可在 GitHub 代码库中找到。此代码库包含有关如何在除 Cloud Shell 之外的环境中使用应用的信息。示例应用用 Python 编写、使用 Flask 框架和 OpenTelemetry 软件包,并在 GKE 集群上执行。
插桩
GitHub 代码库中的文件 app.py
包含捕获跟踪记录数据并将其发送到您的 Google Cloud 项目所需的插桩:
该应用会导入多个 OpenTelemetry 软件包:
应用使用跟踪上下文插桩 Web 请求,并自动跟踪 Flask 处理程序和对其他服务的请求:
应用将 Cloud Trace 导出器配置为跟踪提供程序,该提供程序会以 Cloud Trace 格式传播跟踪上下文:
以下代码段展示了如何在 Python 中发送请求。OpenTelemetry 会通过您的出站请求隐式传播轨迹上下文:
应用的工作原理
为简洁起见,在此部分中,在服务名称中省略了 cloud-trace-demo
。例如,服务 cloud-trace-demo-c
的引用名称为 c
。
此应用会创建三项服务,其名分别为 a
、b
和 c
。服务 a
配置为调用服务 b
,服务 b
配置为调用服务 c
。如需详细了解这些服务的配置,请参阅 GitHub 代码库中的 YAML 文件。
在本快速入门中,当您向服务 a
发出了 HTTP 请求后,请使用以下 curl
命令:
curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
curl
命令的工作原理如下:
kubectl
会获取名为cloud-trace-demo-a
的服务的 IP 地址。- 然后,
curl
命令会将 HTTP 请求发送到服务a
。 - 服务
a
会接收 HTTP 请求并向服务b
发送请求。 - 服务
b
会接收 HTTP 请求并向服务c
发送请求。 - 服务
c
会接收来自服务b
的 HTTP 请求,并将字符串Hello, I am service C
返回给服务b
。 - 服务
b
会接收来自服务c
的响应,将其附加到字符串And I am service B
,然后将结果返回给服务a
。 - 服务
a
会接收来自服务b
的响应,并将其附加到字符串Hello, I am service A
。 - 来自服务
a
的响应会输出到 Cloud Shell 中。
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
如果您创建了一个新项目,但不再需要该项目,请删除该项目。
如果您使用的是现有项目,请执行以下操作:
如需删除集群,请在 Cloud Shell 中运行以下命令:
gcloud container clusters delete cloud-trace-demo --zone us-central1-c
后续步骤
- 如需详细了解支持的语言和平台,请参阅 Cloud Trace 概览。
如需详细了解如何对应用进行插桩处理,请参阅:
如需详细了解 Trace Explorer 窗口,请参阅查找和查看跟踪记录。
如需详细了解如何管理 GKE 集群,请参阅 kubectl。