web-dev-qa-db-ja.com

プログラムでspring-boot-actuatorからメトリックを取得する方法は?

春のアプリケーションが生産されています。スプリングブートではありません。私は この投稿 非spring-bootアプリケーションでspring-boot-actuatorを使用する方法について見つけました。

ただし、私たちの要件は、/ metricsエンドポイントからのデータを集約し、それに対していくつかの分析を行い、ステータスインジケーターを報告することです。

たとえば、{"heap.committed":480768,"heap.init":262144,"heap.used":294461,"heap":3728384,"threads.peak":37}などのヒープパラメータを使用して、アプリケーションのステータス(FATAL、WARN、HEALTHY)を示すことができます。

これはほんの一例です。私たちの要件はもっと複雑です。実際には、(status endpoint/metricsおよび/healthエンドポイントからのデータに基づいて)さらに情報を追加したいspring-boot-actuatorがすでにあります。

これを実現するために私が考えている1つの方法は、アプリケーション内で-を使用してREST /metricsおよび/healthを呼び出し、データを収集して集計し、応答を返すことです。私はそれが推奨される方法ではないと思います。

これらのパラメーターを直接抽出できるBeanがある場合は、それを自動配線し、必要に応じてその場で計算します。 (実際、定期的に計算するようにスケジュールします)。

/metricsから返されるすべての属性に興味があります。 /healthからの次のことにも興味があります。

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

どのBeanを自動配線して、これらの属性を無料で取得する必要がありますか?

ありがとう

[〜#〜]編集[〜#〜]

この post には@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

15
brain storm

/metricsからの出力はMetricsEndpointによって生成されます。 @Autowiredを持つことができるBeanとして利用できます。その上でinvokeを呼び出すと、必要なデータが得られます。

HealthEndpointを使用して/healthについても同じことができます。

31
Andy Wilkinson