как получить метрики от spring-boot-actuator программно?

мы имеем применение весны в продукции. Это не пружинный ботинок. Я нашел этот пост о том, как использовать пружинный привод в приложении без пружинной загрузки.

однако, требование для нас состоит в том, чтобы объединить данные из / Metrics endpoint и сделать некоторую аналитику на нем и сообщить индикатор состояния.

например, мы можем использовать параметр кучи, например {"heap.committed":480768,"heap.init":262144,"heap.used":294461,"heap":3728384,"threads.peak":37} чтобы указать статус приложения-фатальный, предупреждающий или здоровый.

это просто пример. наше требование более сложное. На самом деле, у нас уже есть status endpoint куда мы хотим добавить больше информации (на основе данных от /metrics и /health точки spring-boot-actuator).

один из способов я думал достигая это сделать отдых вызов /metrics и /health С-в приложении, собирать данные, агрегировать их и вернуть ответ. Я не думаю, что это рекомендуемый способ.

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

меня интересуют все атрибуты, возвращенные из /metrics. хотя меня также интересует следующее из /health.

{"diskSpace":{"status":"UP","free":386186194944,"threshold":10485760}}

какие бобы я должен autowire и получить эти атрибуты бесплатно!

спасибо

редактировать

этой в должности имеет @Autowired MetricRepository. Но по какой-то причине он возвращает только пользовательские свойства счетчика. Он не возвращает кучу, информацию о памяти и т. д Например: Reporting metric counter.calls.get_greeting=4 Reporting metric counter.calls.get_greeting.1=1 Reporting metric counter.calls.get_greeting.2=1 Reporting metric counter.calls.get_greeting.3=1 Reporting metric counter.calls.get_greeting.4=1 Reporting metric counter.status.200.greeting.number=4 Reporting metric counter.status.404.star-star=1

1 ответов


вывод /metrics произведен MetricsEndpoint. Он доступен как Боб, который вы можете иметь @Autowired. Зову invoke он должен дать вам данные, которые вы хотите.

вы можете сделать то же самое для /health С HealthEndpoint.