2

我是一般指标的新手,尤其是千分尺,所以这可能是一个愚蠢的问题:

Micrometer 在主页上将自己描述为“门面”“没有供应商锁定”、“想想 SLF4J,但用于度量”。具有“对 [...] Netflix Atlas 的内置支持”。文档说它包含在 Spring Boot 2 中。

所以我期望的是能够在启动时配置监控系统——就像我使用 SLF4J 一样。因此,此文档描述了management.metrics.export.atlas.enabledSpring Boot 的设置(以及其他设置)。但即使使用此设置,自动连接 a 也会MeterRegistry registry失败,如下所示:

[snip] 中构造函数的参数 4 需要找不到类型为“io.micrometer.core.instrument.MeterRegistry”的 bean。

行动:

考虑在你的配置中定义一个“io.micrometer.core.instrument.MeterRegistry”类型的bean。

谷歌把我带到了 Baeldung,在那里我读到了一些micrometer-registry-atlas依赖以及提供MeterRegistry类型的 bean AtlasMeterRegistry。这行得通,但这不是我所说的“没有供应商锁定的外观”,但我想我做错了?

如何在运行时提供监控系统,在 Atlas 和任何其他系统之间切换而无需重新编译?

4

2 回答 2

6

@crusy您实际上是对的,但是该功能是 Actuator 模块的一部分。这没有很好的记录,我很幸运在 Spring Boot Gitter 频道https://gitter.im/spring-projects/spring-boot/archives/2019/01/24?at=5c4980b00721b912a5cdc02f中找到了答案。

您会注意到 Spring Boot 文档中的 Metrics 部分位于 Actuator 下:https ://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-metrics 。

这意味着为了使 Micrometer 开箱即用,您需要在构建中包含 Actuator。例如对于 Gradle:

implementation ('org.springframework.boot:spring-boot-starter-actuator')

MeterRegistry豆子现在就在那里。

于 2020-10-22T14:30:52.630 回答
0

我在Wikipedia上找到的定义之一是供应商锁定:

使客户在产品和服务方面依赖供应商,在没有大量转换成本的情况下无法使用另一家供应商。

Micrometer 有助于统一接口以收集指标(计时器、仪表、计数器等),但对于这些指标如何传送到后端(Atlas、Prometheus 等)没有标准。这就是您需要定义特定库(micrometer-registry-atlas)、属性,有时还需要额外配置的主要原因。

Micrometer 不会将切换到另一个后端所需的成本降至零,但至少它们保持在最低限度。

于 2020-01-15T10:44:05.777 回答