web-dev-qa-db-ja.com

influxdbおよびcollectdでkapacitorを使用する

Kapacitorをinfluxdbおよびcollectdセットアップと統合しようとしています。しかし、うまくいかないようで、その理由がわかりません。

CollectedとInfluxdbは正しく実行されており、Kapacitorはinfluxdbに接続できると思います。 kapacitorログにこれが表示されます:

[influxdb] 2016/04/22 09:46:42 I! started UDP listener for collectd_db default

これは、collectdがメトリックを記録しているinfluxdbデータベースの名前です。

次のティックファイルを作成し、kapacitorにアップロードして有効にしました。

stream
    .from().measurement('cpu_value')
    .where(lambda: "type" == "percent")
    .where(lambda: "type_instance" == "idle")
    .alert()
        .crit(lambda: "value" <  100)
        // Whenever we get an alert write it to a file.
        .log('/tmp/alerts.log')

これは単なるテストスクリプトであり、うまくいけば何らかの出力が生成されます。

スクリプトが有効になっています:

Name                          Type      Enabled   Executing Databases and Retention Policies
cpu_tick                      stream    true      true      ["collectd_db"."default"]

ただし、録音は表示されません。

[centos@ip-xx-xx-xx-xx tmp]$ kapacitor list recordings
ID                                      Type    Size      Created      

「cpu_value」は私のデータベースで有効な測定値です。

これは、エラーログに記録されるものです。

[cpu_alert:stream1] 2016/04/28 13:00:51 E! error while evaluating WHERE expression: name "percent" is undefined. Names in scope: time,value,Host,instance,type,type_instance
1
Jeroen Jacobs

Kapacitorの作者はこちら...

Kapacitorラムダ式では、一重引用符と二重引用符の意味が異なります。

  • 一重引用符は文字列リテラルを示します
  • 二重引用符は、データからのフィールドまたはタグへの参照です。

この式.where(lambda: "type" == "percent")は、typeフィールドまたはタグの値がpercentフィールドまたはタグの値と等しいデータポイントのみを保持することを意味します。エラーによると

[cpu_alert:stream1] 2016/04/28 13:00:51 E! WHERE式の評価中にエラーが発生しました:名前「パーセント」が未定義です。スコープ内の名前:time、value、Host、instance、type、type_instance

percentフィールドまたはタグが存在しません。

タイプ値がpercentリテラルと等しいポイントをフィルタリングする場合は、一重引用符を使用する必要があります。

.where(lambda: "type" == 'percent')

次の表現にも同じことが言えるでしょう。

.where(lambda: "type_instance" == 'idle')

また、必要に応じて、式を一緒にANDすることもできます

.where(lambda: "type" == 'percent' AND "type_instance" == 'idle')

Kapacitorは、隣接する複数のwhereステートメントを見つけると、それらを内部でAnd'ed式に変換します。

引用符の違いを説明する関連ドキュメントは次のとおりです https://docs.influxdata.com/kapacitor/v0.12/introduction/getting_started/#keep-the-quotes-in-mind

録音がない理由については、録音をどのように作成しようとしたかについて、これ以上のコンテキストがないと答えられません。

6
nvcook42