注意:此产品的某些方面处于 Beta 版阶段。Hybrid 安装选项是 GA。要加入 Beta 版计划,请与您的 Apigee 代表联系。

使用 Trace

本部分介绍如何创建和管理调试会话,以及如何使用 Apigee 界面和 API 查看请求以及响应数据。

使用离线跟踪查看和分析之前下载的跟踪会话。

创建调试会话

创建调试会话时,您可以在界面中查看请求和响应数据(仅针对在界面、API 或其他外部来源中创建的请求)。在后台,跟踪记录还会记录并非由界面发起的请求的数据。

使用 Apigee 界面或 API 创建调试会话,如以下部分所述。

Apigee 界面

如需在 Apigee 界面中创建调试会话,请执行以下操作:

  1. 登录 Apigee 界面
  2. 从主视图中选择 API 代理
  3. 选择您要调试的 API 代理。

    此时将显示概览标签页。

  4. 点击页面右上角的跟踪记录标签:

    标签

    跟踪记录视图显示:

    包含“启动跟踪”会话、“最新跟踪”会话和“发送请求”窗格的 Trace 视图

  5. 启动跟踪会话面板中:
    1. 环境变量下拉列表中,选择要调试的 API 代理的环境和修订版本号。
    2. 以下示例展示了启动跟踪会话面板:

      启动跟踪会话窗格

    3. (可选)从过滤条件下拉列表中,选择一个过滤条件以应用于您要创建的调试会话中的所有事务。默认值为 None,其中包含跟踪记录数据中的所有事务。

      如需了解如何使用过滤条件,请参阅在调试会话中使用过滤条件。如需了解内置过滤条件,请参阅使用预定义的过滤条件

    4. 点击启动跟踪会话

      Apigee 界面现在会在跟踪记录详情面板中显示有关当前跟踪会话的详细信息,包括其 ID。

      虽然界面创建了调试会话,但您仍需要发送请求才能收集数据。

      跟踪记录详情面板中,您可以执行以下操作:

      图标 函数 说明
      “下载”图标 下载 下载活跃会话的跟踪记录数据,然后您就可以离线观看
      “返回”图标 返回 返回上一个面板,您可以在其中启动另一个调试会话。当前调试会话会一直持续到达到其超时或事务计数。
      “删除”图标 删除 删除当前选定的调试会话的数据。这将删除会话的数据,但不会停止会话。

      您在界面中启动的跟踪会话的默认超时上限为 10 分钟(通过 API 启动的会话不同)。

      点击启动跟踪会话后,时钟开始运行,因此您可以选择等到下一个步骤之后再点击启动跟踪会话,以最大化您收集的数据量。

  6. 请求/响应面板中:
    1. 网址字段中,输入要向其发送请求的端点。(可选)将查询字符串参数附加到网址。您不能提交 GET 以外的请求。
    2. 请求/响应面板仅显示基于界面的请求的数据。但请注意,该跟踪记录还会记录并非由界面启动的请求的数据。

    3. 点击发送

      Apigee 向指定网址发送请求。每次点击发送时,Apigee 界面都会将请求记录在跟踪记录详情面板中。

      以下示例展示了几个成功的请求(导致 HTTP 状态代码为 200):

      捕获的跟踪记录请求

      点击复制以复制跟踪记录 ID 供日后参考或查询。

      此外,界面会在请求/响应面板的事务映射和阶段详情部分显示跟踪记录数据,并填充代理端点、请求标头、请求内容和属性部分,如以下示例所示:

      捕获的跟踪记录请求

      如需详细了解请求/响应视图的阶段、事务映射和其他部分,请参阅如何读取跟踪记录

    调试会话现已处于活跃状态,并记录所有请求的相关数据(除非它们被过滤掉)。会话会一直保持活动状态,直到达到超时或超过会话所记录的请求数量。

  7. 您可以在界面中创建任意数量的调试会话。如需了解详情,请参阅启动另一个调试会话

在界面中启动另一个调试会话

在主动调试会话期间,您可以在 Apigee 界面中启动另一个会话。为此,请点击 Trace 详情面板中的返回箭头图标 ():

返回箭头返回“启动跟踪会话”面板

界面将返回到启动跟踪会话面板,您可以在其中启动新的调试会话。

Apigee API

要使用 API 创建调试会话,请向以下资源发出 POST 请求:

https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/apis/$API/revisions/$REV/debugsessions

您也可以:

以下示例演示了如何使用 API 创建调试会话。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions" \
  -X POST \
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

