Как обновить значение тега для экспортированной метри c в микрометрах? - PullRequest
0 голосов
/ 20 марта 2020

Я использую микрометр для экспорта данных по потреблению API сторонних производителей. Теперь я хочу точно подсчитать ошибочные запросы и экспортировать идентификаторы каждого неудачного запроса. Вызов метода ниже для каждого restTemplate вызова обмена.

private DistributionSummary incFailedCounter(String requestId) {

        this.registry = beanProvider.getRegistry();

        DistributionSummary summary = summarys.get(myCounter);
        if (summary == null) {
            Builder tags = DistributionSummary.builder("failed.test").tags("req_id", requestId, "count", "1");
            summary = tags.register(registry);
            summarys.put(myCounter, summary);
        } else {

            String tag = summary.getId().getTag("req_id");
            String[] split = tag.split(",");

            summary.close();

            summarys.put(myCounter,
                    DistributionSummary.builder("failed.test")
                            .tags("req_id", tag + ", " + requestId, "count", String.valueOf(split.length + 1))
                            .register(registry));
        }
        return summary;
    }

Этот код вставляет новую строку в metri c для каждого запроса.

failed_test_count{count="1",instance="localhost:8080",job="monitor-app",req_id="1157408321"}
failed_test_count{count="2",instance="localhost:8080",job="monitor-app",req_id="1157408321, 1157408321"}
failed_test_count{count="3",instance="localhost:8080",job="monitor-app",req_id="1157408321, 1157408321, 1157408321"}

Проблема заключается в следующем Размер metri c увеличивается со многими запросами. Есть ли способ удалить или заменить один и тот же тег и экспортировать только одну динамику c metri c с обновленными req_ids?

1 Ответ

0 голосов
/ 20 марта 2020

Невозможно удалить или обновить теги , потому что они неизменны. Одним из способов является отмена регистрации измерителя тока. Используемый ниже метод убрал зарегистрированный счетчик и применил новый.

registry.remove(summary.getId());

Это производит одну строку метри c.

failed_test_count{count="4",instance="localhost:8080",job="monitor-app",req_id="1157408321, 58500184, 58500184, 58500184"}
...