16
5

More than 3 years have passed since last update.

私は雰囲気でkibanaをやっていたので反省して使い方をちゃんとまとめることにする

Posted at

この記事はエイチーム引越し侍 / エイチームコネクトの社員による、Ateam Hikkoshi samurai Inc.× Ateam Connect Inc. Advent Calendar 2020 15日目の記事です。

はじめに

引越し侍ではサーバのログをAWS Elasticserchに突っ込んでkibanaで解析しています。
朝会でダッシュボードをみて気になることがあればkibanaでログを見る、ということをしているのですが、
ぶっちゃけ今日の今日まで私は雰囲気でkibanaをやっていました。反省しています。
なので反省を生かしてきちんと使い方を調べつつまとめていこうと思います。

kibanaの使い方

今回使用しているkibanaはv7.8.0です。

Discover

データをいろんな条件で検索してグラフ化される画面です。

  1. インデックスパターンを選択し見たいデータを選びます。
  2. 時間フィルター
    初期値は直近15分のデータが表示されており、画像では12/1 0:00~12/2 0:00を選択しています。このように絶対値や現在からの相対値を設定できます。
  3. データを検索
    KQL(Kibana Query Language)という言語を使用して検索することができます。
  4. フィールドの追加と削除
    フィールド名の横にある「Add」をクリックすることでテーブルに表示するフィールドを選ぶことができます。
    スクリーンショット 2020-12-15 0.54.31.png
  5. 検索結果をフィルタリング
    フィールド名をクリックすると上位5つまでの値が表示されます。ここで(+:mag:)アイコンをクリックするとその値のみに検索結果を絞ることができます。※その他の方法は後述

Kibana Query Language

完全一致

  • {フィールド}:{値}
  • andやorも使える
    • response:200
    • message:"Quick brown fox"
    • response:200 and (extension:php or extension:css)
    • response:(200 or 404)

否定

  • not {構文}
    • not response:200
    • response:200 and not (extension:php or extension:css)

演算子

  • >, >=, <, <=, *
    • bytes > 1000
    • machine.os:win*
      • ワイルドカードでwinで始まる文字列すべてと一致

ネストされたフィールド

{
  "grocery_name": "Elastic Eats",
  "items": [
    {
      "name": "banana",
      "stock": "12",
      "category": "fruit"
    },
    {
      "name": "peach",
      "stock": "10",
      "category": "fruit"
    },
    {
      "name": "carrot",
      "stock": "9",
      "category": "vegetable"
    },
    {
      "name": "broccoli",
      "stock": "5",
      "category": "vegetable"
    }
  ]
}

上のようなネストされたフィールドは下記のように検索できます。

  • items:{ name:banana and stock > 10 } 1つめが一致
  • items:{ name:banana and stock:9 } 一致なし
  • items:{ name:banana } and items:{ stock:9 } 1つめと3つめが一致

注意

以前のversionで使えたresponse:[400 TO 499]のような範囲指定はこのバージョンでは使えないので注意

filter

フィルターを使う簡単な方法は5にあげたものがありますが、それ以外の方法を紹介します。
1. ③の検索欄の下、「Add filter」をクリック
2. fieldを選択
3. Operatorの選択

Operator
is フィールドの値が指定された値と一致
is not フィールドの値が指定された値と一致しない
is one of フィールドの値が指定された値の1つと一致
is not one of フィールドの値が指定された値のいずれとも一致しない
is between フィールドの値が指定された範囲内に存在
is not between フィールドの値が指定された範囲内に存在しない
exists フィールドには任意の値が存在
does not exist フィールドに値が存在しない

4.フィルタの値を選択
5.「Save」してフィルタを検索に適用

filterのアクション

  • Pin across all apps → インデックスを変更したり、Visualizeに切り替えてもそのまま残る
  • Exclude results → フィルターが逆の意味になる
  • Temporarily disable → 一時的に無効になる。フィルタは削除されず、もう一度クリックすると有効化できる。
  • Delete

Edit as Query DSL

フィルタの編集画面にでてくるこれを利用すると、クエリを直接変更できます。これにより複数のフィールドを使用してより複雑なフィルターを作成できます。
Query DSL

下の例では中国かカナダからのアクセスで発生している404エラーを表示するフィルターを作成しています。

{
  "bool": {
    "should": [
      {
        "term": {
          "geoip.country_name.raw": "Canada"
        }
      },
      {
        "term": {
          "geoip.country_name.raw": "China"
        }
      }
    ],
    "must": [
      {
        "term": {
          "response": "404"
        }
      }
    ]
  }
}

Visualize

Visualizeではデータをグラフ等の様々な形で視覚化することができます。

スクリーンショット 2020-12-15 5.30.26.png

今回は画像のような棒グラフを例にあげます。

  1. 作成画面から作成するタイプを選択(今回は「Vertical Bar」)
  2. インデックスの選択
  3. BucketsにX-axis(X軸)のDate histogramを追加
  4. BucketsにSplit seriesを選択。フィールドを選ぶと値によって図のように色分けされるデータが完成(色の変更が可能)
  5. 名前を付けて保存

グラフの種類によって設定できるメトリクスやバケットの構成が異なります。
また、Discoverで使った検索やfilterと同じものがこちらでも使えます。

Dashbord

VisualizeやDiscoverで作成したグラフや検索結果などをまとめて見ることができます。

スクリーンショット 2020-12-15 5.50.33.png

  • Addで作成済みのVisualizeやDiscoverを選択
  • Createで新しいグラフ等も作成可能
  • 検索やフィルターの使用も可能

まとめ

まとめてみたらほぼ公式のドキュメントを日本語化しただけみたいになってしまいました。
英語を読むのに時間がかかる自分の忘備録としては使えるかなと思いますが、
もっと詳しい使い方は公式の方を参考にしてみてください。

公式のドキュメント https://www.elastic.co/guide/en/kibana/7.8/index.html

明日

Ateam Hikkoshi samurai Inc.× Ateam Connect Inc. Advent Calendar 2020 15日目の記事は、いかがでしたでしょうか。
明日はハリボー大好き @wakky_404 です。お楽しみに!

16
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
5