以下提供了一个响应示例:

{
  "name":"56382416-c4ed-4242-6381-591bbf2788cf",
  "validity":300,
  "count":10,
  "tracesize":5120,
  "timeout":"600"
}

系统会评估对 API 代理的后续请求(直到达到会话时长或最大请求数),并可能存储在调试会话数据中。

如需了解详情,请参阅创建调试会话 API

使用 API 设置调试会话的长度

要使用 API 设置调试会话的长度,请在调试会话创建请求中添加以下载荷:

{
  "timeout":"debug_session_length_in_seconds"
}

以下示例创建了一个仅 42 秒的调试会话:

curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/apis/$API/revisions/$REV/debugsessions
  -X "POST" \
  -H "Authorization: Bearer $TOKEN" \
  -d ' {
    "timeout":"42"
  } '

您只能在调试会话创建请求中设置会话的 timeout;创建会话后,您无法更改会话的持续时间。

timeout 的默认值为 300 秒(5 分钟)。最大值为 600 秒(10 分钟)。

调试会话何时结束?

您无法轻易地停止有效的调试会话。但是,您可以按照删除调试会话数据中所述,删除活跃会话的数据。

创建调试会话时,由两个属性决定何时结束:

  • 超时:您在会话期间收集数据的时长。默认长度取决于您启动会话的方式(通过界面或 API)。最大值为 600 秒(或 10 分钟)。
  • 计数每个消息处理器在单个会话中记录的请求数量上限。由于大多数集群中的消息处理器数量是可变的,因此计数的影响可能是不可预测的。Apigee 不建议自定义此设置。

达到超时或计数时,相应消息处理器的调试会话将结束。

以下术语用于描述调试会话的状态:

  • 活跃会话是尚未达到超时限制或超出其计数的调试会话。活跃会话仍在记录未经过滤的请求的请求数据。
  • 已完成的会话是指已经超时或超过其计数的调试会话;完成的会话不会再记录有关新请求的数据,系统会在该会话结束后的 24 小时内删除其数据。

如何读取跟踪记录

跟踪记录工具包含两个主要部分,即事务映射和阶段详情:

  • 事务映射使用图标来标记 API 代理事务期间发生的每个重要步骤,包括政策执行、条件步骤和转换。将鼠标悬停在任何图标上可查看摘要信息。请求流程步骤位于事务映射的顶部,底部是响应流程步骤。
  • 该工具的阶段详情部分列出了代理内部处理的相关信息,包括设置或读取的变量、请求和响应标头等。点击任何图标可查看该步骤的阶段详情

下面是一个已标记主代理处理细分的跟踪记录工具映射示例:

跟踪记录工具的事务映射

显示“开始代理”请求以开始目标响应以开始启动代理响应的跟踪记录图表

事务示意图图例

下表介绍了您将在事务示意图中看到的图标的意图。这些图标标记整个代理流程中每个重要的处理步骤。

事务示意图图标

客户端应用图标 向 API 代理的 ProxyEndpoint 发送请求的客户端应用。
转换端点图标 圆圈在代理流程中标记过渡端点。当请求从客户端传入时、当请求到达目标时、当响应来自目标时以及当响应返回客户端时,都会有圆圈标记。
流程细分图标

高竖条表示 API 代理流程中流程细分的开始。流程细分包括:ProxyEndpoint 请求、TargetEndpoint 请求、TargetEndpoint 响应和 ProxyEndpoint 响应。一个细分包括 PreFlow、条件流程和 PostFlow。

如需了解详情,请参阅配置流程

分析图标

指示已在后台进行 Analytics(分析)操作。

true 条件图标

一个评估为 true 的条件流程。如需了解条件流程的简介,请参阅配置流程

请注意,某些条件是由 Apigee 生成的。例如,以下表达式用于让 Apigee 检查 ProxyEndpoint 是否出现错误:

((error.state equals PROXY_REQ_FLOW) or (error.state equals PROXY_RESP_FLOW))
false 条件图标

计算结果为 false 的条件流程。如需了解条件流程,请参阅配置流程

请注意,某些条件是由 Apigee 生成的。例如,以下表达式是 Apigee 用来检查 TargetEndpoint 中是否出现错误的表达式:

(((error.state equals TARGET_REQ_FLOW) or (error.state equals TARGET_RESP_FLOW)) or ((error.state equals REQ_SENT) or (error.state equals RESP_START)))

从 xml 到 JSON 图标

配额图标

