2015-09-04 6 views
5

私はCoda Hale Metricsの初心者です。簡単なRESTful Webサービスメソッドを持つサンプルのSpringアプリケーションを作成しました。Coda Haleを維持する指標情報

私は、Coda Hale Metricsフレームワークが提供するMeter、Timer、Counterツールを使用して、要求数、要求比率、要求期間を追跡しました。現在、Console Reporter of Metrics(以下のコードを見てください)を使用して、これらの情報をコンソールに出力します。

@Override 
    public void configureReporters(MetricRegistry metricRegistry) { 

     registerReporter(ConsoleReporter.forRegistry(metricRegistry).build()) 
       .start(30, TimeUnit.SECONDS); 
    } 

私はCoda Hale Metricsに関する質問はほとんどありません。

(1)現在カウンタは、サーバーが起動してからのリクエストのnoを得る方法はありますか? (例:最初の30秒間のカウント=カウント1、2番目の30秒間のカウント=カウント2など)

(2)各リクエストの期間を取得することは可能ですかタイマを使用していますか?現在のところ、Timerは、行われているすべての要求の最小、最大、および平均レートを表示します。

(3)Metricsデータを外部DB(例: - MySQL)に保存する可能性はありますか?

以下は私のRESTサービス方法です。

@RequestMapping(value = "/examplerest", method = RequestMethod.GET) 
    @ResponseBody 
    @Metered(name="exampleRestMetered") 
    @Timed(name="exampleRestTimed") 
    @Counted(name="exampleRestCounted", monotonic=true) 
    public String exampleRest(
      HttpServletResponse response) { 

/** 
some logics here 
*/ 
} 

ご指摘いただきありがとうございます。

ありがとうございました。

+0

あなたはTwitterの[zipkin](http://zipkin.io)をチェックしたいと思うかもしれません。 – brettw

答えて

0

メトリックライブラリの現在の名前はDropwizard Metricsです(以前のバージョンを使用している可能性があるので、それを言います)。 3については

私があなただったら、私はElasticsearchに報告するためのカサンドラとthisプロジェクトに報告するためのthisプロジェクトをチェックアウトします。前述のhereのようなサードパーティのモジュールのリストがあります。

私は、リレーショナルデータベースにデータを報告するプロジェクトは認識していません。

Elasticsearchに報告することはありません取得する方法はあります)

2

1(おそらくグラファイト/ Grafanaでは難しいだろうな方法で)あなたは、セットアップKibanaはすぐにあなたのデータを視覚化する可能性があるので非常に魅力的である可能性があります。特定の報告期間に行われたリクエストの数

直接カウンターではありません。しかし、メーターまたはタイマーは、過去1分以内の呼び出しの数でなければならない "m1_rate"を出力します。

一般に、私は定期的にカウンタの値を収集し、この種の分析を実行するために自分のメトリクスデータベースに対してクエリを書きます。

2)Hell no。それはタイマーのためのものではありません。それについて考えてみましょう:レポートウィンドウ内で何百万ものTimerを呼び出すかもしれません。すべてのデータを保持すると、メモリ内のタイマーのサイズが大きくなり、レポートされた値が複雑になります。

各リクエストに本当に時間が必要な場合は、これはロギングまたは監査用のジョブです。また、さまざまな軸に沿ってパフォーマンスをロールアップするのに役立つ、要求の固有の識別特性を記録することもできます。

タイマーについて報告されたさまざまなレートとメーターによって、リクエストのタイミングを収集するために探しているインテルの一部を組み立てることができます。たとえば、1000分の1の要求が最後の分に発生したことがわかっている場合(m1_rateが16.6 Hzまたは1000分の1分の要求なので)、50パーセンタイル時間が10ミリ秒、99パーセンテージが100ミリ秒であることがわかっている場合は、 10ms以内に完了し、10ms以上が100ms以上で完了したことを示します。

3) DW Reportersはプラガブルで気が狂っているので、あなたは1日に1つ書くことができます(あなたがオープンなオファーを見つけることができないと仮定して)。

メトリックを維持するための最良の場所は、メトリクス固有のデータベースです。 DropWizardパッケージには、GangliaのレポーターとGraphiteのレポーターの2人のReporterが参加しています。

これらのツールの1つを使用する利点は、効率的な保存、検索、および時系列データの関数の適用のために構築されていることです。考えてみましょう:あなたはカウンターを持っており、その変化率を経時的にグラフ化したいと考えています。グラファイトを使用すると、デリバティブ()とバムで値をグラフ化するためにコールをラップするだけで、レートを取得できます。どのように私はSQLで操作を実行するのか分かりませんが、これは当然シリーズよりもセットに関係しています。

+0

私はcodahaleメトリック[ここ](http://stackoverflow.com/questions/40903403/how-to-reset-metrics-every-x-seconds)で同様の質問をしています。 30秒ごとにカウンターをリセットする方法については混乱しています。私たちがそれをできるかどうかはわかりません。 – user1950349

関連する問題