5

私は Coda Hale Metrics の初心者です。シンプルな RESTful Web サービス メソッドを持つサンプル Spring アプリを作成しました。

Coda Hale Metrics フレームワークが提供するメーター、タイマー、およびカウンター ツールを使用して、リクエスト数、リクエスト比率、およびリクエスト期間を追跡しました。現在、これらの情報は Console Reporter of Metrics を使用してコンソールに出力しています (以下のコードを参照してください)。

@Override
    public void configureReporters(MetricRegistry metricRegistry) {

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

Coda Hale Metrics についていくつか質問があります。

(1) 現在、カウンターには合計数が表示されます。サーバーが稼働してから行われたリクエストの数。いいえを取得する方法はありますか。特定のレポート期間に行われたリクエストの数 (例:- 最初の 30 秒間のカウント = count1、2 番目の 30 秒間のカウント = count2 など...)

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

(3) これらのメトリクス データを外部 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
*/
}

これについてのご指導に感謝します。

ありがとう。

4

2 に答える 2

2

1) いいえを取得する方法はありますか。特定の報告期間に行われたリクエストの

カウンターから直接ではありません。ただし、Meter または Timer は、過去 1 分間のコール数である「m1_rate」を出力します。

通常、カウンターの値を定期的に収集し、メトリック データベースに対してクエリを作成して、この種の分析を実行します。

2)地獄のない。それはタイマーの目的ではありません。考えてみてください。レポート ウィンドウ内で数百万回の Timer 呼び出しが行われる場合があります。そのすべてのデータを保持すると、メモリ内のタイマーのサイズと、報告された値の計算が複雑になります。

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

タイマーについて報告されたさまざまなレートとメーターを使用して、要求のタイミングを収集することで、探している情報の一部を収集できる場合があることに注意してください。たとえば、直前の 1 分間に 1000 件のリクエストが発生したことがわかっていて (m1_rate が 16.6 Hz または 1 分あたり 1000 件のリクエストであるため)、50 パーセンタイルの時間が 10 ミリ秒で 99 パーセンタイルが 100 ミリ秒であることがわかっている場合、少なくとも 500 件のリクエストを想定できます。 10ms 以下で完了し、10 以上のリクエストが 100ms 以上で完了しました。

3) 確かに。DW Reporter はプラグイン可能で非常に基本的なものであり、1 日で 1 つ作成できます (受け入れられるオープン オファリングが見つからないと仮定します)。

しかし、IMO では、メトリックを保持するのに最適な場所は、メトリック固有のデータベースです。これを支援する DropWizard パッケージには、Ganglia レポーターと Graphite レポーターの 2 つのレポーターが組み込まれています。

これらのツールのいずれかを使用する利点は、時系列データに対する関数の効率的な格納、検索、および適用のために構築されていることです。考えてみてください: カウンターがあり、時間の経過に伴うその変化率をグラフにしたいとします。Graphite では、値をグラフ化するための呼び出しを、derivative() と bam でラップするだけで、レートが得られます。当然のことながら、シリーズよりもセットに関係しているSQLでその操作を実行する方法がわかりません。

于 2016-01-13T20:36:38.973 に答える
0

メトリクス ライブラリの現在の名前はDropwizard Metrics(古いバージョンを使用している可能性があるため、言及しているだけです) です。

3)については、私があなただったら、Cassandra に報告するためのこのプロジェクトと、Elasticsearch に報告するためのこのプロジェクトを調べます。前述のようなサード パーティ製モジュールのリストは、こちらで確認できます。

データをリレーショナル データベースに報告するプロジェクトは知りません。

Elasticsearch へのレポートは、データをすぐに視覚化するようにKibanaをセットアップできるため、非常に魅力的です(おそらく、Graphite/Grafana では困難な方法で)。

于 2015-09-04T12:28:13.603 に答える