Micrometer-springboot:Hikaricp、Tomcat 和 jdbc 指标未导出到 DataDog
Posted
技术标签:
【中文标题】Micrometer-springboot:Hikaricp、Tomcat 和 jdbc 指标未导出到 DataDog【英文标题】:Micrometer-springboot: Hikaricp , Tomcat and jdbc metrics are not exported to DataDog 【发布时间】:2020-12-28 01:50:14 【问题描述】:Hikaricp、Tomcat 和 jdbc 指标未导出到 DataDog
我们已经设置了 springboot 应用来将指标推送到 datadoghq,它确实导出了 60 个指标,但是缺少 hikaricp、tomcat 和 jdbc 等指标。
hikaricp、tomcat 和 jdbc - 这些 mertics 列在 /actuator/metrics
端点下,但不会导出到 datadog。
springBootVersion = '2.3.3.RELEASE'
springCloudVersion = 'Hoxton.SR7'
implementation 'io.micrometer:micrometer-registry-datadog:latest.release'
推送 hikaricp、tomcat 和 jdbc 指标是否需要任何其他设置?
【问题讨论】:
我发现了问题,我有另一个 LoggingMeterRegistry 作为主要,它正在停止将其他指标导出到 datadogmeter 注册表。如果我将 DatadogMeterRegistry 作为主要的,LoggingMeterRegistry 不会记录 tomacat、hikari 和 jdbc 指标。有什么方法可以导出所有指标并使用 LoggingMeterRegistry 登录到控制台 不要将任何一个作为主节点。默认情况下,“CompositeRegistry”应该是主要的,另外两个将被委托给。 如果我不把它作为主要的,它会抱怨有两个符合条件的 bean:Parameter 0 of method webMvcMetricsFilter in org.springframework.boot.actuate.autoconfigure.metrics.web.servlet.WebMvcMetricsAutoConfiguration required a single bean, but 2 were found: - getDatadogMeterRegistry: - loggingMeterRegistry:
这很奇怪,因为执行器包含自动配置的CompositeMeterRegistryConfiguration
。如果愿意,您可以手动创建复合注册表并手动将其他注册表添加到其中。 (我看到你在回答中这样做了)
【参考方案1】:
通常暴露给/actuator/metrics
的指标会发送到datadog 等指标系统。
您可以通过检查DatadogMeterRegistry的源代码来尝试检查究竟发送到datadog的内容是什么
在发布方法中放置一个断点并查看发送的内容,或者,将类的记录器设置为“跟踪”,以便它打印发送到数据狗的信息(链接源代码中的第 131 行)。
另一个可能的检查方向是使用可以过滤掉某些指标的过滤器(请参阅MeterFilter)。
【讨论】:
感谢您的回复,是的,我检查并启用了 TRACE,它确实只发送了 60 个指标。我发现了问题,我有另一个 LoggingMeterRegistry 作为主要,它正在停止将其他指标导出到 datadogmeter 注册表。 如果我将 DatadogMeterRegistry 作为主要的,LoggingMeterRegistry 不会记录 tomacat、hikari 和 jdbc 指标。有什么方法可以导出所有指标并使用 LoggingMeterRegistry 登录到控制台? 听起来注册表没有正确初始化……你不是依赖spring boot,只提供依赖,让spring boot为你配置一切吗?什么是主注册表?你能分享一下配置吗?一般来说,千分尺使用 CompositeMeterRegistry 来处理具有多个注册表的情况,所以我猜你不需要使用主要的...... 你应该分享初始化代码。总的来说,我认为您应该将 Composite Registry 作为“主要”注册表,它将在内部包括 Logging 和 DataDog 注册表,但从“整个系统”来看,一般来说 CompositeRegistry 是可以使用的。 也许它没有自动配置,我不记得了...无论如何,您应该尝试使用 CompositeMeterRegistry 作为“主要”注册表,并且应该在组合的帮助下将 LoggingMeterRegistry 添加到组合中'add' 方法(参见文档javadoc.io/static/io.micrometer/micrometer-core/1.0.3/…)【参考方案2】:这成功了:感谢@MarkBramnik
@Bean
@Primary
CompositeMeterRegistry compositeMeterRegistry(DatadogMeterRegistry datadogMeterRegistry, LoggingMeterRegistry loggingMeterRegistry)
CompositeMeterRegistry compositeMeterRegistry = new CompositeMeterRegistry();
compositeMeterRegistry.add(datadogMeterRegistry);
compositeMeterRegistry.add(loggingMeterRegistry);
return compositeMeterRegistry;
【讨论】:
以上是关于Micrometer-springboot:Hikaricp、Tomcat 和 jdbc 指标未导出到 DataDog的主要内容,如果未能解决你的问题,请参考以下文章