2017-12-18 12 views
2

私はPrometheusを使用してメトリックデータを収集したスプリングブートアプリケーションを持っています。 Prometheusには、何か起こった回数を数えるのに適したCounterなどのメトリクスがありますが、カウントも維持しますが、減らすことができるGaugeなどです。何かの要求期間を追跡できるメトリックはありますか?たとえば、api呼び出しが行われてからapiが応答を返すまでの時間を記録したいとします。呼び出しが行われてからapiの応答が受信されるまでの時間をどのように追跡しますか?次に、Yの座標に、応答が取った時間の長さ(秒またはミリ秒)をリストすることができるグラフを作成することができます。 X軸で、タイムスタンプ(メトリックが収集された時刻)を表示させますか?Prometheusを使用して経過時間を記録する方法はありますか

答えて

2

タイミングイベントサイズ(APIレイテンシなど)には、おそらくSummaryが必要です。あなたは、その後でaggregate average latencyを計算することができ

:あなたはに言及したよう

sum without (instance)(rate(my_summary_latency_seconds_sum[5m])) 
/
    sum without (instance)(rate(my_summary_latency_seconds_count[5m]) 
+0

...要約#startTimer()を使用してタイマーを取得し、Summary.Timer#observeDuration()を使用して経過時間を取得する – Joel

2

、あなたは本当にMicrometerプロジェクトをご覧ください。 Prometheusをサポートするベンダー中立メトリックAPIを提供します。あなたがmicrometer-spring-legacy依存関係を使用したい春ブーツ1.5プロジェクトのために

Timer 
    .builder("my.timer") 
    .tags("uri", "/api/endpoint") 
    .register(registry) 
    .record(() -> { 
    /* do something */ 
    }); 

// or 
registry.timer("my.timer", "uri", "api/endpoint").record(() -> { 
    /* do something */ 
}); 

:マイクロメータは、タイマーのための原始的な特定のメーターを持っています。 Spring-Boot 2(この執筆時点では2.0.0.M7)には、マイクロメータのサポートが含まれており、OOTBにはspring-boot-starter-actuatorが含まれています。

タイミングAPIリクエストについて言及しましたが、私はあなたがSpring MVCを使用していると仮定します。これらのタイミングを自動的にサポートしています。 (あなたが時間窓の間ローリング最大を追跡するための各URIについてcount、リクエスト期間のsumと余分として、maxを得る。)

あなたはさらに、サーバー側の要求の待ち時間を計算するためにwan't場合ヒストグラムバケットの生成も可能にすることができます。

documentationをご覧ください。

関連する問題