我正在将指标收集系统从statsd迁移到Prometheus。这是一个弹簧启动应用程序,基于千分尺。我想知道是否有一种方法可以同时开始支持分层statsd指标和维度Prometheus指标。
当前,我创建计时器的方式是
Metrics.timer("apiName.endpointName.latency").record(latency)
这对于statsd很好,但不适用于Prometheus。我需要使用诸如
这样的标签来支持单独的指标service_latency {api="apiName", endpoint="endpointName"}
是否可以同时支持两个?
答案 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")...
不幸的是,这将需要您进行更多的手动更改,并且各注册表之间的代码重复。但是,您确实可以选择这样做。