как сделать так, чтобы конечная точка /metrics отображала отсортированные показатели?

У меня есть проект Spring Boot 1.3.1. Использую привод, поэтому у меня тоже есть конечная точка /metrics.

Я использую codahale, чтобы добавить метрику для некоторых из моих методов, а полное имя класса java - это имя метрики. Все в порядке.

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

Кто-нибудь знает, как это исправить?


person Persimmonium    schedule 09.03.2016    source источник
comment
У меня такая же проблема. Вы нашли решение ?   -  person YLombardi    schedule 22.06.2016
comment
Я нашел решение, быстрое, но не идеальное: я использую curl | Сортировать. Я реализую ваше решение, когда у меня будет время. Благодарность   -  person Persimmonium    schedule 22.06.2016


Ответы (1)


Наконец-то я нашел решение этой проблемы. Я добавляю новую конечную точку, которая вызывает MetricsEndpoint и сортирует результат.

@Component
public class CustomMetricsEndpoint extends AbstractEndpoint<Map<String, Object>> {

    private MetricsEndpoint metricsEndpoint;

    @Autowired
    public CustomMetricsEndpoint(MetricsEndpoint metricsEndpoint) {
        super("custommetrics");
        this.metricsEndpoint = metricsEndpoint;
    }

    public Map<String, Object> invoke() {
        SortedMap<String, Object> metricsMap =
                new TreeMap<String, Object>(this.metricsEndpoint.invoke());
        return metricsMap;
    }

}

Теперь, когда я вызываю /custommetrics, результат сортируется по ключам.

person YLombardi    schedule 22.06.2016