依赖服务

当专业版应用开启应用监控后,ARMS服务即可对应用进行监控,您可以在依赖服务页面了解应用依赖服务的详情,包括外部调用、数据库调用和消息队列的详细信息。

支持的框架

查看依赖服务

提供服务页签,您可在通过在快捷筛选区域(图示①)筛选需要查询的请求类型、请求目标或实例,在趋势图区域(图示②)查看相应请求类型的变化趋势,您也可以在服务列表区域(图示③)查看接口更为详细的信息。

g5NVDse091

  • 在快捷筛选区域(图示①),您可以按请求类型、请求目标、实例进行筛选过滤。

    勾选目标字段,即可选择需要查询的字段。如果您不勾选字段,则默认查询所有字段的监控信息。
  • 在趋势图区域(图示②),您可以查看应用在指定时间范围内对依赖服务发起请求的总数、错误数和平均耗时的时序曲线。

    单击image.png图标,可以在弹出的对话框中查看该指标在某个时间段的统计情况或对比不同日期在同一时间段的统计情况,通过选择image.png图标可以切换柱状图、趋势图进行展示。

  • 在服务列表区域(图示③),您可以查看请求的目标、类型、RED三指标(请求数、错误数、平均耗时)等信息。

    在服务列表,您可以执行以下操作:

    • 单击请求目标或操作列的详情,可以查看对应服务的详细信息,更多信息,请参见依赖服务详情

    • 单击操作列的调用链,可以查看该依赖服务调用的链路详情。更多信息,请参见调用链分析

说明

单击依赖服务右侧的下拉框,可查看数据库调用NoSQL调用外部调用消息发布。具体消息,请参见依赖服务详情

依赖服务详情

说明

Python应用暂不支持查看消息调用。

概览

概览页签可以查看目标消息的请求数、错误数、平均耗时的统计情况,以及慢调用的时序曲线。

5MsxIKGtiD

访问路径

访问路径页签可以查看目标依赖访问路径的请求数、错误数、平均耗时的统计情况。

CC3XOXmQTb

调用来源

调用来源页签可以查看目标接口的请求数、错误数、平均耗时的统计情况。

fGN0aTTfyk

调用链分析

此页面无法直接查看调用链分析,可单击调用链分析页签,跳转至对对应页面查看。

常见问题

数据库相关

数据库调用无数据

可能原因:

  • 数据库不在ARMS支持的数据库列表中,支持的数据库请参见ARMS应用监控支持的Java组件和框架

  • 4.x之前版本的探针不支持通过异步的方式或者是通过无入口的方式调用的数据库。

ARMS控制台看到数据库有慢调用,但是数据库服务端看不到慢调用

ARMS从客户端视角出发进行监控,包括在应用内部发起请求,通过网络传输给服务端,在服务端处理完之后,将响应发回客户端等一系列过程,因此ARMS统计到的数据库指标会受到GC、网络传输的影响,数值会比服务端更大。此外,ARMS判断是否有慢调用是按照自定义配置页面配置的SQL阈值判断,阈值默认值为500 ms,和服务端的配置不同。

image

ARMS控制台看到数据库调用量和数据库服务端监控看到的调用量不同

一个数据库可能被多个应用访问,ARMS控制台只能看到当前应用的访问量,无法看到其他应用访问数据库的调用量。

消息订阅/消息发布相关

消息订阅/消息发布页面的数据和 MQ 实例自监控面板数据有什么区别?

消息订阅/消息发布页面展示的内容为选定应用作为消费者/生产者时的各种性能指标,是客户端视角的监控数据。MQ 实例的监控面板数据是 Topic 相关的性能指标,是服务端视角的监控数据。

消息发送与接收对应的 SpanName 格式是什么?

消息类型

4.x 之前版本探针

4.X 及之后版本探针

RocketMQ/Ons 消息发送

不会创建 Span,仅记录方法栈。

${topic} + publish

RocketMQ/Ons 消息接收

Recv Topic@${topic}

Recv Topic@${topic}

Kafka 消息发送

不会创建 Span,仅记录方法栈。

${topic} + publish

Kafka 消息接收

Kafka/topic=${topic}

Kafka/topic=${topic}

RabbitMQ 消息发送

不会创建 Span,仅记录方法栈。

${exchange} + publish

RabbitMQ 消息接收

Recv Exchange@${exchange}

Recv Exchange@${exchange}

Java 探针是否支持 Spring Cloud Alibaba RocketMQ?

4.x 及之后版本的探针中已经支持该框架,如果您探针版本低于 4x,请升级ARMS探针

MQ 监控中的“消息延迟”指标含义和单位是什么?

消息延迟指该消息从消息产生开始到被 Consumer 消费的总耗时,该指标单位是毫秒(ms)。该指标目前仅支持 RocketMQ Client 和 Ons Client 的采集。

为什么应用中存在消费逻辑,但没有消费者的链路和指标数据?

可能是探针版本低于 4.x,且使用了 lambda 表达式定义 messageListener 中的消费逻辑。

由于2.x/3.x 版本探针对 lambda 表达式的类增强失败,您可以升级探针到 4.x 版本避免该问题。

为什么接入 Java 探针后,Kafka Clients 出现了 Magic v1 does not support record headers 的报错信息?

Java 探针通过 Kafka Message 的 Header 字段来传递链路上下文,而在低于 0.11.0.0 版本的 Kafka 中(无论是 Client 还是 Broker),Kafka 的消息体不支持 Header 字段。如果您的 Kafka-broker 或 Kafka-clients 低于这个版本,请尽快迁移到 0.11.0.0 以上版本。 如果您暂时还无法迁移,对于4.x 之前版本的 Java探针,您可以在应用自定义配置页面的探针开关设置区域关闭 Kafka 组件的增强(kafka-plugin开关);对于 4.x 及之后版本的 Java探针,您可以在启动服务时添加 -Dotel.instrumentation.kafka.producer-propagation.enabled=false 虚拟机参数来防止该类问题。

为什么调用链中缺少接收消息或者发送消息的 Span?

  1. 请检查您的 Producer 和 Consumer 应用使用的消息队列 Client SDK 是否在ARMS支持范围内,支持的组件请参见ARMS应用监控支持的Java组件和框架

  2. 请检查您的 Producer 和 Consumer 应用是否都接入了 ARMS 应用监控或可观测链路 OpenTelemetry 版,正常开启了探针开关和插件开关,并上报到了同一地域。发送消息的 Span 在 Producer 中产生,接受消息的 Span 在 Consumer 中产生,如果有应用没有正确接入则会缺失对应 Span。

  3. 如果无法看到发送消息的 Span,请检查 Producer 应用探针版本是否大于等于 4.x。在低于 4.x 版本的探针中,发送消息不会作为一个单独的 Span 被统计,而是会统计在父 Span 的方法栈中,您可以单击父 Span 右侧的image图标查看实际的调用方法栈。

    2024-12-20_15-23-14

  4. 如果无法看到接收消息的 Span,您可以在对应 Consumer 应用自定义配置页面的接口调用配置区域检查是否配置了无效接口过滤。无效接口过滤会过滤掉您不关心的 Span。