政策。每种类型的政策都有一个唯一的图标。此政策适用于 AssignMessage 政策。通过这些图标,您可以了解政策执行顺序是否正确,以及政策是否成功。您可以点击政策图标以查看其执行结果,以及预期的执行结果。例如,您可以查看消息是否已正确转换或是否正在缓存。

正确执行的政策由对勾标记明确指明。如果发生错误,图标上会显示一个红色感叹号。

服务器图标 API 代理调用的后端目标。
毫秒图标 时间线表示处理完成所需的时间(以毫秒为单位)。比较运行时间细分有助于隔离耗时最长的政策,进而减慢 API 调用速度。
Epsilon 图标 Epsilon 表示时间范围小于 1 毫秒。
“已停用”图标

已停用。当政策处于停用状态时,该政策会显示在政策图标上。可以使用公共 API 停用政策。请参阅 API 代理配置参考

“错误”图标 错误。在“政策步骤”条件评估结果为 false 时,出现在政策图标上(参阅流变量和条件),或在执行 RaiseFault 政策时,出现在 RaiseFault 政策图标上。
“已跳过”图标 已跳过。在政策步骤未执行时,在政策图标上显示为 false。如需了解详情,请参阅流变量和条件

了解阶段详情

该工具的阶段详情部分向您详细介绍了代理在每个处理步骤的状态。以下是“阶段详情”中提供的一些详细信息。点击跟踪记录工具中的任意图标可查看所选步骤的详细信息,也可以使用下一步/返回按钮从一个步骤移动到另一个步骤。

阶段详情 说明
代理端点 指明要执行哪个 ProxyEndpoint。一个 API 代理可以有多个已命名的代理端点。
变量

列出根据政策读取并分配值的流变量,另请参阅使用流变量

注意

  • 等号 (=) 表示分配给变量的值。
  • 不等号 (≠) 表示无法为变量分配值,因为它是在只读或执行政策时出错。
  • 空字段表示已读取变量值。
请求标头 列出 HTTP 请求标头。
请求内容 显示 HTTP 请求正文。
属性 属性表示 API 代理的内部状态。默认情况下,这些列不会显示。
目标端点 指明要执行哪个 TargetEndpoint。
响应标头 列出 HTTP 响应标头。
响应内容 显示 HTTP 响应正文。
PostClientFlow 显示有关 PostClientFlow 的信息,在请求返回到发出请求的客户端应用后执行。只有 MessageLogging 政策可以附加到 PostClientFlow。PostClientFlow 目前主要用于测量响应消息的开始时间戳和结束时间戳之间的时间间隔。

使用 Trace 进行调试

Trace 可以让您查看许多有关 API 代理的内部详细信息。例如:

  • 您可以一目了然地看到哪些政策执行正确或失败。
  • 假设您通过其中一个 Analytics(分析)信息中心注意到您的某个 API 导致性能下降。现在,您可以使用 Trace 来帮助确定瓶颈发生的位置。Trace 提供了完成每个处理步骤所需的时间(以毫秒为单位)。如果您发现一个步骤用时太长,您可以采取纠正措施。
  • 通过查看阶段详情,您可以检查发送到后端的标头、查看由政策设置的变量等。
  • 通过验证基本路径,您可以确保政策将消息路由到正确的服务器。

在调试会话中过滤数据

创建调试会话时,您可以向该会话添加过滤条件,以便 Apigee 仅返回您需要的数据。过滤条件是 Apigee 根据请求和响应消息评估的条件语句,以确定其跟踪记录数据是否应包含在调试会话中。例如,您可以过滤掉 HTTP 响应代码小于 599 的所有请求,或者将请求中的值与自定义变量进行比较。

注意事项:

  • 未包含在调试会话中的请求,不会计入调试会话中的事务数上限,因为这些请求被过滤掉。
  • Apigee 不支持在查询字符串中添加过滤条件。
  • 会话开始后,您无法向调试会话添加过滤条件。如需添加过滤条件,您必须创建一个调试会话。

使用过滤器

使用 Apigee 界面或 API 创建调试会话时,请使用过滤条件,如以下部分所述。

Apigee 界面

当您在界面中创建调试会话时,可以在筛选设置下拉列表中选择要应用预定义筛选设置启动跟踪会话面板或选择自定义过滤器,并使用过滤器语法构建您自己的过滤器。

Apigee API

如需使用 API 创建具有过滤条件的调试会话,请在调试会话创建请求中将以下内容作为载荷添加:

{
  "filter":"filter_body"
}

