分析跟踪和调用

检查无界分析中的跟踪,您可以在其中调查 Instana 收集的跟踪和调用。 为了帮助您了解应用程序对每个调用的行为,我们会在这些调用的每个调用进入系统时对其进行监视。

查看跟踪

  1. 在侧边栏上,单击应用程序
  2. 应用程序仪表板上,选择应用程序或服务。
  3. 在应用程序或服务仪表板上,单击分析调用
  4. 分析仪表板上,您可以按应用程序、服务和端点分析调用,并分别按服务、端点和调用名称划分 Instana 所提供的数据。 在应用程序下,选择调用数跟踪
  5. 单击某个组,然后选择跟踪。

查看跟踪分析

跟踪分析

过滤和分组轨迹或呼叫

分析 仪表板上,可以使用任意标记对跟踪或调用进行过滤和分组。 在“分析调用”中,可以使用 ANDOR 逻辑运算符连接过滤器,并使用方括号进行分组。 在“分析跟踪”中,只有 AND 运算符可用。

查询构建器

过滤数据的方法有两种:

  • 查询构建器
  • 过滤器侧边栏

虽然两者都可以单独使用,但在组合时取得了最佳效果。

查询构建器

使用分析仪表板上的查询生成器过滤初始结果集。 通过单击 添加过滤器,可以将 application.nameservice.nameendpoint.name 标记以及基础结构实体标记 (例如 agent.taghost.name) 应用于调用的源和目标。 缺省情况下,它将应用于目标。 要将其更改为源,请单击标记名称前的选择器并选择源。 通过组合源和目标,可以创建查询,例如 显示这两个服务之间的所有调用显示从 agent.zone "生产" 向 agent.zone "测试"发出的所有调用。 源或目标的选择不可用于调用标记,例如 call.http.pathcall.tag,它们是调用本身的属性,独立于源或目标。

要应用分组,请单击添加组并选择其中一个标记。 缺省分组将使用端点名称 (endpoint.name) 标记。 要检查与过滤器匹配的各个跟踪和调用,您可以展开组以在结果中达到峰值,或者单击 关注此组 以除去分组并进一步按所选组的值对结果进行过滤。 可以将标记应用于调用的源或目标,以便您可以表达诸如向我显示针对此服务的所有调用,按调用方细分之类的查询。 不匹配任何组的调用将显示在名为Tag not present的特殊组中,例如,使用agent.zone将为不带“agent.zone”标记的调用。 要从结果中除去不匹配的agent.zone,请使用 is present 运算符应用其他过滤器。 在 Analyze Traces 中也不提供按源和目标分组,因为该视图中的可用组独立于任何一个特定调用的源或目标。

以上示例按应用程序Catalogue (user-journey)进行过滤,并列出按端点名称分组的调用。

过滤器侧边栏

使用查询生成器筛选器得到的结果,可以通过在分析仪表板上的筛选器侧栏中应用其他筛选器来快速深入分析数据。

侧边栏

同一标记类别中的项将通过逻辑 OR 进行并置,不同标记类别将使用逻辑 AND 进行并置。 通过逻辑 AND ,过滤器侧边栏中的所有选定过滤器都会应用于任何已应用的查询生成器过滤器。 筛选器侧边栏的标题显示所有标签中已选项目的总计数,并允许您快速移除所有已应用的侧边栏筛选器。

注意: 请注意, "分析跟踪" 当前不支持对单个标记进行多项选择。

在上例中,我们通过查询生成器中的应用程序 Catalogue (user-journey) 过滤器侧边栏中选择的服务 catalogue-demo discount-svc 进行筛选。

要按过滤侧边栏标签之一快速分组,请单击每个适合分组的标签旁边显示的分组按钮。 这是在查询构建器中配置分组的快速方法,如先前所述。 与按特定过滤器侧边栏标记进行分组的方式相同,也可以通过单击当前用于分组的标记上的取消分组按钮再次提升分组。

已知限制

按日志标记对调用进行分组: 按 log.levellog.message对调用进行分组时,将不会像其他标记的情况那样表示特殊组 Tag not present

延迟分布

可以使用 等待时间分布 图表来检查跟踪和调用等待时间。 在图表上选择延迟范围时,会相应调整筛选器。 将按如下所示更新表中的结果,以仅显示指定等待时间范围内的跟踪或调用。

等待时间分布视图

跟踪视图

要显示跟踪视图,请在 " 分析 " 仪表板上选择组,然后单击跟踪。 选择调用将在其跟踪的上下文中显示该调用。

跟踪视图

摘要详细信息

跟踪的摘要详细信息包括:

  • 跟踪名称(通常为 HTTP 条目)。
  • 发生此问题的服务的名称。
  • 类型或技术。
  • 核心 KPI:
    • 对其他服务的子调用。
    • 错误调用的次数。
    • 跟踪中发生的错误数。
    • 跟踪中的警告数。
    • 跟踪持续时间。 跟踪中第一个调用的开始与最后一个调用的结束之间的时间间隔。

时间线

跟踪时间线显示以下内容:

  • 跟踪启动时。
  • 在整个跟踪过程中调用的服务的时间顺序。

调用链从根元素(范围)暂挂。 在简单的三层系统上,您具有四个级别的典型深度。 相比之下,在采用分布式服务或微服务架构的系统上,您可以期望看到更长的 icicles。 如果有较长的子调用跟踪或周期性调用模式(如每个数据库条目都有一次 HTTP 调用),时间轴可为您提供调用结构的绝佳概览。

