Я использую датчики MicroMeter в приложении Spring Boot 2 для отслеживания состояний объектов. При изменении статуса вызывается метод 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.
Как мне этого добиться?