|
对于最新稳定版本,请使用 Spring Integration 7.0.0! |
指标与管理
本节介绍如何捕捉 Spring 集成的指标。 在最近的版本中,我们更多地依赖Micrometer(见 micrometer.io),并计划在未来的版本中更多地使用Micrometer。
在高流量环境中禁用日志
你可以在主消息流中控制调试日志。
在非常大批量的应用中,调用isDebugEnabled()对于某些日志子系统来说,成本可能相当高。
你可以关闭所有此类日志,以避免这些开销。
异常日志记录(无论是调试还是其他方式)不受此设置影响。
以下列表展示了控制日志的可用选项:
-
Java
-
XML
@Configuration
@EnableIntegration
@EnableIntegrationManagement(
defaultLoggingEnabled = "true" <1>)
public static class ContextConfiguration {
...
}
<int:management default-logging-enabled="true"/> (1)
| 1 | 设置为false禁用主消息流中的所有日志,无论日志系统类别设置如何。
设置为“true”以启用调试日志(如果日志子系统也启用了)。
只有在你没有在豆子定义中明确配置该设置时才会应用。
默认为true. |
默认日志启用只有在你没有在豆子定义中明确配置对应的设置时才会应用。 |
微米积分
概述
从5.0.3版本开始,出现了Micrometer。 MeterRegistry在应用环境中,触发对微米级度制的支持。
使用千分尺时,添加其中一个MeterRegistry应用上下文。
对于每个消息处理器和消息频道,计时器被注册。
对于每个消息源,计数器被注册。
这只适用于延伸的物体摘要消息处理器,摘要消息频道和摘要消息源(大多数框架组件都是如此)。
这定时器用于消息通道发送作的计量器有以下名称或标签:
-
名称:spring.integration.send -
标记:类型:通道 -
标记:name:<componentName> -
标记:结果:(成功|失败) -
标记:例外:(none|exception 简单类名) -
描述:发送处理时间
(A失败结果为没有例外是指频道的发送()返回行动false.)
这计数器可轮询消息信道上的接收作计量器具有以下名称或标签:
-
名称:spring.integration.receive -
标记:类型:通道 -
标记:name:<componentName> -
标记:结果:(成功|失败) -
标记:例外:(none|exception 简单类名) -
描述:收到的消息
这定时器用于消息处理程序作的计量器具有以下名称或标签:
-
名称:spring.integration.send -
标记:类型:处理器 -
标记:name:<componentName> -
标记:结果:(成功|失败) -
标记:例外:(none|exception 简单类名) -
描述:发送处理时间
这计数器消息源的计量器具有以下名称/标签:
-
名称:spring.integration.receive -
标记:类型:来源 -
标记:name:<componentName> -
标记:结果:成功 -
标记:例外:无 -
描述:收到的消息
此外,还有三个轨距米:
-
spring.integration.channels: 的数量消息频道在申请表里。 -
Spring.integration.handlers: 的数量消息处理者在申请表里。 -
spring.integration.sources: 的数量消息来源在申请表里。
可以自定义 的名称和标签米通过积分组件提供 的子类微米计量Captor.
MicrometerCustomMetricsTests 测试用例展示了一个简单的示例。
你还可以通过超载来进一步自定义能量条build()建造子类方法。
从版本5.1.13开始,队列通道展示队列大小和剩余容量的微米仪表:
-
名称:spring.integration.channel.queue.size -
标记:类型:通道 -
标记:name:<componentName> -
描述:队列通道的大小
和
-
名称:spring.integration.channel.queue.remaining.capacity -
标记:类型:通道 -
标记:name:<componentName> -
描述:队列信道的剩余容量
禁用仪表
默认情况下,所有电表在首次使用时都会被登记。
现在,有了Micrometer,你可以加计量Filters到theMeterRegistry以防止部分或全部被注册。
你可以根据提供的任意属性过滤(拒绝)电表,名称,标记等。
更多信息请参见Micrometer文档中的米Filter。
例如,给定:
@Bean
public QueueChannel noMeters() {
return new QueueChannel(10);
}
你可以通过以下方式抑制仅针对该频道的电表注册:
registry.config().meterFilter(MeterFilter.deny(id ->
"channel".equals(id.getTag("type")) &&
"noMeters".equals(id.getTag("name"))));
微米观测
从6.0版本开始,Spring Integration采用了微米观测抽象,既能处理度量,也能通过适当的方式进行追踪观察处理器配置。
观测处理已在集成管理当ObservationRegistryBEAN 存在于应用上下文中,并且@EnableIntegrationManagement已配置。
为了自定义应安装哪些组件,需要观察模式()属性在@EnableIntegrationManagement注解。
请参见其 javadocs 中的模式匹配算法。
默认情况下,没有任何集成管理组件通过ObservationRegistry豆。
可以配置为匹配所有组件。* |
在这种情况下,这些电表并非独立收集,而是委托给适当的人观察处理器配置在提供的ObservationRegistry.
以下 Spring Integration 组件采用了各自的观察逻辑,并各自采用相应的惯例:
-
MessageProducerSupport,作为流的入站端点,被视为消费者跨度类型,并使用IntegrationObservation.HANDLER应用程序接口; -
MessagingGatewaySupport' 是一个入站请求-回复端点,被视为
服务器span类型。 它使用IntegrationObservation.GATEWAY应用程序接口; -
一
摘要消息频道.send()operation 是唯一一个能生成消息的 Spring 集成 API。 因此,它被视为制作人跨度类型,并使用IntegrationObservation.PRODCUER应用程序接口。 当通道是分布式实现时(例如,发布订阅Kafka频道或零Mq频道)并且必须在消息中添加跟踪信息。 所以,集成观察。生产者观察基于消息发送者上下文其中 Spring Integration 提供可变消息以便进行后续的追踪传播器添加头部,使其对消费者开放; -
一
摘要消息处理器是消费者跨度类型,并使用IntegrationObservation.HANDLER应用程序接口。
关于集成管理组件可以通过以下方式进行定制观察大会配置。
例如,一个摘要消息处理器期望消息接收者观察约定通过其setObservationConvention()应用程序接口。
以下是Observation API支持的度量、范围和惯例:
可观测性 - 指标
以下是该项目宣布的所有指标列表。
网关
对入站消息网关的观察。
公制名称 Spring.integration.gateway(由约定类定义o.s.i.support.management.observation.DefaultMessageRequestReplyReceiverObservationConvention).类型 定时器.
公制名称 spring.integration.gateway.active(由约定类定义o.s.i.support.management.observation.DefaultMessageRequestReplyReceiverObservationConvention).类型 长任务计时器.
| 启动观察后添加的KeyValue可能缺失在*.active指标中。 |
微米内部用途纳 秒为基单元。然而,每个后端都决定了实际的基单元。(即普罗米修斯用秒) |
包围类别的完全限定名称o.s.i.support.management.observation.集成观察.
所有标签必须以spring.integration。前缀! |
名称 |
描述 |
|
消息网关组件的名称。 |
|
请求/回复执行的结果。 |
|
组件类型——“网关”。 |
处理器
为消息处理者提供观察。
公制名称 Spring.integration.handler(由约定类定义o.s.i.support.management.observation.DefaultMessageReceiverObservationConvention).类型 定时器.
公制名称 Spring.integration.handler.active(由约定类定义o.s.i.support.management.observation.DefaultMessageReceiverObservationConvention).类型 长任务计时器.
| 启动观察后添加的KeyValue可能缺失在*.active指标中。 |
微米内部用途纳 秒为基单元。然而,每个后端都决定了实际的基单元。(即普罗米修斯用秒) |
包围类别的完全限定名称o.s.i.support.management.observation.集成观察.
所有标签必须以spring.integration。前缀! |
名称 |
描述 |
|
消息处理组件的名称。 |
|
组件类型——“handler”。 |
制作人
为消息生产者(如通道)进行观察。
公制名称 spring.integration.producer(由约定类定义o.s.i.support.management.observation.DefaultMessageSenderObservationConvention).类型 定时器.
公制名称 spring.integration.producer.active(由约定类定义o.s.i.support.management.observation.DefaultMessageSenderObservationConvention).类型 长任务计时器.
| 启动观察后添加的KeyValue可能缺失在*.active指标中。 |
微米内部用途纳 秒为基单元。然而,每个后端都决定了实际的基单元。(即普罗米修斯用秒) |
包围类别的完全限定名称o.s.i.support.management.observation.集成观察.
所有标签必须以spring.integration。前缀! |
名称 |
描述 |
|
消息处理组件的名称。 |
|
组件类型——“生产者”。 |
可观测性——跨度
以下是该项目宣布的所有跨度列表。
门户跨度
对入站消息网关的观察。
跨区名称 Spring.integration.gateway(由约定类定义o.s.i.support.management.observation.DefaultMessageRequestReplyReceiverObservationConvention).
包围类别的完全限定名称o.s.i.support.management.observation.集成观察.
所有标签必须以spring.integration。前缀! |
名称 |
描述 |
|
消息网关组件的名称。 |
|
请求/回复执行的结果。 |
|
组件类型——“网关”。 |
牵引员
为消息处理者提供观察。
跨区名称 Spring.integration.handler(由约定类定义o.s.i.support.management.observation.DefaultMessageReceiverObservationConvention).
包围类别的完全限定名称o.s.i.support.management.observation.集成观察.
所有标签必须以spring.integration。前缀! |
名称 |
描述 |
|
消息处理组件的名称。 |
|
组件类型——“handler”。 |
制作人斯潘
为消息生产者(如通道)进行观察。
跨区名称 spring.integration.producer(由约定类定义o.s.i.support.management.observation.DefaultMessageSenderObservationConvention).
包围类别的完全限定名称o.s.i.support.management.observation.集成观察.
所有标签必须以spring.integration。前缀! |
名称 |
描述 |
|
消息处理组件的名称。 |
|
组件类型——“生产者”。 |
可观测性 - 约定
下面你可以找到所有的列表全球观察大会和观察大会该项目宣布。
ObservationConvention 类别名称 |
适用的观察上下文类名称 |
|
|
|
|
|
|
|
|
|
|
|
|
观测传播
在一条线中提供一条连接的跨链,无论消息流的性质如何,即使消息频道是持久且分布式的,必须在该频道及该频道的消费者(用户)上启用该观察。
这样,追踪信息会在消息头部存储,然后再传播到消费者线程或持久化到数据库中。
这可以通过上述方式实现消息发送者上下文.
消费者(a消息处理器) 侧面恢复这些头部的追踪信息,使用消息接收者上下文并开始了一个新孩子观察.
Spring 集成 JMX 支持
另见JMX支持。