気になることメモ

日常の気になることを、とにかくメモしていきます。

Ubuntu 14.04 LTS でNginx + Fluentd + Easticsearch + Kibana を試してみた

1.はじめに

Ubuntu 14.04 LTSで、Kibanaの実行WebサーバをNginxとした、Nginxのアクセスログ可視化環境を試してみました。
ポイントとしては、Aptリポジトリには、FluetndのパッケージがUbuntu 10.04用と12.04用のものしかありません。そこで、gemパッケージマネージャを用いてFluentdをインストールしました。

<Kibana実行画面>

f:id:usedk:20141004220340j:plain

なお、アクセスログを取得しているNginxは、Kibanaを表示しているNginxのアクセスログです。つまり、Kibanaを操作する度にアクセスログが記録されます。

2.方法

下記の参考サイトを参照しながら、構築しました。各サイトを執筆された方、ありがとうございました。

<参考サイト>
1. Ruby GemからFluentdをインストールする
2. Fluentd + ElasticSearch + Kibana3で簡単に様々なログを可視化・解析する

2.1 前提

  • マシンはVirtualBox仮想マシン1台のみ
  • OSはUbuntu 14.04 Desktop
    (bashはアップデート済み。関係ないけど…。)
  • Nginxはapt-getでインストール済み
  • 全作業はrootで実施

2.2 作業時のポイント

(1) Fluentd実行ディレクトリのセットアップ
(2) 不足パッケージ
(3) Fluentd実行シェル

2.2(1) Fluentd実行ディレクトリのセットアップ

実行ディレクトリのセットアップは、Fluentd公式サイトのインストール手順にある通りです。ポイントとしては、1台のマシンでFluentdの送信側・受信側を構成する点です。具体的には、下記のように同一ディレクトリに2つのFluentd実行ディレクトリをセットアップしました。

# tree fluentd/
fluentd
|-- fluent.conf
|-- fluentd.pid
|-- log
|   |-- fluentd.log
|-- plugin
|-- run_fluentd.sh

2 directories, 4 files

# tree fluentdRecv/
fluentdRecv/
|-- fluent.conf
|-- fluentd.pid
|-- log
|   |-- fluentd.log
|-- plugin
|-- run_fluentd.sh

2 directories, 4 files

2.2(2) 不足パッケージ

「mkmf」(Fluentdインストール時)および「curl-lib」(FluentdのElasticsearchプラグインインストール時)が不足していました。不足は、gemコマンドによりパッケージをインストールする際に不足エラーメッセージが出力されます。mkmfおよびcurl-libは、OS側でapt-get installによりパッケージ追加を行って下さい。

2.2(3) Fluentd実行シェル

最後は、Fluentdの実行シェルです。これは、fluentdコマンドのヘルプを見れば誰でも作れる物で恐縮ですが、こうやって組んだよ、というサンプルとして掲載しておきます。(備忘録用)

<run_fluentd.sh>

#! /bin/sh

fluentd -d fluentd.pid -c ./fluent.conf -o ./log/fluentd.log

fluent.confについては、送信側・受信側それぞれについて、参考サイト2をご参照下さい。また、ログ出力先として、Fluentd実行ディレクトリ内にlogディレクトリを作成し、そこへ出力するようにしました。

3.Kibana実行

下記のコマンドで、各プロセスを実行しました。

# /opt/elasticsearch/elasticsearch -d

# ./run_fluentd.sh  ←各実行ディレクトリで実行

# service nginx start

あとは、http://localhost/kibana をブラウザで参照すればOKです。なお、小ネタとして下記をメモしておきます。

  • Elasticsearchは、/opt/elasticsearchへインストール
  • Kibanaは、/opt/kibanaへインストール
  • KibanaをNginxのコンテンツディレクトリへ入れるため、/opt/kibanaのシンボリックリンクを/usr/share/nginx/htmlに作成

おつかれさまでした!