この記事はエイチーム引越し侍 / エイチームコネクトの社員による、Ateam Hikkoshi samurai Inc.× Ateam Connect Inc. Advent Calendar 2020 15日目の記事です。
はじめに
引越し侍ではサーバのログをAWS Elasticserchに突っ込んでkibanaで解析しています。
朝会でダッシュボードをみて気になることがあればkibanaでログを見る、ということをしているのですが、
ぶっちゃけ今日の今日まで私は雰囲気でkibanaをやっていました。反省しています。
なので反省を生かしてきちんと使い方を調べつつまとめていこうと思います。
kibanaの使い方
今回使用しているkibanaはv7.8.0です。
Discover
- インデックスパターンを選択し見たいデータを選びます。
- 時間フィルター
初期値は直近15分のデータが表示されており、画像では12/1 0:00~12/2 0:00を選択しています。このように絶対値や現在からの相対値を設定できます。 - データを検索
KQL(Kibana Query Language)という言語を使用して検索することができます。 - フィールドの追加と削除
フィールド名の横にある「Add」をクリックすることでテーブルに表示するフィールドを選ぶことができます。
- 検索結果をフィルタリング
フィールド名をクリックすると上位5つまでの値が表示されます。ここで(+)アイコンをクリックするとその値のみに検索結果を絞ることができます。※その他の方法は後述
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にあげたものがありますが、それ以外の方法を紹介します。
- ③の検索欄の下、「Add filter」をクリック
- fieldを選択
- 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ではデータをグラフ等の様々な形で視覚化することができます。
今回は画像のような棒グラフを例にあげます。
- 作成画面から作成するタイプを選択(今回は「Vertical Bar」)
- インデックスの選択
- BucketsにX-axis(X軸)のDate histogramを追加
- BucketsにSplit seriesを選択。フィールドを選ぶと値によって図のように色分けされるデータが完成(色の変更が可能)
- 名前を付けて保存
グラフの種類によって設定できるメトリクスやバケットの構成が異なります。
また、Discoverで使った検索やfilterと同じものがこちらでも使えます。
Dashbord
VisualizeやDiscoverで作成したグラフや検索結果などをまとめて見ることができます。
- 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 です。お楽しみに!