要查看范围的详细信息,请单击时间线图中的范围。 要查看特定调用中耗用时间的详细信息,请将鼠标指针悬停在时间线图上显示的调用上。

调用详细信息包括以下类型的时间:

  • Self: 调用在下游调用外部花费的时间量 (即,在调用中花费的时间)。
  • Waiting: 调用等待所有下游调用完成所花费的时间量。
  • Network: 调用者的 Exit Span Time 与调用的 Entry Span Time 之间的时间差。
  • Total: 调用的总时间。

服务

时间线图下列出的服务汇总了每个服务的所有调用,并列出了调用次数,聚集时间和已发生的错误。 每个服务都有自己的颜色(在此示例中,shop = blue,productsearch green)。 选择服务以在应用程序和服务仪表板中查看其详细信息。

调用数

呼叫视图

跟踪树显示上游和下游服务调用的结构以及该调用的类型。 要浏览特定调用,请展开和折叠跟踪树的各个部分。 选择一个调用以在服务和端点仪表板中查看其详细信息。

无效呼叫

如果缺少其父调用,那么将该调用视为孤立调用。 由于各种原因 (例如尚未完成或发送到另一个 APM 工具) ,可能缺少调用。 因为父子关系确定调用在调用树中的位置,所以孤立调用的位置未知。 孤立调用直接附加到根调用。 指示符图标显示在根调用与孤立调用之间的边缘上。

孤立调用

调用详细信息

要显示呼叫详细信息侧边栏,请在时间线图中选择呼叫。 显示的详细信息包括调用的源和目标,错误,状态码以及堆栈跟踪。

捕捉日志和错误

当检测到服务返回错误响应或具有 ERRORWARN 级别 (或类似级别取决于框架) 的日志时, instana 会自动捕获错误。

自动汇总短时间退出呼叫

Instana 始终努力让您最好地了解服务交互,同时最大限度地减少对实际应用程序的影响。 但是,某些场景需要 Instana 删除数据以实现此目的。

系统中的一个常见问题是所谓的 1+N 查询问题,该问题描述了以下情况: 代码执行 1 数据库调用以获取项列表,然后执行 N 个个别调用以检索个别项。 通常可以通过仅执行一个调用并将其他调用连接到该调用解决此问题。

调用名称旁边的图标指示将多少个请求一起进行批处理。 调用详细信息与最重要的服务调用(例如,具有最长持续时间或存在错误的请求)匹配。 所显示调用的持续时间和错误计数将从所有批处理调用聚集。

调用批处理示例

服务交互的聚集仅发生在以下约束中:

  • 类似类型的高频率重复访问模式
  • 单个服务调用所用时间小于 10 毫秒
  • 调用之间的时间小于 10 毫秒

捕获参数

由于影响担忧,目前, Instana 的跟踪传感器不会自动捕获方法参数或方法返回值。 要随需应变地捕获其他数据,请使用 SDK。

长期运行的任务

由于超时,高负载或任何其他数量的环境条件,调用可能需要很长时间才能响应。 跟踪可能包含数十甚至数百个此类调用。 由于 Instana 打算尽可能快地向用户提供跟踪信息,因此长时间运行的跨度首先会替换为占位符。 当长时间运行的范围最终返回时,占位符将再次替换为正确的调用信息。

分批跟踪处理

由于跨度处理管道的高性能和近实时性,延迟到达的跨度和异步到达的跨度在链接到生成的跟踪时将略有不同。 "跟踪" 视图中的信息框将显示给用户,并提供有关格式不正确的跟踪的信息。

对于 Instana 用户,可能会发生以下影响:

  • 在 "跟踪视图" 中,不会显示跟踪的所有子调用。
  • 列出具有相同跟踪标识的单独跟踪,并部分显示整体跟踪。
  • 调用可能未映射到相应的 "应用程序透视图" ,然后可能在 "无界分析" 中丢失。
  • 调用可能未映射到相应的服务,然后可能在无界分析中丢失。
  • 流映射可能显示不一致的调用计数。
  • 流映射可能显示不一致的服务映射。

已在多个批处理中处理此跟踪

在此情况下,当已处理生成的跟踪时,某些跨度会在 2 秒时间间隔后到达。 此方法显示所有捕获的范围,但某些相关性可能不正确。

这可能导致 Instana 数据模型中出现以下异常:

  • 出口范围和相应的入口范围可能不会合并到单个调用中。
  • 调用可能未映射到正确的服务。
  • 调用可能未链接到正确的父调用。
  • 调用可能缺少基础架构标记。
  • 调用可能未或未正确映射到应用程序透视图。

下图显示了类似的跟踪,所有跨度都在根跨度上下文中处理,因此在单个批处理中链接到跟踪:

在单个批处理中处理的跟踪

近似数据

跟踪和调用将保留 7 天。 在此时间段后,您将看到一个大致数据指示符,用于指示保留的调用数以及原始调用计数的估算。 在此类场景中可能不会显示很少发生的跟踪和调用。

如果 timepicker 中的时间范围在过去 7 天内开始超过并结束,那么将使用近似数据来分析整个所选时间范围,即使在该时间范围的一部分中保留完整数据也是如此。 如果要分析完整数据集,请确保所选时间范围在过去 7 天内开始。

近似数据指示符

在过去 31 天内将保留“应用程序透视图”的准确度量值。 展开某个组或除去该组以查看个别调用时,您只能看到保留的调用和近似数据指示符。

超过 31 天,指标和调用都将是近似值。

近似分组数据指示符