使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。
快速入门:使用 Cloud Trace 跟踪应用延迟时间

使用 Cloud Trace 跟踪应用延迟时间

通过执行以下操作了解如何使用 Cloud Trace:

  1. 将示例应用部署到 Google Kubernetes Engine (GKE) 集群。

  2. 通过向示例应用发送 HTTP 请求来创建跟踪记录。

  3. 使用 Cloud Trace 界面查看您创建的跟踪记录的延迟时间信息。

准备工作

如果您的组织将限制应用于您的 Google Cloud 环境,则本文档中的某些步骤可能无法正常工作。在这种情况下,您可能无法完成创建公共 IP 地址或服务帐号密钥等任务。如果您发出的请求会返回有关限制条件的错误,请参阅如何在受限的 Google Cloud 环境中开发应用

创建启用了结算功能的项目:

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

  4. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  5. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

下载并部署您的应用

如需下载和部署应用,请执行以下操作:

  1. 如需打开 Cloud Shell,请点击 Google Cloud 控制台工具栏中的激活 Cloud Shell

    激活 Cloud Shell。

    片刻之后,系统会在 Google Cloud Console 内打开 Cloud Shell 会话。

  2. 如需从 GitHub 下载源代码,请运行以下命令:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  3. 使用以下命令启用 Google Kubernetes Engine API:

    gcloud services enable container.googleapis.com
    
  4. 如需在 us-central1-c 可用区中创建名为 cloud-trace-demo 的 GKE 集群,请在 Cloud Shell 中运行以下命令:

    ZONE=us-central1-c
    gcloud container clusters create cloud-trace-demo \
       --zone $ZONE
    

    此命令需要几分钟才能完成。此命令成功完成后,您的 Google Cloud 项目将包含名为 cloud-trace-demo 的 GKE 集群。您必须拥有在 Google Cloud 项目中创建具有外部访问权限的集群的权限。

  5. 通过运行以下命令来更新 GKE 集群凭据:

    gcloud container clusters get-credentials cloud-trace-demo --zone $ZONE
    
  6. 通过运行以下命令验证对集群的访问权限:

    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
    
  7. 通过运行以下命令部署示例应用:

    cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.sh
    

    脚本 setup.sh 使用预构建映像配置应用的三项服务。工作负载名为 cloud-trace-demo-acloud-trace-demo-bcloud-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. You can access the demo at http://34.82.132.95/
    

创建跟踪记录

跟踪记录会描述应用完成单个操作所需的时间。每条跟踪记录由一个或多个 span 组成。Span 会描述执行完整子操作所需的时间。例如,跟踪记录可能会描述处理用户的传入请求并返回响应所需的时间。Span 可能会描述特定 RPC 调用所需的时长。如需了解详情,请参阅 Cloud Trace 的数据模型

如需通过向 cloud-trace-demo-a 发送 curl 请求来创建跟踪记录,请使用以下命令:

curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')

您可以多次执行 curl 命令以生成多条跟踪记录。

输出如下所示:

Hello, I am service A
And I am service B
Hello, I am service C

查看跟踪记录数据

在 Google Cloud 控制台中,选择 Cloud Trace 或点击以下按钮:

转到 Trace

“概览”窗口

概览窗口是 Trace 中的默认视图。此窗口会显示延迟时间数据和摘要信息,包括分析报告。如果您创建了新项目,Overview 窗口最有趣的窗格是标记为 Recent trace 的窗格:

“近期跟踪记录”窗格,其中显示了最近的跟踪记录及其延迟时间。

此窗格列出了最近的跟踪记录及其延迟时间。如需查看跟踪记录的详细信息,请点击该跟踪记录的链接。

跟踪记录列表窗口

在 Trace 导航窗格中,点击 跟踪记录列表

帮助您快速入门的跟踪记录列表窗口。

此窗口会显示一个图表和一个表。图表上的每个点都代表一条跟踪记录。每个点还对应于表中的一行。在上面的屏幕截图中,系统列出了多条跟踪记录,表明 curl 命令已执行了多次。

要查看详细的跟踪记录,请选择图表中的点或表中的行:

显示五个跨度的瀑布图。

