Spring 集成通道统计指标
Posted
技术标签:
【中文标题】Spring 集成通道统计指标【英文标题】:Spring Integration Channel Statistics Metrics 【发布时间】:2017-06-22 12:21:41 【问题描述】:不知何故,我没有捕捉到 Spring-Integration Metrics 内容。我想要的是统计输出,每秒有多少消息通过消息通道,最小和最大吞吐量是多少。如果我使用newTicketChannel.getSendRate()
,那么我会变成以下输出:
我清楚的是N
(消息数)。对我来说意味着每秒处理的消息数量(?)。但我完全不清楚min
和max
的值。我需要类似 min=200, max=380 => 表示 200 是最后一分钟的最低费率,最大 380 最后一分钟,或类似的东西。
好的实用方法是怎样的?提前致谢。 :-)
【问题讨论】:
【参考方案1】:min
和 max
是自上一个 reset()
起;如果您不重置,它们代表自应用启动以来的最小值/最大值。
平均值是随着时间和消息数量的指数移动平均值。
Documentation here.
您必须定期reset()
MessageChannelMetrics
才能获得新的最小值/最大值。
【讨论】:
感谢您快速重播。当您说min
和max
从启动应用程序开始时保持不变时,为什么这些值有时会有所不同。我还有一个问题,max
mean 怎么可能?我已经找到的文档,但不知怎的,它没有在那里回答我的问题。
我现在做了一个调度程序,它经常重置统计信息,这对我有用。谢谢你 。 :-) 测试
但是 getSendRate().getMin()
和 getSendRate().getMax()
输出我真的不明白,如果意思是例如300,例如最大 0.02 怎么可能?我也通过重置获得了这些值。到目前为止,我的答案中描述的计算只得到了有意义的值
我只是看了一下代码;我同意,这有点令人困惑,但是 min 和 max 不是速率,它们是发送之间的持续时间。所以[N=100, min=0.100000, max=0.127000, mean=9.696723, sigma=0.010866]
表示发送之间的最短时间为 100 毫秒,最长为 127 毫秒,平均(移动)速率为每秒 9.7 条消息。所以最大速率是1 / min duration
,最小速率是1 / max duration
。
但是绝对最小/最大速率(或持续时间)不是很有趣;最小/最大移动平均速率可能更有用。随时打开new feature JIRA issue 和contributions are welcome。【参考方案2】:
同时为了得到我想要的结果,我做了以下事情:
通缉
-
消息/秒
最大消息/秒
最少消息/秒
解决方案:
1/newTicketChannel.getSendDuration().getMean() * 1000
1/newTicketChannel.getSendDuration().getMin() * 1000
1/newTicketChannel.getSendDuration().getMax() * 1000
如果 Spring 集成指标中有通用功能可以获得相同的结果,请不要犹豫告诉我。有人提供有关我在问题中发布的值的平均值的信息会很酷。
感谢和欢呼:-)
【讨论】:
以上是关于Spring 集成通道统计指标的主要内容,如果未能解决你的问题,请参考以下文章
升级到 Spring Boot 2 后,如何向 prometheus 公开缓存指标?
Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台
文华财经期货K线多周期画线技术,多重短线技术共振通道线指标公式——多周期主图自动画线