为应用安装探针后,ARMS即可开始监控应用,您可以在提供服务页面了解应用提供的服务详情,包括接口调用、消息队列和定时任务的详细信息。
前提条件
ARMS应用监控面向已开通新版计费的用户提供全新的监控详情页面,新版计费详情,请参见产品计费(新版)。
对于未开通新版计费的用户,如需查看新版监控详情页面,可在应用列表页面单击切换新版。
已为应用安装探针,具体操作,请参见应用监控接入概述。
查看应用提供服务
登录ARMS控制台,在左侧导航栏选择 。
在应用列表页面顶部选择目标地域,然后单击目标应用名称。
语言列的图标含义如下:
:接入应用监控的Java应用。
:接入应用监控的Golang应用。
:接入应用监控的Python应用。
-:接入可观测链路 OpenTelemetry 版的应用。
在上方导航栏单击提供服务。
在快捷筛选区域(图示①),您可以按请求类型、接口名称、主机对图表、服务列表进行筛选过滤。
在趋势图区域(图示②),您可以查看服务的请求数、错误数和平均耗时的时序曲线。
单击
图标,可以在弹出的对话框中查看该指标在某个时间段的统计情况或对比不同日期在同一时间段的统计情况,通过选择
图标可以切换柱状图、趋势图进行展示。
在服务列表区域(图示③),您可以查看接口的名称、请求类型、RED三指标(请求数、错误数、平均耗时)等信息。
在服务列表,您可以执行以下操作:
支持的框架
接口详情
接口调用
在概览页签可以查看目标接口的请求数、错误数、平均耗时,以及HTTP-状态码统计、慢调用的时序曲线。
在SQL分析和NoSQL分析页签可以查看左侧选中接口发起的SQL和NoSQL请求列表,同时可以通过主机列表进行主机过滤。借助此页签,您可以找出是哪一个SQL或NoSQL造成某个服务过慢。
单击SQL或NoSQL的数据库名称可以查看该数据库的详情;单击SQL或NoSQL右侧的调用链可以查看SQL或NoSQL执行逻辑所在的完整代码链路。更多信息,请参见调用链分析。
链路上游和链路下游页签分别列出了应用上游(调用应用的一方)和应用下游(被应用调用的一方)的接口及其调用性能指标,包括请求数、错误数和耗时信息。
调用链分析功能基于已存储的全量链路明细数据,通过自由组合筛选条件与聚合维度进行实时分析,可以满足不同场景的自定义诊断需求。更多信息,请参见调用链分析。
消息队列
Python应用暂不支持查看消息队列。
在概览页签可以查看目标接口的请求数、错误数、平均耗时,以及消费延迟(目前仅支持RocketMQ 4.8.0+)。
在SQL分析和NoSQL分析页签可以查看左侧选中接口发起的SQL和NoSQL请求列表,同时可以通过主机列表进行主机过滤。借助此页签,您可以找出是哪一个SQL或NoSQL造成某个服务过慢。
单击SQL或NoSQL的数据库名称可以查看该数据库的详情;单击SQL或NoSQL右侧的调用链可以查看SQL或NoSQL执行逻辑所在的完整代码链路。更多信息,请参见调用链分析。
消费统计页签以消息消费方视角,列出了Topic的消费情况,包括请求数、错误数和耗时。
调用链分析功能基于已存储的全量链路明细数据,通过自由组合筛选条件与聚合维度进行实时分析,可以满足不同场景的自定义诊断需求。更多信息,请参见调用链分析。
定时任务
目前仅Java应用支持查看定时任务。
在概览页签可以查看目标接口的请求数、错误数、平均耗时,以及调度延迟时间的时序曲线。
在SQL分析和NoSQL分析页签可以查看左侧选中接口发起的SQL和NoSQL请求列表,同时可以通过主机列表进行主机过滤。借助此页签,您可以找出是哪一个SQL或NoSQL造成某个服务过慢。
单击SQL或NoSQL的数据库名称可以查看该数据库的详情;单击SQL或NoSQL右侧的调用链可以查看SQL或NoSQL执行逻辑所在的完整代码链路。更多信息,请参见调用链分析。
链路下游页签列出了应用下游(被应用调用的一方)的接口及其调用性能指标,包括请求数、错误数和耗时信息。
调用链分析功能基于已存储的全量链路明细数据,通过自由组合筛选条件与聚合维度进行实时分析,可以满足不同场景的自定义诊断需求。更多信息,请参见调用链分析。
常见问题
接口调用的链路上游是什么
指上游应用调用该应用的次数,当上游应用接入了ARMS探针,就会有记录;当上游应用没有接入ARMS探针,就不会有。如果应用自己调用自己,也会作为上游应用展示。
部分接口缺失链路上游
如果该接口确实存在上游调用,但上游调用没有接入ARMS探针,则上游调用不会被展示出来。
链路上下游混乱
如果当前链路中有使用SkyWalking组件,则默认整条链路中的Tracing协议为SkyWalking协议。在4.2.x版本之前,ARMS对SkyWalking协议的支持存在问题,会导致上下游识别失败。您可以升级到4.2.x或以上版本,或者在自定义配置页面的调用链透传协议设置中强制使用其他非SkyWalking协议进行Trace上下文透传。具体操作,请参见调用链透传协议设置。
Dubbo接口错误数不为0,但是搜不到调用链
探针3.2.x版本之前,Dubbo调用链未正确记录状态码,导致搜不到错误调用链,3.2.x及以上版本已经修复。
接口调用中异常次数不为0,但在调用链中无法搜索到异常调用链
在4.1.x版本之前,探针仅记录错、慢调用,所以当接口调用中仅有异常时,不一定被采样;在4.1.x版本之后,探针记录错、慢、异常采样,当接口调用中存在异常时就会被采样。
为什么接口流量下跌了
首先需要排除是否确实下跌了,可以通过查看下跌时间点前后的CPU水位,网络IO等指标是否有同步变化来判断:
如果有,一般是实际流量下跌。
如果没有,可能是ARMS服务端出现问题,此时建议提交工单咨询。
Spring Cloud Gateway监控的流量不准
4.x版本以前对于Spring Cloud Gateway的埋点存在缺陷,在某些场景下会导致流量统计丢失,建议升级到4.x版本探针。
是否能查看一个接口中有哪些慢SQL
可以,查询页面如下:
在监控详情页面单击目标接口名称,然后在SQL分析页面查看。
在目标应用的
页面查看。旧版控制台中接口前面的黄点是什么意思
将鼠标移到圆点上,可以查看相应提示。
黄点代表慢调用,默认一次请求耗时大于500 ms会被标识为慢调用,您可在自定义配置页面的接口调用配置区域调整该阈值。
红点代表错误。
部分5xx数据未被采集到
根据RFC7231说明,502、504等状态码为Gateway抛出的错误状态码,这些状态码是Gateway产生的,和Gateway调用服务实际的响应码可能并无关系。如果Gateway没有接入ARMS监控,只是Gateway对接的服务方接入了ARMS,这种场景下抛出的5xx响应是不会被统计上来的。
NetWork And Dubbo Response Decode是什么
是一个Span,用于统计Dubbo传输层反序列化的耗时。
接口中为什么包含*或者ARMS关键字的一些字符
这种情况是因为接口名比较发散,ARMS对接口进行了收敛,将相似接口中差异的部分进行了替换,详情请参见ARMS收敛机制说明。
外部调用接口耗时与下游服务实际耗时不同
服务端耗时是请求到接口之后,接口处理请求的耗时;调用端耗时是发起请求之后统计的耗时,还会包含建连、网络等耗时。其中,ARMS控制台会分别展示服务端接口的处理请求耗时,与调用方发起请求的完整耗时,但是其中网络相关的耗时无法确定。
接口正常返回,但单次异常次数不为0
这个是符合预期的,这些异常是某些框架(如OkHttp3框架)内部抛出的,这些异常在外部被框架catch住了,因此业务是正常的,但是ARMS监控的时候因为针对这个框架进行了埋点,所以也会对这些异常信息进行记录,但不代表业务真的有异常,这些信息业务方可以自行判断是否需要进行治理。这个异常在统计时忽略了异常的Message信息,如果想要看具体异常的Message信息,可以通过单击异常对应的一条调用链 ,然后单击接口右侧的图标,查看方法栈里面的异常信息。
HTTP接口名为/error、/404、/*、/**等
这种情况通常是存在一些非预期的请求,ARMS无法为这些请求找到匹配的路由,一般存在以下几种情况:
请求了一个不存在的URL。
请求头非法导致请求校验失败报错,例如Header包含非法字符。
使用了一些无路由机制的HTTP Server,例如裸用Netty。
接口调用中请求次数和调用链分析中接口次数不一致
调用链分析是基于Trace数据计算的,受采样率影响。
接口详情里的分位数耗时和调用链分析里的不一样
接口详情中分位数是单机基于分桶算法计算得到的,调用链中是基于采样后该接口相关Span的耗时计算的,所以二者不一致,详情请参见ARMS分位数指标计算原理。
接口调用量突然增量2倍左右
这种情况一般是由于在升级探针的过程中误操作,同时挂载了3.x和4.x版本的探针导致。您可以前往
页面选择任一探针,单击查看详情查看JVM参数。如下图所示,存在两个-javaagent
参数就是同时挂载了3.x和4.x探针。
ARMS控制台看到的调用量和其他途径统计的调用量不一致
造成调用量不一致的情况比较多,下面举例说明两种常见场景:
ARMS看到应用的接口调用量为500次/分钟,Nginx看到接口的调用量为200/分钟。一般造成这种原因很有可能是有流量绕过Nginx直接访问应用。
ARMS上看到应用访问DB的次数是400次/分钟,DB服务端监控看到数据库执行次数是1000/分钟。一般造成这种情况是该DB被多个应用访问,ARMS控制台仅能看到特定应用的访问量。
ARMS当前对于webflux场景的支持情况
4.x之前的探针只支持使用原生的Spring Webflux和spring-cloud-gateway。对于使用自定义WebHandler修改过的Webflux相关插件(如apache shenyu)暂时不支持。
消息订阅/消息发布页面的数据和 MQ 实例自监控面板数据有什么区别?
消息订阅/消息发布页面展示的内容为选定应用作为消费者/生产者时的各种性能指标,是客户端视角的监控数据。MQ 实例的监控面板数据是 Topic 相关的性能指标,是服务端视角的监控数据。
消息发送与接收对应的 SpanName 格式是什么?
消息类型 | 4.x 之前版本探针 | 4.X 及之后版本探针 |
RocketMQ/Ons 消息发送 | 不会创建 Span,仅记录方法栈。 |
|
RocketMQ/Ons 消息接收 |
|
|
Kafka 消息发送 | 不会创建 Span,仅记录方法栈。 |
|
Kafka 消息接收 |
|
|
RabbitMQ 消息发送 | 不会创建 Span,仅记录方法栈。 |
|
RabbitMQ 消息接收 |
|
|
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?
请检查您的 Producer 和 Consumer 应用使用的消息队列 Client SDK 是否在ARMS支持范围内,支持的组件请参见ARMS应用监控支持的Java组件和框架。
请检查您的 Producer 和 Consumer 应用是否都接入了 ARMS 应用监控或可观测链路 OpenTelemetry 版,正常开启了探针开关和插件开关,并上报到了同一地域。发送消息的 Span 在 Producer 中产生,接受消息的 Span 在 Consumer 中产生,如果有应用没有正确接入则会缺失对应 Span。
如果无法看到发送消息的 Span,请检查 Producer 应用探针版本是否大于等于 4.x。在低于 4.x 版本的探针中,发送消息不会作为一个单独的 Span 被统计,而是会统计在父 Span 的方法栈中,您可以单击父 Span 右侧的
图标查看实际的调用方法栈。
如果无法看到接收消息的 Span,您可以在对应 Consumer 应用自定义配置页面的接口调用配置区域检查是否配置了无效接口过滤。无效接口过滤会过滤掉您不关心的 Span。
- 本页导读 (1)
- 前提条件
- 查看应用提供服务
- 支持的框架
- 接口详情
- 接口调用
- 消息队列
- 定时任务
- 常见问题