fluentd、ElasticSearch、Kibanaでアクセスログの可視化

fluentd、ElasticSearch、Kibanaでアクセスログの可視化

Software(Tips)fluentd、ElasticSearch、Kibanaでアクセスログの可視化

これまでは、アクセスログやアプリケーションログは、1 時間に 1 回、バッチ処理で直近の 1 時間のログをチェックして問題がないかを確認していました。

その際、冗長化している複数の Web サーバからログ収集サーバへ fluentd を使ってログ転送していましたが、ログの量が増えてきたり、もう少しログの解析の自由度を上げるためには、高速に検索できるツールが必要だということで ElasticSearch の登場です。

ElasticSearch は、数年前、バージョン 1.0 になるかならないかの頃、商品検索用途で利用したことがあります。その際は、MySQL で商品のデータ自体は管理し、検索のみ ElasticSearch 経由という方法をとっていました。

確かに検索はかなり高速でしたが、扱う項目に差はあるとはいえ、MySQL と ElasticSearch とでデータが二重管理になっていて運用としては少し面倒なことになってしまっていました。検索軸が増えた場合は、マッピングデータの追加が伴うのと、データ移行も必要で運用時に念密にシミュレーションした記憶があります。

さて、そんな ElasticSearch もバージョン 2.0 が正式リリースされたので、久しぶりにローカルの vagrant に入れて apache ログを収集し、ElasticSearch に突っこみ Kibaha で閲覧してみたいと思います。最近はこの組み合わせがトレンドになっているようですね。

Javaのインストール

ElasticSearch を使うには Java が必要になるのでインストールします。

$ yum -y install java-1.8.0-openjdk

$ yum -y install gcc libcurl-devel

$ cd /usr/local/src

ElasticSearchのインストール

下記では rpm からのインストール方法を記載しましたが、ElasticSearch のガイドページを見ると yum でのインストール方法も書かれているので、そちらを利用してもいいかもしれませんね。

Elasticsearch can also be installed from our repositories using apt or yum

rpm でのインストール方法

$ wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.2.0/elasticsearch-2.2.0.rpm

$ rpm -ivh elasticsearch-2.2.0.rpm 

$ chkconfig --add elasticsearch

$ service elasticsearch start

$ chkconfig elasticsearch on

yum でのインストール方法

$ vi /etc/yum.repos.d/elasticsearch.repo

name=Elasticsearch repository for 2.x packages
baseurl=https://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

$ yum -y install elasticsearch

$ service elasticsearch start

$ chkconfig elasticsearch on

プラグインは日本語形態素解析エンジンの kuromoji と、ブラウザで中身が確認できる head の 2 つを入れておきます。

$ /usr/share/elasticsearch/bin/plugin install analysis-kuromoji

$ /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

設定はデフォルトのままで大丈夫かなっと思っていたのですが、下記の 2 箇所を明示的に指定しないと head プラグインが使えませんでした。

$ vi /etc/elasticsearch/elasticsearch.yml

network.host: 0.0.0.0
http.port: 9200

最後にサービスを再起動して完了です。

$ service elasticsearch restart

ElasticSearch をインストールしたホストの IP アドレスが 192.168.0.1 だとすると、以下の URL で head プラグインが利用できます。

http://192.168.0.1:9200/_plugin/head/

また、同じホストから以下のコマンドでも状況が確認できます。

$ curl -XGET localhost:9200/_alias?pretty

fluentdのインストール

fluentd はインストールシェルが用意されているので、それを使ってインストールします。ElasticSearch へデータ投入するためのプラグインも入れます。

$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

$ td-agent-gem install fluent-plugin-elasticsearch

$ vi /etc/td-agent/td-agent.conf

<source>
  type tail
  path /var/log/httpd/access_log
  format apache2
  pos_file /var/log/td-agent/httpd.access.log.pos
  tag apache2.access
</source>

<match apache2.access>
  type elasticsearch
  host localhost
  port 9200
  type_name apache_access
  logstash_format true
</match>

$ service td-agent start

$ chkconfig td-agent on

Kibanaのインストール

最後に Kibana をインストールします。

$ wget https://download.elastic.co/kibana/kibana/kibana-4.4.1-linux-x64.tar.gz

$ tar xvzf kibana-4.4.1-linux-x64.tar.gz 

$ ln -sf kibana-4.4.1-linux-x64 kibana

下記で実行可能ですが、サービス登録してしまいましょう。

$ ./kibana/bin/kibana

起動スクリプトは下記のサイトを参考にして、実行ファイルのパスだけ変更しました。vagrant には CentOS 入れているので、Amazon Linux 用でも問題ありませんでした。
Amazon Linux 用 Kibana 4 Init スクリプト

$ vi /etc/init.d/kibana

$ chmod +x /etc/init.d/kibana

$ /etc/init.d/kibana start

$ chkconfig --add kibana

下記にアクセスすれば Kibana の画面が確認できます。

http://192.168.0.1:5601/

最終更新日:

関連記事

人気記事

新着情報