Как запретить Micrometer добавлять суффикс _total к имени метрики счетчика?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как запретить Micrometer добавлять суффикс _total к имени метрики счетчика?

Сообщение Anonymous »

В своем коде я определяю собственную метрику (счетчик) следующим образом:

Код: Выделить всё

Counter.builder("request_count")
.tags("method","GET")
.tags("path","/my/test/path")
.register(meterRegistry)
.increment();
Вы заметите, что имя метрики определяется как request_count. Однако когда я запускаю приложение, метрика публикуется следующим образом:

Код: Выделить всё

# HELP request_count_total
# TYPE request_count_total counter
request_count_total{method="GET",path="/my/test/path"} 1.0
Обратите внимание, что к имени метрики добавляется суффикс _total. По-видимому, это вызвано стандартным PrometheusNamingConvention, поэтому я переопределяю этот класс и предоставляю собственную реализацию name(), которая явно опускает процесс добавления суффикса _total. Однако это STILL приводит к публикации метрики с суффиксом.
При подключении отладчика к приложению и отслеживании кода я определил, что это происходит потому, что любой определенный пользовательский класс NamingConvention в отношении метрики счетчика в конечном итоге игнорируется, поскольку внутренний класс PrometheusMeterRegistry определяет CollectorRegistry, который обновляет все имена метрик счетчика, включая Суффикс _total, непосредственно перед публикацией показателя. Вот фрагмент метода CollectorRegistry.collectorNames(), который выполняет переименование:

Код: Выделить всё

 while(var4.hasNext()) {
Collector.MetricFamilySamples family = (Collector.MetricFamilySamples)var4.next();
switch (family.type) {
case COUNTER:
names.add(family.name + "_total");
names.add(family.name + "_created");
names.add(family.name);
break;
Таким образом, мне кажется, что единственным возможным вариантом на данный момент будет напрямую использовать класс PrometheusMeterRegistry; его конструктор позволяет указать экземпляр CollectorRegistry, и, следовательно, я должен иметь возможность передать специальную реализацию этого класса, которая не выполняет эту операцию переименования. По сути, мой вопрос таков:
1) Помимо привязки Micometer к одной реализации (т. е. к Прометею), есть ли какие-либо другие недостатки этого подхода?
2)Можете ли вы указать мне на какую-либо документацию, в которой приведены примеры непосредственного использования PrometheusMeterRegistry?>

Подробнее здесь: https://stackoverflow.com/questions/752 ... etric-name
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»