как получить метрики от 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
.