我有许多应用程序正在使用SpringBoot执行器向/metrics端点发布指标。
我还有其他一些应用程序也在使用测微仪将指标发布到/prometheus端点。
最后,我有一个云提供商,它只允许我从单个端点提取指标。他们有许多预先准备好的Grafana仪表板,但大多数都是针对执行器变量名称的。有些是针对微米变量名的。
测微仪输出相同的数据,但它使用与执行器不同的名称,例如"jvm_memory“而不是"mem”。
我真的很想找到一种方法来合并这两个数据源,以便它们将数据转储到单个端点,并且我的所有Grafana仪表板都可以与所有应用程序一起工作。
但是我不知道该怎么做才是最好的。有没有一种方法可以告诉Micrometer使用/metrics作为数据源,以便任何时候轮询它都会包含这些内容?
我们非常感谢您的任何想法。
发布于 2018-07-19 21:55:34
最好的解决方案可能取决于仪表板的复杂性。您可以配置一组仪表,以不同的名称报告值,然后只使用千分尺刮擦端点。例如:
@Bean
public MeterBinder mapToOldNames() {
return r -> {
r.gauge("mem", Tags.empty(), r, r2 -> r2.find("jvm.memory.used").gauges()
.stream().mapToDouble(Gauge::value).sum());
};
}请注意,在本例中,我们如何转换以微米为单位的内存规(相对于堆/非堆内存的不同方面),并将它们汇总到一个规中,以与旧方法匹配。
发布于 2018-08-01 00:56:07
对于Spring Boot1.5,你可以做一些类似普罗米修斯`simpleclient_spring_boot的does。
您可以从执行器度量上下文中收集PublicMetrics,并将它们公开/注册为千分尺MeterRegistry中的仪表/计数器。这一术语将在您的Prometheus擦除端点下公开这些执行器指标。
我假设你会过滤掉非功能性指标,它们是微米指标的副本。因此,我能想到的唯一一件事就是功能/业务指标实际接管。但如果您有机会将代码实际更改为微米,我会说这是更好的方法。
我还没有试过这个,只是记得我见过这个概念。
https://stackoverflow.com/questions/50634144
复制相似问题