LoginSignup
2
6

More than 3 years have passed since last update.

【再入門】サクッと作る「Kibanaダッシュボード」

Last updated at Posted at 2021-02-24

はじめに

1時間でこんなダッシュボード作ってみたくありませんか?
image.png

棒グラフ円グラフ表グラフの3つを覚えるだけでできるんです!
image.png

本投稿の内容

Amazon Elasticsearch Service (以降、AES)に取り込んだログを使って
汎用的に使えるKibanaのダッシュボードを作成する方法を紹介します。

どんなログを利用しても同じようなダッシュボードの作成が可能です。

利用するデータ

今回利用するログはAurora PostgreSQLの監査ログになります。
以下、利用するログデータのデータ構造になります。

フィールド (論理名) フィールド名 (物理名) 値 (サンプル) データ型 Kibanaで利用
タイムスタンプ timestamp 2020-10-19 10:49:24 日付型
IPアドレス ipaddress 172.31.41.200 IP型
ポート番号 src_port 44050 文字列型 (keyword) -
ユーザ名 username postgres 文字列型 (keyword)
データベース名 database postgres 文字列型 (keyword)
プロセスID process_id 27653 文字列型 (keyword) -
ログレベル log_level LOG 文字列型 (keyword) -
ログタイプ log_type AUDIT 文字列型 (keyword) -
認証タイプ audit_type OBJECT 文字列型 (keyword) -
ステートメントID statement_id 1 文字列型 (keyword) -
サブステートメントID substatement_id 1 文字列型 (keyword) -
クラス class READ 文字列型 (keyword) -
コマンド command SELECT 文字列型 (keyword)
オブジェクトタイプ object_type TABLE 文字列型 (keyword) -
オブジェクト名 object_name public.tessttable 文字列型 (keyword)
クエリ文 statement select * from testtable; 文字列型 (text)
パラメータ parameter <not logged> 文字列型 (keyword) -

ログの取り込み方法は、以下を参考にして頂ければと思います。 (多少、オブジェクトの命名が異なります)

【参考】
Aurora PostgreSQLの監査ログをAmazon ESに取り込んでみた

利用環境

項目 内容
Elasticsearch 7.9.1 (latest)
Kibana 7.9.1 (latest)

※投稿時点における最新版を採用しています。

実施手順

以下の手順でダッシュボードを作成します。

  1. 棒グラフの作成
  2. 円グラフの作成
  3. 表グラフの作成
  4. 検索条件の作成
  5. ダッシュボードの作成

1. 棒グラフの作成

  • Kibanaにログインします。
  • [Visualize]でCreate new visualizationをクリックします。

image.png

  • Vertical Barをクリックします。
    image.png

  • PostgreSQLの監査ログが格納されているIndex Patternsを選択します。

image.png

  • Y軸のラベル名を好きな名前に変更します。 (今回は、ログ件数としています)

image.png

  • X軸を定義するため、Bucketsを[+Add]でX-axisをクリックします。

image.png

  • X軸に日付型のフィールドを利用するため、Data Histogramを利用して、❶〜❸を指定します。

image.png

  • [Panel settings]でShow X-axis linesをオンにします。 (少しだけイケてる感じにします)
  • 下部の[Update]をクリックし、設定をグラフに反映させます。

image.png

  • 棒グラフが表示されれば完了です。上部の[Save]ボタンをクリックして保存します。

image.png

  • 好きな名前をつけて保存します。(今回は、PostgreSQL_AuditLog_VarChartとしています)

image.png

2. 円グラフの作成

  • 次はPieをクリックし、円グラフを作成します。

image.png

  • Index Patternsは先程の棒グラフと同様PostgreSQLの監査ログの入っているものを選択します。
  • 凡例のラベル名を好きな名前に変更します。 (今回は、ログ件数としています)

image.png

  • 円グラフの内訳を定義するため、Bucketsを[+Add]でSplit slicesをクリックします。

image.png

  • usernameフィールドの上位10件+それ以外を「その他」として表示させるため、❶〜❼を実施します。

image.png

  • 円グラフが表示されれば完了です。上部の[Save]ボタンをクリックして保存します。

image.png

  • 好きな名前をつけて保存します。(今回は、PostgreSQL_AuditLog_Pie_Usernameとしています)

image.png

  • 上記の方法で以下の円グラフも作成します。(グラフごとの違いだけをまとめています)
# Field (利用するフィールド) Custom label Title (グラフ名)
1 ipaddress 送信元IPアドレス PostgreSQL_AuditLog_Pie_IPAddress
2 database データベース名 PostgreSQL_AuditLog_Pie_Database
3 command SQL種別 PostgreSQL_AuditLog_Pie_Command
4 object_name テーブル名 PostgreSQL_AuditLog_Pie_ObjectName

