web-dev-qa-db-ja.com

Kibana + Elastic Searchを使用してフィールドの一意のカウントを取得する方法

Kibanaを使用してフィールドの個別/一意のカウントを照会することは可能ですか? Kibanaのバックエンドとしてエラスティック検索を使用しています。

もしそうなら、クエリの構文は何ですか?クエリを作成したいKibanaインターフェイスへのリンクは次のとおりです。 http://demo.kibana.org/#/dashboard

私はlogstashでnginxアクセスログを解析し、データをエラスティック検索に保存しています。次に、Kibanaを使用してクエリを実行し、データをグラフで視覚化します。具体的には、Kibanaを使用して、特定の期間の一意のIPアドレスの数を知りたいです。

67

Kibana 4の場合は この回答に進みます

これは、用語パネルを使用して簡単に行えます。

Adding a terms panel to Kibana

ログにある個別のIPの数を選択する場合は、フィールドclientipに指定する必要があります。長さには十分な数を指定する必要があります(そうしないと、同じグループの異なるIPに参加します)スタイルテーブルで指定します。パネルを追加すると、IPとそのIPのカウントを含むテーブルが作成されます。

Table with IP and count

50
Pigueiras

現在、Kibana 4では集計を使用できます。 Kibana 3で この回答 で説明したようなパネルを作成することとは別に、今では、異なる期間で一意のIPの数を見ることができます。場所。

このようなダッシュボードを作成するには、視覚化->インデックスの選択->縦棒グラフの選択を行ってから、視覚化パネルで行ってください:

  • Y軸には、IPの一意のカウント(IPを保存したフィールドを選択)が必要です。X軸には、タイムフィールドの日付ヒストグラムが必要です。

Building a visualization

  • Applyボタンを押すと、時間通りに配信されたIPの一意の数を示すグラフが表示されます。 X軸の時間間隔を変更して、一意のIPを毎時/毎日表示できます...

Final plot

一意のカウントがapproximateであることを考慮してください。詳細については、 this answer も確認してください。

43
Pigueiras

「カーディナリティ」メトリックを使用している一意のカウントに注意してください。これは常に正確な一意のカウントを保証するものではありません。 :-)

カーディナリティメトリックは近似アルゴリズムです。 HyperLogLog ++(HLL)アルゴリズムに基づいています。 HLLは、入力をハッシュし、ハッシュからのビットを使用して、カーディナリティーの確率的推定を行います。

データの量に応じて、ElasticのUnique Countを使用して、300kデータセットに700個以上のエントリが存在しないという違いを取得できます。

詳細はこちら: https://www.elastic.co/guide/en/elasticsearch/guide/current/cardinality.html

7
Marcin

「clientip」で「topN」クエリを作成してから、「clientip」でカウントしたヒストグラムを作成し、「topN」クエリをソースとして設定します。その後、時間ごとに異なるIPのカウントが表示されます。

6
olegkhr

フィールド値の一意のカウントは、ファセットを使用して実現されます。詳細については ES documentation を参照してください。ただし、要点はクエリを作成し、フィールドで見つかった値をカウントするために結果のファセットを準備するようにESに依頼することです。使用するフィールドをカスタマイズし、値を返す方法を説明することもできます。最も基本的なファセットタイプは、上記のIPアドレスのような用語でグループ化することです。これらは非常に複雑になる可能性があり、ファセット内でクエリが必要になることもあります!

{
    "query": {
        "match_all": {}
    },
    "facets": {
        "terms": {
            "field": "ip_address"
        }
    }
}
3
J.T.

Eggsを使用すると簡単にできます。今のところクエリを書き留めます。

GET index/_search
{
  "size":0,
  "aggs": {
    "source": {
      "terms": {
        "field": "field",
        "size": 100000
      }
    }
  }
 }

これにより、fieldのさまざまな値がドキュメントカウントとともに返されます。

1
wonder