[レポート]Elasticsearch、Kibana、Logstash で始めるログ解析入門
こんにちは、菅野です。
2016年6月17日〜18日にかけて開催されていたオープンソースカンファレンス2016 Hokkaidoへ行ってきました。
18日10:00からのセミナー「Elasticsearch、Kibana、Logstash で始めるログ解析入門」を聴講してきましたのでそのレポートです。
ロゴ入りのガム(懐かしい)をもらいました。
講師
Elastic 大谷 純(おおたに じゅん)氏
アジェンダ
- Elastic stack 紹介
- Logstash - Log収集
- Elasticsearch - 検索・分析
- Kibana - 可視化
- 商用プラグイン紹介
Elastic stack 紹介
Logstash
- Log収集
- rubyで描かれている
- 実行はJRuby
- 設定は以下の3つに分かれている
- input
何から取り込むか指定する - filter
grokでログのパターンを正規表現を使って設定し、1行毎にパースする
dateフィルタで日付のパターンを指定しておくと@timestampに時刻情報が取り込まれ、それを内部で使用している
パースしたらmessageの中に放り込まれる
ここでtagを付与することができる。if分も使える
geoipフィルタにクライアントIPアドレスのフィールドを指定しておくとIPアドレスから位置情報に変換してくれる
useragentフィルタでユーザーエージェント項目をパースしてくれる - output
どこに出力するか指定する
複数の対象に対して出力可能
index => "****-%{+YYYY.mm.dd}"といった感じでindex名のパターンを指定できる
- input
Elasticsearch
- 元々は奥様のレシピ検索のために作った(まだ完成していない)
- 検索エンジンである
- 以下のような機能を持っている
- フリーワード検索
- 絞り込み
- ハイライト
- ソート
- ページング
- 集計
- サジェスト
- httpでjsonを投げることでデータ登録、取得が可能
- GitHub、Wikipedia、はてなブックマークで使われている
- 分散構成スケール
- 全文検索
- 用語
ドキュメント:レコード
フィールド:カラム - 形態素解析(日本語を分けるの)は「kuromoji」というエンジンが使え、プラグインとして追加可能)
意味のある単語の切れ目で別れる
品詞の情報を元に追加処理が可能
辞書を元に解析するので新語は理解できない
内部で文章を単語単位に分割しその単語とIDを結びつけて登録している。 - N-Gramも使える
固定の文字数で単語として登録する
意味にない単語になる可能性がある
インデックスが肥大化する - その他
緯度経度検索が可能 Percolator
クエリ(検索条件)を登録しておいて、文章を投げるとヒットするかを返してくれる
バックアップ
S3にもバックアップできる
Ecosystem
プラグインによる機能の追加
クライアントライブラリ
各種言語に対応(Scala、clojure、go一部はコミュニティ管理)
aggregation
グルーピングして集計できる(多段の集計)
東京で何件、品川区で何件といった結果が返ってくる
- 用語
Kibana
beats
- go言語で描かれている
- 軽量が売り
- 用途で分かれている
- packetgeat
パケットをキャプチャしてSQL文の解析をできたりする。(それをKibanaで可視化したり)
Kibanaのダッシュボードもついている - filebeat
ファイルから収集してlogstashが投げるといった使い方 - winlogbeat
Windowsのログを収集する
- packetgeat
- ライブラリが配布されている 独自で解析したいものは自分で作れる
商用プラグイン
- Shield
ユーザー認証 LDAP Active Directory ファイルベースでの認証
ロールベースのACが可能
インデックス毎、アクション毎の設定が可能
ドキュメント・フィールド毎の設定も可能
SSL/TLS、IPフィルタリングが可能
監査ログも作成できる - Watcher
Elasticsearchのクエリを利用してデータを監視
細かい条件の指定が可能
スケジュールの指定が可能
アクションの定義が可能
履歴の保存が可能
Shieldの監査ログをWatcherでチェックして通知するといった使い方ができる - Cloud
Elasticsearch as service
アップグレードが簡単
商用プラグインも利用可能
14日間お試しできる
その他
- ES-Hadoop
Hadoopに入れると、出力先としてElasticsearchを簡単に指定することができる - Discussというフォーラムで日本語で質問できる
最後に
Elastic stack を利用してLog解析を行う時の流れを、細かい設定も含めて説明していただきました。
特に beats は今回初めて知り、特に Packetgeat の存在には衝撃を受けました。
例えば Appサーバーから DBサーバーへのパケットを監視し、SQL文を Elasticsearch でデータ化し Kibana で可視化するといった事が可能となります。
このレポートを読んで興味を持たれた方は、一度 Elastic のセミナーに参加してみることをおすすめします。