1

タイトルが示すように、私は上記のスタックを使用して、時間の経過に伴う特定のメソッド呼び出しの頻度を把握しています。

これは、コードでメトリクスの収集を設定する方法です。

 public void searchProducts(Query query) {
    Meter meter = metricRegistry.meter(MetricRegistry.name("search.products"));
    meter.mark();

    // perform search
    // ...
  }

これは、Grafana でグラフを構成する方法です。

Grafana でのグラフ構成

結果のグラフは次のようになります。

結果のグラフ

ご覧のとおり、メソッド呼び出しがない場合、行は最新の値でスタックしています。アプリケーションを停止したときに発生した 0 へのドロップがいくつかあります (最初に 2 つの大きな「こぶ」と最後にもう 1 つの「こぶ」の直後)。

最後のマークから時間が経過すると、ラインが 0 に落ちるべきではありませんか? たとえば、アプリケーションが開始され、いくつかのメソッド呼び出しが発生し、各メソッド呼び出しの間に 1 秒が経過し、約 30 秒後に行が 0 に戻り、そこにとどまります。このような:

  • 00:00アプリケーションの開始 (ラインは0にあります)
  • 00:01メソッド呼び出し (行は1に移動)
  • 00:02メソッド呼び出し (行は2に進みます)
  • 00:03メソッド呼び出し (行は3に進みます)
  • 00:04 何も起こりません(行は3のままです)
  • 00:05 何も起こりません(行は3のままです)
  • ...
  • 00:30 何も起こらない(行が0に落ちる)

代わりに、この場合のメーターはカウンターと同じように動作するように見えます-アプリケーションのライフサイクル全体の値を増やします。

編集:表示スタイル -> ヌル ポイント モード -> ゼロが設定されている場合でもグラフがどのように見えるかを次に示します。表示スタイル→ヌルポイントモード→ヌル設定でもグラフは全く同じように見えます。

ここに画像の説明を入力

更新: 応答が遅れて申し訳ありません - 最近、この問題に戻ってきました。問題の根本的な原因を突き止めました - 基盤となるデータベースがカスタム メトリクス レポーターを備えた InfluxDB であり (InfluxDB の公式レポーターはありません)、レポーター ロジックにバグがあったことが原因でした。

助けてくれてありがとう。

4

3 に答える 3

1

そのタイプの出力は、デフォルトの ExponentiallyDecayingReservoir を使用した結果である可能性があります。これにより、最近の更新がない場合に最新の値が返されます。リザーバーがきれいに洗い流されることはありません。

考えられる解決策は次のとおりです。

  • スライディング タイム ウィンドウ リザーバーに切り替える (パフォーマンスが最も低く、実装が最も簡単)
  • データを報告/記録するたびに値をフラッシュします

より詳細な投稿はこちら ( http://taint.org/2014/01/16/145944a.html ) にあります。

于 2016-08-08T17:31:14.420 に答える
1

グラフの場合、[表示スタイル] タブの下にオプションがあり、NULL 値の処理方法を選択できます。接続が選択されている場合は、説明した動作が表示されます。他に 2 つのオプションがあります。null -> 行なし、またはnull as zero -> 行がゼロになります。

古いバージョンの Grafana では、オプションはヌル ポイント モードの呼び出しです ( docs here ) 。

以下は、Grafana 3.1 のオプションのスクリーンショットです。

Null 値ドロップダウン

于 2016-07-08T11:52:59.203 に答える