我正在将指标收集系统从statsd迁移到Prometheus。这是一个基于千分尺的弹簧启动应用程序。我想知道是否有一种方法可以同时支持分层的statsd指标和维度的Prometheus指标。
目前,我创建计时器的方式是
Metrics.timer("apiName.endpointName.latency").record(latency)这对statsd来说很好,但对Prometheus不起作用。我需要用标签支持单独的指标,比如
service_latency {api="apiName", endpoint="endpointName"}是否有可能同时支持这两种功能?
发布于 2020-09-09 01:19:03
您可以同时支持这两种方式。推荐的方式是
Metrics.timer("latency", Tags.of("api", apiName, "endpoint", endpointName.)).record(latency)然后使用“hierarchicalnaming convention”
这样,statsd标记就会在您需要时被放置在层次结构中,并且Prometheus指标已经被标记并准备好使用。
备用(不推荐)
另一种(不太吸引人的方法)是在两个计量器存储库之间复制计量器。
目前,当您使用Metrics.timer("myMeter")时,您使用的是全局复合仪表注册表,它将仪表委托给底层注册表。
相反,如果您单独调用每个注册表:
statsdRegistry.timer("myMeter")...
prometheusRegistry.timer("myMeter")...不幸的是,这将需要您进行更多的手动更改,并在注册中心之间复制代码。但是,你确实可以选择这样做。
https://stackoverflow.com/questions/63785145
复制相似问题