0

我有许多使用 SpringBoot 执行器将指标发布到 /metrics 端点的应用程序。

我还有一些其他应用程序也在使用 Micrometer 将指标发布到 /prometheus 端点。

最后,我有一个云提供商,它只允许我从一个端点提取指标。他们有许多预先准备好的 Grafana 仪表板,但大多数都针对 Actuator 变量名称。有些针对千分尺变量名称。

Micrometer 输出相同的数据,但它使用与 Actuator 不同的名称,例如“jvm_memory”而不是“mem”。

我真的很想找到一种方法来合并这两个数据源,以便它们将数据转储到单个端点,并且我所有的 Grafana 仪表板都可以与所有应用程序一起使用。

但我不知道最好的方法来做到这一点。有没有办法告诉 Micrometer 使用 /metrics 作为数据源,以便在任何时候轮询它都会包括那些?

任何想法都非常感谢。

4

2 回答 2

0

最佳解决方案可能取决于仪表板的复杂性。您可能只需配置一组仪表以使用不同的名称报告值,然后仅使用 Micrometer 刮擦端点。例如:

@Bean
public MeterBinder mapToOldNames() {
    return r -> {
        r.gauge("mem", Tags.empty(), r, r2 -> r2.find("jvm.memory.used").gauges()
                .stream().mapToDouble(Gauge::value).sum());
    };
}

请注意,在这种情况下,我们如何转换以 Micrometer 为单位的内存量规(针对堆/非堆内存的不同方面)并将它们汇总为一个量规以匹配旧方式。

于 2018-07-19T13:55:34.390 回答
0

对于 Spring Boot 1.5,您可以执行类似于 Prometheus `simpleclient_spring_boot' 的操作

您从 actuator-metrics 上下文中收集 ,PublicMetrics并将它们公开/注册为 Micrometer 中的 Gauges/Counters MeterRegistry。这将在您的 Prometheus 抓取端点下公开这些执行器指标。

我假设您会过滤掉与 Micrometer 重复的非功能性指标。所以我唯一能想到的是实际接管的功能/业务指标。但是,如果您有机会将代码实际更改为 Micrometer,我会说这是更好的方法。

我没试过这个,只是记得我见过这个概念。

于 2018-07-31T16:56:07.277 回答