如需了解如何构建过滤条件,请参阅过滤条件语法

以下示例创建了一个调试会话,其中标头文件 A 等于 42 且标头 B 等于 43,或者错误代码为 ExpectedEOF

curl -H "Authorization: Bearer $TOKEN" -X "POST"
  https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions
  -d ' {
    "filter":"(request.header.A == '42' && request.header.B == '43') || fault.code == 'jsonparser.ExpectedEOF'"
  } '

您只能在调试会话创建请求中定义过滤条件;不能向现有调试会话添加过滤条件,也不能从活跃的调试会话中删除过滤条件。

过滤器语法

过滤条件支持 Apigee 条件使用的语法,如条件参考中所述。包括:

此外,过滤条件可以访问流变量参考中描述的所有流变量以及自定义变量。以下示例展示了可在过滤条件中使用的部分可能流变量:

# Response codes:
  response.status.code <= 599
  response.status.code >=301 &amp;&amp; response.status.code <=420

# Requests/responses:
  request.verb == "GET"
  request.header.A == 'B' || request.queryparam.X == 'Y'

# Query parameters:
  request.queryparam.myparam == 'fish'
  (request.queryparam.param1 == 'X' || request.queryparam.param2 == 'Y') &amp;&amp; request.queryparam.param3 == 'Z'

# Faults:
  fault.code != 'messaging.runtime.RouteFailed'
  fault.name == 'IPDeniedAccess'

如需了解如何使用自定义变量,请参阅 Apigee 社群中的如何在 Apigee Edge 中使用自定义属性

预定义的界面过滤条件

Apigee 界面提供了一组常用的过滤条件,因此您不必编写自己的自定义过滤条件。下表汇总了预定义的过滤条件。

过滤条件名称 说明
Response Time Greater Than

检查下列情况下的延迟时间问题:

  • target.duration目标延迟时间,或请求发送到目标和从目标接收请求所需的时间量(计算为 target.received.end.timestamptarget.sent.start.timestamp 之间的差值)(以毫秒为单位)。
  • client.duration客户端延迟时间,也就是请求发送到客户端和从客户端接收请求所需的时间量(计算为 client.received.end.timestampclient.sent.start.timestamp 之间的差值)(以毫秒为单位)。

例如:


target.duration > 420 && client.duration > 1000

如需了解详情,请参阅流变量参考中的 clienttarget

Response Code

检查 HTTP 响应代码是否与指定值相符;例如:


response.status.code <= 599
Header

检查指定的请求标头是否等于指定值;例如:


request.header.cache-control.1 == "16544"
Path

检查请求是否与指定路径匹配。您可以在值中使用通配符匹配;例如:


request.path == /myproxy/customer/4*
Query Param

检查指定的请求查询参数是否等于指定值;例如:


request.queryparam.lang == "language:en-us"
Custom

通过此方法,您可以插入自己的表达式。您可以在流变量参考条件参考中的语法中使用任何对象。此外,您还可以使用自定义变量。

如需详细了解如何创建自定义过滤条件,请参阅过滤条件语法

 

查看调试会话

Apigee 会将调试会话数据保存 24 小时。您不能配置此值; 24 小时之后,这些数据将不再可用。在此之前,您可以查看调试会话。

使用 Apigee 界面或 API 查看最近的调试会话,如以下部分所述。

Apigee 界面

如需使用此界面查看调试会话,请执行以下操作:

  1. 登录 Apigee 界面
  2. 从主视图中选择 API 代理
  3. 选择要调试的代理。
  4. 点击部署视图右上角的跟踪标签页。
  5. 最近的跟踪会话面板中:
    1. 环境下拉列表中,选择您要查看其调试会话的 API 代理的环境。
    2. 修订版本下拉列表中,选择您想要查看其调试会话的 API 代理的修订版本号。

    Apigee 界面会显示可用的调试会话列表,如以下示例所示:

    最近的跟踪会话

  6. 点击要查看的会话的链接。

    Apigee 界面会加载调试会话,并使用跟踪记录数据填充请求/响应面板。

在界面中选择视图选项

在 Apigee 界面中,您可以选择跟踪会话的视图选项。

视图选项列表

选项 说明
显示已停用的政策 显示所有已停用的政策。可以使用公共 API 停用政策。请参阅 API 代理配置参考
显示已跳过的阶段 显示跳过的所有阶段。由于未按步骤条件评估为 false,导致政策执行时发生的跳过阶段。如需了解详情,请参阅使用流变量的条件
显示所有 FlowInfo 表示流程细分内的转换。
自动比较选定的阶段 将所选阶段与前一阶段进行比较。将此模式关闭,仅查看所选阶段。
显示变量 显示或隐藏已读取和/或已分配值的变量。
显示属性 属性表示 API 代理的内部状态。(默认情况下隐藏)。

