查看应用请求的延迟
了解如何从应用中收集和查看延迟时间数据:
使用 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 探索器页面:
您也可以使用搜索栏查找此页面。
每个跟踪记录都由图表上的一个点和表中的一行表示。
下面的屏幕截图显示了多条跟踪记录:
如需查看详细的跟踪记录,请选择图表中的相应点或表中的相应行。
系统会刷新散点图,并显示您选择的圆点 以圆点为中心的圆圈突出显示 表示所有其他轨迹都处于灰显状态。
甘特图显示有关所选跟踪记录的信息。甘特图中的第一行用于表示跟踪,并且跟踪中的每个 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。