Fluentd、ElasticSearch、Kibana4によるログ分析環境の構築

現在、ログを収集し分析するシステムを構築しようとした場合に、オープンソースの組み合わせですぐに始められる構成としてはじめに思いつくのは Fluentd + ElasticSearch + Kibana の構成です。
Web上の記事や書籍も充実していますし、日本にもユーザーが多そうなので割と安心して利用できる環境でもあると思われます。

この記事では、Fluendによりログ収集しElasticSearchに保存し、それをKibana 4で分析する環境の構築手順について調べた内容をまとめてみました。

今回試したのは以下のように、Apacheのアクセスログをtailして、Fluentdで収集しElasticSearchに保存、Kibanaでログの検索、分析を行うシンプルなシステム構成です

fluentd-elasticsearch-kibana-system

Apacheのログを収集するサーバーおよびElasticSearch、KibanaをインストールするサーバーともにOSはUbuntu 14.04 (Trusty)を利用します。

ここでは、構築を解説して、Kibana 4そのものの使い方についてはまた別途まとめたいと思います。
“Fluentd、ElasticSearch、Kibana4によるログ分析環境の構築” の続きを読む

Apache Pigで処理したデータをElasticsearchにロードする – アジャイルデータサイエンス読書メモ その3

アジャイルデータサイエンス読書メモその3です。
3章の後半、Pigで集計した結果をElasticsearchにロードする箇所をUbuntu 14.0(Trusty Tahr)で試した際のメモになります。

アジャイルデータサイエンスでは、ElasticsearchへのデータのロードはWonderdog(https://github.com/infochimps-labs/wonderdog)を利用していますが、2014年8月時点ではElasticsearchプロジェクト本体でPigをサポートしています。
Apache Pig support
Elasticsearch.org Hadoop | Elasticsearch

そこで、WonderdogではなくElasticsearch for Apache Hadoopを利用してApache PigからElasticsearchへデータをロードしてみます。

“Apache Pigで処理したデータをElasticsearchにロードする – アジャイルデータサイエンス読書メモ その3” の続きを読む

elasticsearch 1.1をubuntu12.04にセットアップ

elasticsearchは、Solrと同じくApache Luceneをエンジンにしたオープンソースの検索システムですが、Kibanaなどのツールとの連携など、応用されている範囲が広く、ただの全文検索システム以上なツールです。

公式サイトの説明: http://www.elasticsearch.org/overview/elasticsearch/

全文検索システムを自分のシステムに組み込みたい場合は、elasticsearchの他に、SolrやAWSのCloudSearchが比較対象になるかと思いますが、対応しているツールの多さや、どのブログを見ても今から使うなら、前出のSolrよりもelasticsearchを選択するのが良さそうな印象。
参照: 全文検索システムの比較 – Elasticsearch vs Solr vs Amazon CloudSearch

何はともあれ、使ってみないと解らないのでインストールしてみました。

Javaのインストール

elasticsearchの実行には、Java 1.6以上が必要です。

$ sudo apt-get install openjdk-6-jdk

elasticsearchのインストール(参照: setup)

aptリポジトリが用意されているのでapt-getで入れてみます。
参照: repositories

$ wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -

/etc/apt/sources.listに、バージョン1.1のリポジトリを追加します

deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main

apt-getでインストールして起動します。

$ sudo apt-get update
$ sudo apt-get install elastic search

起動と動作確認

$ sudo service elasticsearch start
 * Starting Elasticsearch Server                                                                [ OK ] 

$ curl -X GET http://localhost:9200/
{
  "status" : 200,
  "name" : "Fred Myers",
  "version" : {
    "number" : "1.1.0",
    "build_hash" : "2181e113dea80b4a9e31e58e9686658a2d46e363",
    "build_timestamp" : "2014-03-25T15:59:51Z",
    "build_snapshot" : false,
    "lucene_version" : "4.7"
  },
  "tagline" : "You Know, for Search"
}

データの追加と検索

curlでコマンドを直接データの追加や検索を実行する手順については、Elasticsearch.org Elasticsearch | Elasticsearchの一番下にあるムービーで説明されています。
ElasticSearch – Introduction on Vimeo

このムービーを見れば、後はReference [1.x]を参照しながら動作を確認できるようになります。

日本語検索、形態素解析プラグインの導入

デフォルトのセットアップだと、日本語の検索が正しく動作しません。
例えば、47都道府県のデータに対して「島根」で検索すると「島根」「福島」「広島」「徳島」「鹿児島」がヒットしてしまいます。参照: elasticsearchとkuromojiプラグインで日本語の全文検索 – yuhei.kagaya

そこで、日本語形態素エンジンを導入します。検索するとkuromojiがメジャーなようなのでkuromojiを入れてみます。(Github | elasticsearch/elasticsearch-analysis-kuromoji)

kuromojiは、プラグインとしてインストールします。
(apt-getでインストールした場合は/usr/shareの下にpluginコマンドがあります。)

$ sudo /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.0.0
-> Installing elasticsearch/elasticsearch-analysis-kuromoji/2.0.0...
Trying http://download.elasticsearch.org/elasticsearch/elasticsearch-analysis-kuromoji/elasticsearch-analysis-kuromoji-2.0.0.zip...
Downloading ............................................................................................................................................................................................................................................................................................................................................................................DONE
Installed elasticsearch/elasticsearch-analysis-kuromoji/2.0.0 into /usr/share/elasticsearch/plugins/analysis-kuromoji
~~~~

インストールしたらelasticsearchを再起動する必要があります。

~~~bash
$ sudo service elasticsearch restart

プラグインが有効になったかどうかは以下のコマンドで確認できます。

$ curl -XGET 'http://localhost:9200/_nodes?plugin=true&pretty'
...
      },
      "plugins" : [ {
        "name" : "analysis-kuromoji",
        "version" : "NA",
        "description" : "Kuromoji analysis support",
        "jvm" : true,
        "site" : false
      } ]
    }
  }
}

デフォルトのアナライザーとして登録するために、/etc/elasticsearch/elasticsearch.ymlに以下の設定を追加します。

index.analysis.analyzer.default.type: custom
index.analysis.analyzer.default.tokenizer: kuromoji_tokenizer

再起動で適用されます。

$ sudo service elasticsearch restart

以上が、全文検索にelasticsearchを利用するための最低限のセットアップ手順になります。