Apigee API

您可以借助此 API 执行以下操作:

使用 API 查看所有调试会话

如需查看环境中为 API 代理修订版本定义的所有最新调试会话,请向以下资源发出 GET 请求:

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions

(可选)您可以指定以下某个查询参数来控制返回的数据量:

  • pageSize - 需要列出的调试会话数量上限。页面大小默认为 25。
  • pageToken - 之前调用返回的页面令牌,可用于检索下一页。

以下示例演示了如何查看 test 环境中 helloworld API 代理修订版 1 的调试会话。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

该响应包含一个 sessions 对象,其中包含当前处于活跃状态的调试会话列表,如以下示例所示:

{
  "sessions": [
    {
      "id": "a423ac73-0902-4cfa-4242-87a353a84d87",
      "timestamp_ms": 1566330186000
    },
    {
      "id": "f1eccbbe-1fa6-2424-83e4-3d063b47728a",
      "timestamp_ms": 1566330286000
    }
  ]
}

响应中只包含至少含一个事务的调试会话;不含任何事务的调试会话不包括在此列表中。

如需了解详情,请参阅列出调试会话 API

使用 API 查看调试会话的所有事务

如需查看调试会话的交易列表,请对以下资源发出 GET 请求:

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions/debugsession/data

其中,debugsession是您在查看调试会话时返回的调试会话的 ID。

以下示例演示了如何查看 test 环境中 helloworld API 修订版 1 的调试会话的事务。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

响应包括交易 ID 数组,如以下示例所示:

[
  "myorg-test-ver-5qxdb-64",
  "myorg-test-ver-5qxdb-65",
  "myorg-test-ver-5qxdb-66",
  "myorg-test-ver-5qxdb-67",
  "myorg-test-ver-5qxdb-68",
  "myorg-test-ver-5qxdb-69",
  "myorg-test-ver-5qxdb-70",
  "myorg-test-ver-5qxdb-71",
  "myorg-test-ver-5qxdb-72"
]

如需了解详情,请参阅列出调试会话数据 API

使用 API 查看调试会话的事务数据

如需查看调试会话的事务数据,请向以下资源发出 GET 请求:

https://apigee.googleapis.com/v1/organizations/{org}/environments/{env}/apis/{api}/revisions/{rev}/debugsessions/{debugsession}/data/{transactionId}

其中,debugsession是您在查看调试会话时返回的调试会话的 ID。transactionId是您查看调试会话的事务列表时返回的事务 ID。

在调试会话期间以 JSON 格式保存事务数据。您可以在离线跟踪记录工具中加载此数据。

以下示例演示了如何为 test 环境中 helloworld API 修订版 1 的调试会话下载事务数据。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data/myorg-test-ver-5qxdb-64" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

响应由 JSON 载荷组成,该载荷包含指定事务的数据(如下载数据结构中所述)。

跟踪记录数据以专有 JSON 格式包含有关流的每个部分的请求和响应的所有信息。您可以保存这些数据,稍后在离线跟踪工具中使用这些数据。

如果在会话结束之前未向会话添加任何请求,则响应将如下所示:

[]

如需了解详情,请参阅获取调试会话数据 API

正在下载调试会话数据

您可以下载原始跟踪记录结果文件进行离线观看。下载的文件显示了调试会话的完整详细信息,包括所有标头、变量和政策的内容。

调试会话数据仅限 24 小时之内在界面中下载或查看。之后,Apigee 会删除会话数据。

使用此界面下载调试会话数据

如需使用 Apigee 界面下载当前调试会话的跟踪记录数据,请执行以下操作:

  • 活跃会话:点击跟踪记录详情面板中的下载图标 (“下载”图标)。
  • 上一个会话:点击查看调试会话中的说明,在最近的跟踪会话面板中点击该会话的名称。然后在跟踪记录详情面板中点击“下载”图标

下载数据结构

Apigee 界面和 Apigee API 的调试会话数据的下载结构不同。

Apigee 界面

使用 Apigee 界面下载数据时,数据结构如下:

  • 包含整个会话中的所有事务
  • 将事务存储在 Messages 数组中
  • 包含会话的相关元数据(作为 DebugSession 对象)

Apigee API

