はじめに
Fluentdによるログ収集システムの構築では、Fluentdを使ってログ収集システムを構築しましたが、収集したログを可視化することはできません。そこで今回は、Kibana+ElasticSearch+Fluentdを用いたログ可視化の方法を解説します。
2014年02月21日 23時17分
Fluentdによるログ収集システムの構築では、Fluentdを使ってログ収集システムを構築しましたが、収集したログを可視化することはできません。そこで今回は、Kibana+ElasticSearch+Fluentdを用いたログ可視化の方法を解説します。
Kibanaは、Elasticsearch社が開発 している検索エンジンElasticSearchをウエブから利用するためのフロントエンドです。 ElasticSearchは、Apache Lucenceを ベースに開発された検索エンジンであり、Googleを始め多くの企業が利用しています。
構築に必要なサーバー要件および、導入パッケージは下記のとおりです。
OS | Windows 7 Ultimate 32bit |
Cygwin | Setup Version 2.831 |
VirtualBox | 4.3.6 r91406 |
Vagrant | 1.4.1 |
パッケージ | Kibanaサーバー | Kibanaクライアント |
---|---|---|
OpenJDK | 1.7.0 | n/a |
ElasticSearch | 1.0.0 | n/a |
Kibana | 3.0.0milestone5 | n/a |
fluent-plugin-elasticsearch | n/a | 0.2.0 |
$ sudo yum -y install java-1.7.0-openjdk
$ wget -q --no-check-certificate https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.0.0.noarch.rpm $ sudo rpm -ivh elasticsearch-1.0.0.noarch.rpm $ rm -f elasticsearch-1.0.0.noarch.rpm
$ sudo service elasticsearch start $ sudo chkconfig elasticsearch on
公式サイトから、最新のアーカイブをダウンロードし、ApacheのDocumentRootに展開します。
$ curl -sL https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone5.tar.gz | sudo tar zxf - -C /var/www/html $ sudo mv /var/www/html/kibana-3.0.0milestone5 /var/www/html/kibana
以上で、Kibanaサーバーのセットアップは終了です。
ブラウザで、下記のURLにアクセスすると、ダッシュボードが表示されます。
http://192.168.0.50/kibana/
Kibanaクライアントをtd-centos,td-ubuntuの順にセットアップします。
クライアントにインストールされたtd-agentは、ruby上で起動されますので、インストールされたruby環境にプラグインをインストールします。
$ sudo /usr/lib/fluent/ruby/bin/fluent-gem i fluent-plugin-elasticsearch --no-ri --no-rdoc
Apacheのアクセスログをtailプラグインを用いて監視し、イベントタグを付与したログをElasticSearchに送信します。
matchディレクティブに指定したlogstash_formatは、ElasticSearchが推奨するログ収集ツールのLogStashの互換ログとして送信するために指定します。
また、tag_keyでは、@log_nameを指定しています。
これにより、ElasticSearchに送信したログから、sourceディレクティブで指定したtagの設定値を用いて、検索することができます。
$ sudo vi /etc/td-agent/td-agent.conf
# # Apache2アクセスログファイルを入力イベントとして定義 # <source> type tail # 入力プラグイン(tail) path /var/log/httpd/access_log # アクセスログのパス tag td-centos.apache.access # マッチしたログに付与する検索タグ format apache2 # ログ検索書式(apache2) # ログ読み込み位置記録ファイル pos_file /var/log/td-agent/httpd-access.log.pos </source> # # ソースタグにマッチするログをElasticSearchに送信する # <match *.apache.*> type elasticsearch # 出力プラグイン指定(elasticsearch) include_tag_key true # tagキーを使用する tag_key @log_name # tagキーを使用して絞り込み検索を行う host 192.168.0.50 # 送信先サーバーアドレス port 9200 # サーバー待ち受けポート logstash_format true # LogStash形式のログを送信 flush_interval 10s # ログ送信間隔(10秒) </match>
td-agentは、td-agentユーザーで起動されますので、アクセスするログによって読み込みに失敗することがありますので、入力するアクセスログのアクセス権を確認し、必要ならアクセス権を設定します。
$ ls -ld /var/log/httpd $ ls -ld /var/log/httpd/access_log
Otherに対してフォルダへのアクセス権が無いため、再設定します。
$ sudo chmod 0755 /var/log/httpd $ ls -ld /var/log/httpd/access_log
$ sudo service td-agent start $ sudo chkconfig td-agent on
td-agentのログを確認し、エラーが無いか確認します。
$ cat /var/log/td-agent/td-agent.log
以上で、td-centosクライアントのセットアップは終了です。
基本的なセットアップ方法は、td-centosと同一です。
$ sudo /usr/lib/fluent/ruby/bin/fluent-gem i fluent-plugin-elasticsearch --no-ri --no-rdoc
td-centosのセットアップで指定した内容のうち、下記の項目を修正します。
path /var/log/apache2/access.log # アクセスログのパス tag td-ubuntu.apache.access # マッチしたログに付与する検索タグ
$ ls -ld /var/log/apache2 $ ls -ld /var/log/apache2/access.log
$ sudo chmod 0755 /var/log/apache2 $ sudo chmod 0644 /var/log/apache2/access.log $ ls -ld /var/log/apache2/access.log
Unbuntuでは、td-agentをインストールすると自動起動されますので、サービスを再起動します。
$ sudo service td-agent restart
$ cat /var/log/td-agent/td-agent.log
以上で、td-ubuntuクライアントのセットアップは終了です。
ここまでの作業で、Kibanaサーバーとクライアントがセットアップできましたので、2台のクライアントにHTTPリクエストを実行して、ブラウザ上でログを確認します。
なお、HTTPリクエストはCygwin上にインストールしたApache2に含まれるab2(Apache2 Benchmark)コマンドを用いて行います。
td-centosおよび、td-ubuntuに対して同時接続数100、リクエスト数をそれぞれ20,000、10,000回としてリクエストを実行します。
$ ab2 -n 20000 -c 100 http://192.168.0.10/ $ ab2 -n 10000 -c 100 http://192.168.0.20/
ブラウザに表示されたダッシュボードからLogstash Dashboardをクリックすると、アクセス状況が確認できます。
クライアントに指定したtagを検索ボックスに入力すると、クライアントごとのアクセス状況が確認できます。