首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >春季网络流量2.4.4 -计量系统随时间无限增长

春季网络流量2.4.4 -计量系统随时间无限增长
EN

Stack Overflow用户
提问于 2021-04-23 23:21:00
回答 2查看 781关注 0票数 0

有关SpringBoot网络流量项目的一些小问题,以及随着时间的推移一些指标增长过快的问题。

我们的web应用程序正在使用Netty,我们声明一个bean如下:

代码语言:javascript
复制
 @Bean
    public NettyServerCustomizer nettyServerCustomizer() {
        return httpServer -> httpServer.metrics(true, () -> new MicrometerChannelMetricsRecorder("name", "name"));
    }

我们的web应用程序公开了一个用于轮询的/metrics端点。我们有许多有趣的度量标准,希望保留它们。

实际上,我们只是计算了指标的总数,在第1次投票中,我们得到了大约300次,一分钟后,在第2次投票中,我们得到了大约1300次,然后大约2300次,等等,你可以想象,经过一天的应用程序之后,这个端点响应和网络字节发送到了屋顶。

我注意到四种特定的指标正在无限期地增长,而且增长速度非常快。

代码语言:javascript
复制
 tls_handshake_time_seconds_count
 data_received_bytes_count
 data_received_bytes_max
 data_received_bytes_sum

每次我们投票/metrics时,这四个指标结合在一起,每分钟就会增加1000个条目。随着轮询响应时间的不断增加,发送的字节数也在增加,这是令人震惊的。

我可以问一下如何禁用这四种特殊指标吗?我想让其他一切保持不变。

老实说,我发现这些指标非常有用,因为我们有一个警报设置,当SSL握手时间很高时,这是非常有用的。

不幸的是,增长太残酷了。我想问:

  • 怎么才能让这四个人停用?(如果可能的话,不要无意中禁用其他有用的度量标准)
  • 对于未来,如何保持它们的启用,但没有这种无法控制的增长新指标随着时间的推移。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-24 17:22:18

1.如何禁用特定指标

您可以使用MeterFilter按名称禁用特定指标。您需要将您的MeterFilter注册为一个spring托管bean。

代码语言:javascript
复制
    @Bean
    public MeterFilter myMeterFilter() {
        return MeterFilter.deny(id -> id.getName().startsWith("data_received_bytes") ||
                id.getName().startsWith("tls_handshake_time")
        );
    }

2.如何控制/限制度量上的标记数

您还可以使用MeterFilter来实现这一点。可以使用MeterFilter对特定度量的特定标记设置基数限制,从而限制这些指标的增长,并限制它们对应用程序的影响。

代码语言:javascript
复制
    @Bean
    public MeterFilter myMeterFilter() {
        return MeterFilter.maximumAllowableTags("data_received_bytes", "tagWithHighCardinality", 100,
                MeterFilter.deny());
    }

上面的两个解决方案是针对您所观察到的问题的解决方案,您可能最终希望了解,为什么,这些特定度量的基数随着时间的推移而增加。

MeterFilter文档

票数 1
EN

Stack Overflow用户

发布于 2021-04-27 07:44:25

我建议您使用HttpServer公开的API。

度量(布尔值,函数)

代码语言:javascript
复制
HttpServer.create().metrics(true, Function)

这将启用与Micrometer的默认集成。

度量(布尔值、供应商、功能)

代码语言:javascript
复制
HttpServer.create().metrics(true, CustomHttpServerMetricsRecorder::new, Function)

这向您公开了HttpServer指标。注意,在这个API中,CustomHttpServerMetricsRecorder实现了HttpServerMetricsRecorder,而不是像您的示例MicrometerChannelMetricsRecorder那样。

考虑检查参考指南和那里的建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67237854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档