Слияние данных привода пружинной загрузки и микрометра на одной конечной точке - PullRequest
0 голосов
/ 01 июня 2018

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

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

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

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

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

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

Любые мысли очень ценятся.

Ответы [ 2 ]

0 голосов
/ 31 июля 2018

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

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

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

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

0 голосов
/ 19 июля 2018

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

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

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

...