読者です 読者をやめる 読者になる 読者になる

ほわいとぼーど

ぷろぐらまのメモ帳

Kibana3+Elasticsearchを触ってみた話

最近Elasticsearchを触っているお話です。(といってもまだ1週間かそこら)
画像一杯で重いです注意・・・


元々GrowthForecastでアクセスログを見れるようにしていました。
(まぁこれも割と最近やったんですが、、、)
例えばコチラを参考に、

f:id:a3no:20130910225147j:plain

とか表示してました。(まんまですね)

GrowthForecastは気軽に簡単にグラフ化できてウォッチしやすいので助かるのですが、
アクセス内容からもう少し掘り下げたい要件なんかが出てきました。
折りしもElasticsearch勉強会もタイミングが重なり、非常に捗ったので頑張って書いてみます。
Elasticsearchを紹介する記事は増えてきたのですが、インストール系が多い気がするので
今回はまずはKibana3の見た目と使い方から入ってみようと思います。

インストールもmappingなんかも済んでデータも入ってるものとします。


さて http://(address)/kibana/ みたいなアドレスでアクセスするとテキスト一杯の画面が
まず表示されるのですが、その画面の右側真ん中らへんにLogstashと書かれたリンクがあるので
クリックすると表示されるのが次の画面です。

f:id:a3no:20130910231838j:plain
f:id:a3no:20130910231903j:plain

実際にはちょっとだけ設定がいるのですが今回は割愛。
この縦長の全部で初期ダッシュボードになります。

1段目:時間範囲指定(初期表示はRelativeだけど、ここではAbsoluteに変更)
2段目:Queryを書けるフィールド
3段目:ヒストグラム
4段目:Table

になってます。
これらは連動していて、時間の範囲を絞るかQueryを書くと
ヒストグラムもTableもその範囲内を表示するようになっています。

カレンダーからの日付選択でももちろん良いのですが、

f:id:a3no:20130910231906j:plain

例えば見えている範囲の一部をマウスでドラッグすると、

f:id:a3no:20130910231908j:plain

その部分が拡大されます。

f:id:a3no:20130910231910j:plain

ヒストグラムにもいくつか表示があるのですが今回のバータイプの場合、
カーソルを合わせるとその部分のカウントが表示されます。
画面の左上のZoom Outの隣の凡例には画面内の総カウントが表示されます。

単条件じゃつまらないのでQueryを書いてみます。

f:id:a3no:20130910231912j:plain

アクセスログのステータスコードを、キー「code」、値「200」(String)みたいに登録してあるので、
「code:200」とか書くと検索してくれます。
棒グラフの場合、複数条件書くとデフォルトは積み上げにしてくれます。
他の表示方法もいろいろあるはずだけど今のところこれで満足している。
Queryを書くフィールドはマウスオーバーすると×とか+とか出るので削除したり追加したり出来ます。

ステータスコードはバリエーションがイマイチだったので、
レスポンスタイムを検索してみます。

f:id:a3no:20130910231914j:plain

だいぶカラフルでそれっぽくなりましたね!
キー「response_time」で値はIntegerで登録してあるデータです。単位はマイクロ秒です。
「response_time:[0 TO 100000]」で範囲指定です。
Queryの内容が煩雑になってきたので凡例に名前を付けました。
凡例に名前を付けたり色を変えたい場合はQueryフィールドの●の部分をクリックして編集できます。

この検索Queryを書くのには数日悩みました。
ElasticsearchのQueryを参照して
「"range" : { "response_time" : { "from" : "0", "to" : "100000" } }」
みたいなのを頑張って突っ込んだりしてたんですが、
実はココはlucene syntaxで書くものでした。恥ずかしい。

f:id:a3no:20130910231918j:plain

棒グラフで積み上げた場合、マウスオーバーで表示されたカウントも合計されています注意。
この場合、緑502+青38=540ということですね。

あと結果が重複するようなQueryを積み上げた場合、
当然、総カウントより大きくなるのでその辺は注意してください。


f:id:a3no:20130910231916j:plain

Tableはさらっとしか説明しませんが左のチェックを入れた項目が表示される対象になり、
列名のところをクリックすると昇順か降順で整列しなおしてくれます。
この場合、response_timeを昇順で整列させたところです。
13秒も何がかかっているんでしょうか・・・

あと今回使っている時刻はApacheデフォルトのやつで「03/Sep/2013:07:51:08 +0000」
とかなっているのでmappingでdate_formatを設定してやる必要があります。
そのあたりも次回


せっかく条件入れていい感じになったダッシュボードですが、
そのままだと次回表示時にはまた元に戻ってしまいます。
保存しておくには右上にダッシュボードコントロールがあります。

f:id:a3no:20130910231920j:plain

これは保存用を開いたところ。ファイルにJSONで保存したり、
下のTitleっていうところに名前を入れて保存するとElasticsearch内部に保存されます。
このダッシュボードコントロール、以前は日付指定の右側に浮いてたんですが、
つい最近、上部に統合されて少しスタイリッシュになりましたね。

f:id:a3no:20130910231922j:plain

こちらはロードする方です。Elasticsearch内に保存した場合、
一番下の所に一覧で表示されます。test-1っていうのがそうです。

f:id:a3no:20130910231924j:plain

これは3つ目のやつで他人に画面をShareするためのURLのようですね。


とりあえずこんな感じです。
他にも円グラフやら世界地図やら、Create Rowで段を増やしたり、
まぁ色々やれるみたいなんですが使いこなせてないのでこのくらい。
カジュアルにログ解析な用途ではこれでも結構使えるのではないでしょうか。

検索条件も複合的なものを検索できるはずなので、
その辺は余裕があったら試していきたいです。