选择一个点后,您会看到一个瀑布图,其中每一行对应一个 span。详情表中显示了该 span 的详细信息,例如其跟踪记录标签、方法以及有关命令延迟时间的摘要信息。如需查看某个 span 的详细信息,请点击瀑布图中的相应行:

有关每个 span 的其他详细信息会显示在详细信息窗格中。

分析报告窗口

如需查看或创建报告,请在 Trace 导航窗格中点击 分析报告。Trace 会自动创建每日报告。对于此项目,没有足够的数据来创建新报告。

关于应用

本快速入门中使用的示例应用可在 GitHub 代码库中找到。此代码库包含有关如何在除 Cloud Shell 之外的环境中使用应用的信息。示例应用使用 Python 编写,使用 Flask 框架和 OpenTelemetry 软件包,并在 Google Kubernetes Engine 集群上执行。

插桩

GitHub 代码库中的文件 app.py 包含捕获跟踪记录数据并将其发送到 Google Cloud 项目所需的插桩:

  • 该应用会导入多个 OpenTelemetry 软件包:

    from opentelemetry import trace
    from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
    from opentelemetry.instrumentation.flask import FlaskInstrumentor
    from opentelemetry.instrumentation.requests import RequestsInstrumentor
    from opentelemetry.propagate import set_global_textmap
    from opentelemetry.propagators.cloud_trace_propagator import CloudTraceFormatPropagator
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
  • 该应用会使用跟踪上下文对 Web 请求进行插桩,并自动跟踪 Flask 处理程序和对其他服务的请求:

    app = flask.Flask(__name__)
    FlaskInstrumentor().instrument_app(app)
    RequestsInstrumentor().instrument()
  • 该应用会将 Cloud Trace 导出器配置为跟踪记录提供程序,然后以 Cloud Trace 格式传播跟踪记录上下文:

    def configure_exporter(exporter):
        set_global_textmap(CloudTraceFormatPropagator())
        tracer_provider = TracerProvider()
        tracer_provider.add_span_processor(BatchSpanProcessor(exporter))
        trace.set_tracer_provider(tracer_provider)
    
    configure_exporter(CloudTraceSpanExporter())
    tracer = trace.get_tracer(__name__)
  • 以下代码段展示了如何使用 Python 发送请求。 OpenTelemetry 会使用传出请求隐式传播跟踪上下文:

    if endpoint is not None and endpoint != "":
        data = {'body': keyword}
        response = requests.get(
            endpoint,
            params=data,
        )
        return keyword + "\n" + response.text
    else:
        return keyword, 200

应用的工作原理

为简洁起见,在此部分中,在服务名称中省略了 cloud-trace-demo。例如,服务 cloud-trace-demo-c 的引用名称为 c

此应用会创建三项服务,其名分别为 abc。服务 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 命令的工作原理如下:

  1. kubectl 会获取名为 cloud-trace-demo-a 的服务的 IP 地址。
  2. 然后,curl 命令会将 HTTP 请求发送到服务 a
  3. 服务 a 会接收 HTTP 请求并向服务 b 发送请求。
  4. 服务 b 会接收 HTTP 请求并向服务 c 发送请求。
  5. 服务 c 从服务 b 接收 HTTP 请求,并将字符串 Hello, I am service C 返回到服务 b
  6. 服务 b 从服务 c 接收响应,将其附加到字符串 And I am service B,并将结果返回给服务 a
  7. 服务 a 从服务 b 接收响应,并将其附加到字符串 Hello, I am service A
  8. 来自服务 a 的响应会输出到 Cloud Shell 中。

清理

为避免因本页中使用的资源导致您的 Google Cloud 帐号产生费用,请按照以下步骤操作。

  • 如果您为本快速入门创建了新的 Google Cloud 项目,请删除该项目以免产生费用。如需删除项目,请执行以下操作:

    1. 在 Google Cloud 控制台中,点击 导航菜单,然后选择首页
    2. 项目信息窗格中,点击转到项目设置
    3. 设置窗口中,点击关闭,然后完成其余步骤。
  • 如果您未在本快速入门中创建新的 Google Cloud 项目,请运行以下命令,删除名为 cloud-trace-demo 的 Google Kubernetes Engine 集群:

    gcloud container clusters delete cloud-trace-demo --zone $ZONE
    

后续步骤