查看调试会话中所述,您无法使用 Apigee API 同时查看整个会话的数据;您只能使用 API 查看个别事务数据。

例如:

{
  "completed": true,
  "point": [
    ...
  ...
}

下载数据示例

以下示例在下载的数据中突出显示了 DebugSession 元数据对象。此对象位于会话中包含事务的 Messages 数组。

{
  "DebugSession": {
    "Retrieved": "2019-06-08T13:08:13.395Z",
    "Organization": "myorg",
    "Environment": "prod",
    "API": "myproxy",
    "Revision": "1",
    "SessionId": "a2a271aa-4242-4ac6-97cb-aec8dcb115a9"
  },
  "Messages": [
    {
      "completed": true,
      "point": [
        {
          "id": "Paused"
        },
        {
          "id": "Resumed"
        },
        {
          "id": "StateChange",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "To",
                    "value": "REQ_HEADERS_PARSED"
                  },
                  {
                    "name": "From",
                    "value": "REQ_START"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            },
            {
              "ActionResult": "RequestMessage",
              "headers": [
                {
                  "name": "accept",
                  "value": "*/*"
                },
                {
                  "name": "accept-encoding",
                  "value": "gzip,gzip,deflate,br"
                },
                {
                  "name": "content-length",
                  "value": "0"
                },
                {
                  "name": "host",
                  "value": "myorg.example.domain.net"
                },
                {
                  "name": "user-agent",
                  "value": "Google-Apigee"
                },
                {
                  "name": "x-b3-sampled",
                  "value": "0"
                },
                {
                  "name": "x-b3-spanid",
                  "value": "d4ee579206759662"
                },
                {
                  "name": "x-b3-traceid",
                  "value": "adc1e171777c237dd4ee579206759662"
                },
                {
                  "name": "x-forwarded-for",
                  "value": "66.102.8.98"
                },
                {
                  "name": "x-forwarded-proto",
                  "value": "https"
                },
                {
                  "name": "x-request-id",
                  "value": "54e05cba-4242-4490-4242-60c45c156f90"
                }
              ],
              "uRI": "/myproxy",
              "verb": "GET"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "environment.name",
                    "value": "prod"
                  },
                  {
                    "name": "environment.qualifiedname",
                    "value": "myorg__prod"
                  },
                  {
                    "name": "environment.orgname",
                    "value": "myorg"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "organization.name",
                    "value": "myorg"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        {
          "id": "FlowInfo",
          "results": [
            {
              "ActionResult": "DebugInfo",
              "properties": {
                "property": [
                  {
                    "name": "apiproxy.qualifiedname",
                    "value": "myproxy__1"
                  },
                  {
                    "name": "apiproxy.basepath",
                    "value": "/"
                  },
                  {
                    "name": "apiproxy.revision",
                    "value": "1"
                  },
                  {
                    "name": "apiproxy.name",
                    "value": "myproxy"
                  }
                ]
              },
              "timestamp": "8-6-19 13:08:37:718"
            }
          ]
        },
        ...
      ...
    }
  ]
}

如果调试会话不包含任何请求,则 Message 数组为空,如以下示例所示:

{
  "DebugSession": {
    "Retrieved": "2019-06-08T13:08:13.395Z",
    "Organization": "myorg",
    "Environment": "prod",
    "API": "myproxy",
    "Revision": "1",
    "SessionId": "a2a271aa-4242-4ac6-97cb-aec8dcb115a9"
  },
  "Messages": []
}

删除调试会话的数据

如以下部分所述,使用 Apigee 界面或 API 删除调试会话的数据。

Apigee 界面

点击调试会话的跟踪详情面板中的“删除”图标

Apigee API

如需使用 API 删除所有调试会话数据,请向以下资源发出 DELETE 请求:

https://apigee.googleapis.com/v1/organizations/org/environments/env/apis/api/revisions/rev/debugsessions/debugsession/data

其中,debugsession是您在查看调试会话时返回的调试会话的 ID。

以下示例演示了如何删除 test 环境中 helloworld API 修订版 1 的调试会话数据。

curl "https://apigee.googleapis.com/v1/organizations/myorg/environments/test/apis/helloworld/revisions/1/debugsessions/a423ac73-0902-4cfa-4242-87a353a84d87/data" \
  -X DELETE \
  -H "Authorization: Bearer $TOKEN"

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

如果成功,则响应正文将为空。

调试会话数据只会保留 24 小时。如果您未在该时间段之前明确删除该服务,则 Apigee 会为您删除该服务。