如何根据标签更新MicroMeter量规

问题描述 投票:1回答:1

我在Spring Boot 2应用程序中使用MicroMeter量规来跟踪对象的状态。状态更改时,将调用statusArrived()方法。此功能应更新与该对象有关的量规。

这是我当前的实现:

public class PrometheusStatusLogger {

    private int currentStatus;

    public void statusArrived(String id, int value) {
        currentStatus = value;
        Tags tags = Tags.of("product_id", id);

        Gauge.builder("product_status",this::returnStatus)
          .tags(tags)
          .strongReference(true)
          .register(Metrics.globalRegistry);
    }

    private int returnStatus(){
        return currentStatus;
    }    
}

这很好,但是问题是,当调用此方法时,所有量规值都会更新。我只希望更新具有给定product_id的量规。

输入

statusArrived(1, 2);
statusArrived(2, 3);

当前输出

product_status{product_id=1} 3
product_status{product_id=2} 3

所有仪表已更新

所需的输出

product_status{product_id=1} 2
product_status{product_id=2} 3

仅更新具有给定product_id标签的量规。

我该如何实现?

spring-boot prometheus gauge micrometer
1个回答
0
投票

由于您的所有量规都引用相同的currentStatus,因此当输入新值时,所有量规的来源都会更改。而是使用地图通过ID跟踪所有当前状态:

© www.soinside.com 2019 - 2024. All rights reserved.