1

特定のサービスの riemann 構成で、すべてのイベントに metric=1 を割り当てようとしており、5 秒以内にそれらを合計し、結果を influxdb に送信します。

私は次のことを試しました:

(streams
  (where (service "offers")
    (fixed-time-window 5
      (smap folds/sum (with :metric 1 index))))
  influx)

実際には機能しません。influx に保存されたイベントはこのルールに一致しません。

4

2 に答える 2

2

組み込みfolds/count関数はこれを行います:

(fixed-time-window 5
  (smap folds/count influx))            

また、influx の呼び出しは、カウントを行うストリームの子である必要があるため、インデックスが作成されるのはカウントです。

を使用して例を修正する場合は、呼び出しを sum の呼び出しの外側または上流にfolds/sum移動して(with :metric 1)、メトリックが 1 に設定され、新しいメトリックが の呼び出しで合計されるようにすることができfolds/sumます。次に、 index や influx の呼び出しを smap の子ストリームとして配置し、合計されたアイテムがインデックス化されて転送されるようにします。

于 2015-07-25T00:03:42.357 に答える
1

Arthur による回答に加えて、(with and )の代わりに( ratewith ) を使用することをお勧めします。一般的には、タイム ウィンドウが終了するとすぐに起動するよりも優れていますが、タイム ウィンドウが終了した後に新しいイベントが到着するまで待機する必要があります。これは決して発生しないか、あまりにも先に発生する可能性があります。これについてリーマンに問題があります。scalefixed-time-windowsmapfolds/countratefixed-time-windowratefixed-time-window

がウィンドウ関数よりも効率的である理由を説明するaphyr からのコメントもあります。rate

で使用する必要があるのは、5 秒単位でレートを取得したい (5 秒間隔で測定された) ため、レートを秒単位で測定するためですscalerate

于 2015-07-26T00:14:02.240 に答える