3. 表グラフの作成

  • 次はData Tebleをクリックし、表グラフを作成します。

image.png

  • Index Patternsは先程の棒グラフと同様PostgreSQLの監査ログの入っているものを選択します。
  • 凡例のラベル名を好きな名前に変更します。 (今回は、ログ件数としています)

image.png

  • 表グラフの内訳を定義するため、Bucketsを[+Add]でSplit rowsをクリックします。

image.png

  • usernameフィールドの上位10件+それ以外を「その他」として表示させるため、❶〜❼を実施します。

image.png

  • 11位以下をその他として表示するため、❶と❷を設定し、[Update]をクリックします。

image.png

  • 表グラフが表示されれば完了です。上部の[Save]ボタンをクリックして保存します。

image.png

  • 好きな名前をつけて保存します。(今回は、PostgreSQL_AuditLog_DataTable_Usernameとしています)

image.png

  • 上記の方法で以下の表グラフも作成します。(グラフごとの違いだけをまとめています)
# Field (利用するフィールド) Custom label Title (グラフ名)
1 ipaddress 送信元IPアドレス PostgreSQL_AuditLog_DataTable_IPAddress
2 database データベース名 PostgreSQL_AuditLog_DataTable_Database
3 command SQL種別 PostgreSQL_AuditLog_DataTable_Command
4 object_name テーブル名 PostgreSQL_AuditLog_DataTable_ObjectName

4. 検索条件の作成

  • 最後に少しグラフとは異なりますが、[Discover]を使って検索条件を作成します。
  • [Discover]に移動し、Available fieldsから下記フィールドで[add]をします。
  1. ipaddress
  2. database
  3. command
  4. object_name
  5. statement
  6. username

image.png

  • Selected fieldsに上記フィールドがあることを確認し、❷の並びに表示を並び替えます。

image.png

  • 好きな名前をつけて保存します。(今回は、PostgreSQL_AuditLog_Searchとしています)

image.png

5. ダッシュボードの作成

  • [Dashboard]でCreate new dashboardをクリックします。

image.png

  • Add an existingをクリックし、ここまで作成してきたアイテムを利用します。

image.png

  • PostgreSQL _AutidLogから始まるアイテムを全てダッシュボードに追加します。

image.png

  • 棒グラフ、円グラフ、表グラフ、検索条件の順に上から整頓して配置します。

image.png
image.png

  • プロットしたグラフ(ここではパネル)の右上のボタンをクリックし、Edit panel titleを選択します。

image.png

  • 分かりやすいグラフの名前をつけて保存します。

image.png

  • 今回のダッシュボードでは下記のようにパネル名を変更しています。
# Title (グラフ名) Panel title (パネル名)
1 PostgreSQL_AuditLog_VarChart ログ件数推移
2 PostgreSQL_AuditLog_Pie_Username ユーザ名_割合
3 PostgreSQL_AuditLog_Pie_IPAddress 送信元IPアドレス_割合
4 PostgreSQL_AuditLog_Pie_Database データベース名_割合
5 PostgreSQL_AuditLog_Pie_ObjectName テーブル名_割合
6 PostgreSQL_AuditLog_Pie_Command SQL種別_割合
7 PostgreSQL_AuditLog_DataTable_Username ユーザ名_Top10
8 PostgreSQL_AuditLog_DataTable_IPAddress 送信元IPアドレス_Top10
9 PostgreSQL_AuditLog_DataTable_Database データベース名_Top10
10 PostgreSQL_AuditLog_DataTable_ObjectName テーブル名_Top10
11 PostgreSQL_AuditLog_DataTable_Command SQL種別_Top10
12 PostgreSQL_AuditLog_PostgreSQL_AuditLog_Search ログ一覧
  • 上部の[Save]ボタンをクリックして保存します。

image.png

  • 好きな名前をつけて保存します。(今回は、PostgreSQL_AuditLog_Dashboardとしています)

image.png

まとめ

さて、いかがでしたでしょうか?

このようなダッシュボードを作成しておくとそれぞれのパネルで絞り込みたい項目で
[+]や[-]を使ってフィルタするとその条件に合わせて、ダッシュボードの内容が瞬時に再検索がかかります。
これがKibanaの優位性の1つだと私は思っています^^

皆様もぜひ、試して頂けると幸いです!

基本ができたら、次はヒートマップや地図グラフ、TSVBなどの
高度なVisualizaionを使っていくのが良いと思っています^^

2
6
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
2
6