Tech Sketch Bucket of Technical Chips by TIS Inc.

fluentd + Elasticsearch + Kibanaで始めるログ解析 (Kibana操作編①)

Pocket

この記事はeXcale Developer's Blogから移転されたものです。

eXcale開発チームの平栗です。
今回は、fluentd + Elasticsearch + Kibanaの環境で、実際に収集したログデータを可視化するための、Kibanaの操作についてご紹介します。

前回までの記事で、fluentd + Elasticsearch + Kibanaを使ってログデータを収集できる環境を構築しました。
今回はこの環境を使って、Kibanaからログデータを見れるようにダッシュボードを作成します。
環境構築については、下記の記事をご覧ください。


eXcaleでは現在3,000円分のクーポンがもらえるサインアップキャンペーンを実施中です。
まだ登録されていない方はこの機会にぜひサインアップをお願いします。


空のダッシュボードを作る

まずは、Kibanaにアクセスして次の画面を表示し、画面下部の"Blank Dashboard"のリンクをクリックします。

リンククリック後、次のようにグラフなどが何もないダッシュボードが表示されます。

今回は、このダッシュボードにグラフ等を設置していくことになります。
この時点では空ですが、とりあえずダッシュボードを作成したのでセーブしましょう。
Kibanaを操作する上で、非常に大事なのが、こまめなセーブです。
この後、グラフを設置したりしますが、設置した段階ではグラフに関する情報(どこにどのグラフを置いた、など)は保存されていません。
そのため、セーブしない状態で画面の再読み込みや、間違って前の画面に戻ったりすると、せっかく作っていたダッシュボードが以前の状態に戻ってしまいますので要注意です。
ということで、画面右上のフロッピーディスクのアイコンをクリックし、ダッシュボードの名前を付けてセーブしましょう。
名前を入力したら、入力欄の左にあるフロッピーディスクのアイコンをクリックすると、保存に成功した旨のメッセージが表示されます。

グラフ (パネル) を設置する

ダッシュボードにグラフを設置していきます。
グラフの設置には、まず、グラフを設置する場所である"ROW"を作成します。
画面右下の"ADD A ROW"をクリックし、試しに作ってみましょう。

ROWの設定画面が表示されるので、ROWのTitle (名前) とHeight (高さ) を設定し、"Create Row"をクリックしてから、"Save"をクリックしてください。

すると、次のような画面が出てきましたね。
何も変わっていないように見えますが、画面のオレンジ枠のところにROWができています。

このROWの中にグラフを設置します。
ROWの中に、"Add panel to empty row"というボタンがあるのでクリックすると、次の画面が表示されるので、"Select Panel Type"を"histogram"、"Title"に任意の名前を付けて、画面の最下部にある"Save"をクリックします。

すると、何かグラフが表示されましたね!
今回は"histogram"を作成したので、横軸に時間、縦軸にはその時間に発生したデータの件数がマッピングされたグラフが表示されています。
表示されているデータはfluentdで回収したNginxのアクセスログです。

グラフは表示できたのですが、せっかくならもう少し大きく表示したいですね。
というわけで、グラフのパネルにある歯車のアイコンをクリックします。
すると、histogramの編集画面が出るので、"Span"を"4"から最大の"12"に変更し、"Save"をクリックします。

histogramの編集後、次のように画面の横いっぱいにグラフが表示されたでしょうか?

このように、パネルの横幅はSpanによって調整可能です。
ただし、何ピクセルといった指定は出来ず、ブラウザの横幅100%を12とした、12段階での指定になります。
パネルの高さは、ROWの高さに依存するので、ROW側を調整しましょう。
ただし、一度作ったROWは高さを変更できないので、好みの高さのROWを作成して、パネルを移動することになります。

時間で表示するデータを絞り込む

グラフが表示できたので、今度は時間で表示するデータを絞り込みます。
画面上部の"Time filter"をクリックし、"Last 15m"をクリックしてみましょう。
すると、次の画面のように最近15分のデータのみが表示されるようになります。

Time filterのリストでは最近30日までを選択できるようになっていますが、"Custom"を選択することで、見たいデータの期間を指定することができます。

クエリで表示するデータを絞り込む

実際にデータを分析する際は、時間以外にも何かの条件にマッチするデータだけを表示したい場合が多いです。
今回はログデータにアクセスログを使っているので、例としてHTTPレスポンスのステータスが200だったログだけを表示してみます。
画面上部の"Query"の入力欄にある"+"のアイコンをクリックし、新しく表示された入力欄に"status:200"と入力してみます。
すると次のようにグラフが2色になります。

画像では、緑のグラフが全てのデータ、オレンジのグラフがステータスが200だったログデータを表示しています。
このように、"Query"の入力欄に条件を入力、追加していくことで、様々な条件に合致したデータを一度に見ることができます。
また、"status:200 AND http_host:xxx"のように複数条件も記述できます。
条件には、Apache Luceneのクエリが記述できるので、詳細はそちらを参考にしてください。

最後に

ここまで、Kibanaでダッシュボードを作る上で基本的な部分をご紹介してきました。
今回は、Histogramを使った例をご紹介しましたが、次回は別のパネルタイプをご紹介をしたいと思います。
ダッシュボードを作ったらセーブは忘れずに!

エンジニア採用中!私たちと一緒に働いてみませんか?