Close

Logstash+Elasticsearch+Kibanaを触ってみる

Logstash+Elasticsearch+Kibana(ELK)を触ってみた。 はじめに:それぞれのツールについてふわっと理解 検索エンジンが〜とか、ログの整形が〜とかいう言葉を使うと猿にはわからないので、以下の言葉でふわっと理解。 Logstash:  ログを要素に分解するツール Elasticsearch: Logstashで分解したログの要素をフィルタリングするツール Kibana: Elasticsearchでフィルタリングした結果をグラフとか可視化するツール やってみる まずは、手を動かして、「ログをLogstashで取り込んで、Elasticsearchに送って、Kibanaで可視化」という流れをやってみる。 個人的にはLogstashのgrokプラグインの使い方が難しかった。 やりたいこと やりたいことは、以下のようなログから、数値とキーワードの集計をリアルタイムで実施し、以下のようなダッシュボードをKibanaで作ること。 環境づくり まずは、ELKの環境準備。Macに直接brewでインストールする。 https://logz.io/blog/elk-mac/を参考に構築。 ElasticsearchとKibanaを起動する 起動しているか確認 Kibanaの設定ファイル編集 /usr/local/etc/kibana/kibana.yml (多分人によってパス違う)の、以下二行のコメントアウト外しておく。 これでElasticSearchとKibanaは完了。 アクセスできるか確認する。 Elasticsearch: http://localhost:9200 Kibana: http://localhost:5601 Logstashについては後の手順にて起動します。 ログの用意 何か分析するログがなければいけないが、無いので、自分で作る。 実行。 こんな感じでログがでる。 Logstashの設定 先ほど出したログをLogstashで、Elasticsearchに送れる形に整形する。 logstashの設定ファイルを作る。今回はlogtest.confにするが、場所とファイル名は何でも良い。 結果としては以下の通り。 Logstashの設定ファイルは、以下のように、input、filter、outputの3セクションに分かれている。 inputについて pathで、どこにあるログを読み込むか指定。(絶対パスでの記載が必要) typeの名前は任意の名前、後のfilterセクションで使う。 filterについて ここでの肝は、grokプラグイン。ログの内容を後々Elasticsearchで分析するために要素に分類する。 今回は、「Feb 11 12:08:21 17 xxx」のようにログが出るので、 「タイムスタンプ(Feb 11 12:08:21) 数字(17) メッセージ(xxx)」の三要素に分類する。 それぞれの要素は、「%{形式: タグ}」という風に定義づける。 タグの名前は任意の名前。後でKibanaにプロットする時に使う。 形式については、自分でゴリゴリ書くこともできるが、あらかじめ用意された形式を使うのが楽。…