通过普罗米修斯(statsd和普罗米修斯)支持多种指标

时间:2020-09-07 22:54:04

标签: java spring metrics statsd micrometer

我正在将指标收集系统从statsd迁移到Prometheus。这是一个弹簧启动应用程序,基于千分尺。我想知道是否有一种方法可以同时开始支持分层statsd指标和维度Prometheus指标。

当前,我创建计时器的方式是

Metrics.timer("apiName.endpointName.latency").record(latency)

这对于statsd很好,但不适用于Prometheus。我需要使用诸如

这样的标签来支持单独的指标
service_latency {api="apiName", endpoint="endpointName"}

是否可以同时支持两个?

1 个答案:

答案 0 :(得分:1)

您可以同时支持两者。推荐的方法是

Metrics.timer("latency", Tags.of("api", apiName, "endpoint", endpointName.)).record(latency)

然后使用“分层naming convention

这样,您可以根据需要将statsd标记放置在层次结构中,并且Prometheus度量标准已经标记并可以使用。

替代(不推荐)

一种替代方法(吸引力较小的方法)是在2个水表存储库之间复制水表。

当前,当您使用Metrics.timer("myMeter")时,您正在使用全局复合仪表注册表,该注册表将仪表委托给基础注册表。

相反,如果您分别调用每个注册表,则:

statsdRegistry.timer("myMeter")...
prometheusRegistry.timer("myMeter")...

不幸的是,这将需要您进行更多的手动更改,并且各注册表之间的代码重复。但是,您确实可以选择这样做。