Объедините данные привода Spring Boot и микрометра на одной конечной точке

У меня есть несколько приложений, которые используют исполнительный механизм SpringBoot для публикации метрик в конечной точке / metrics.

У меня есть другие приложения, которые также используют Micrometer для публикации показателей в конечной точке / prometheus.

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

Микрометр выдает те же данные, но использует другие имена, чем Actuator, например, «jvm_memory» вместо «mem».

Я действительно хотел бы найти способ объединить оба этих источника данных, чтобы они сбрасывали данные в одну конечную точку, и все мои информационные панели Grafana просто работали бы со всеми приложениями.

Но я не понимаю, как лучше это сделать. Есть ли способ указать Micrometer использовать / metrics в качестве источника данных, чтобы при каждом опросе он включал их?

Любые мысли приветствуются.


person Joe Zitzelberger    schedule 31.05.2018    source источник
comment
Какую версию SpringBoot вы используете? Активатор метрик питается от метрик Micrometer в загрузке 2, однако в загрузке 1 они различались по архитектуре, поэтому, вероятно, вы видите различия.   -  person checketts    schedule 02.06.2018
comment
Я использую 1.5.13   -  person Joe Zitzelberger    schedule 02.06.2018


Ответы (2)


Лучшее решение, вероятно, зависит от сложности вашей панели инструментов. Вы можете просто настроить набор датчиков, чтобы сообщать значение под другим именем, а затем использовать только конечную точку очистки микрометра. Например:

@Bean
public MeterBinder mapToOldNames() {
    return r -> {
        r.gauge("mem", Tags.empty(), r, r2 -> r2.find("jvm.memory.used").gauges()
                .stream().mapToDouble(Gauge::value).sum());
    };
}

Обратите внимание, как в этом случае мы конвертируем измеритель памяти с размерами в микрометрах (с учетом различных аспектов кучи / не-кучной памяти) и объединяем их в одну шкалу, чтобы соответствовать старому способу.

person jkschneider    schedule 19.07.2018

Для Spring Boot 1.5 вы можете сделать что-то вроде Prometheus `simpleclient_spring_boot 'работает.

Вы собираете PublicMetrics из контекста показателей привода и выставляете / регистрируете их как датчики / счетчики в микрометре MeterRegistry. В конечном итоге это откроет эти метрики исполнительного механизма под вашей конечной точкой очистки Prometheus.

Я предполагаю, что вы отфильтруете нефункциональные метрики, которые дублируют метрики микрометра. Так что единственное, о чем я могу думать, - это функциональные / бизнес-показатели, которые действительно возьмут верх. Но если у вас есть возможность действительно изменить код на Micrometer, я бы сказал, что это лучший подход.

Я не пробовал это, просто вспомнил, что видел эту концепцию.

person mweirauch    schedule 31.07.2018