Edited at

Cygwinにfluentd, Elasticsearch, Kibanaをインストールして動かす

More than 5 years have passed since last update.

Cygwinにfluentd, Elasticsearch, Kibanaをインストールして、httpdのログを見るまでのメモ。


環境


  • Windows 7 64bit

  • Cygwin 1.7.30-1 (64bit版)

  • Ruby 1.9.1 (Cygwin)


前提


  • Cygwinで以下のパッケージがインストール済み


    • make

    • wget

    • tar

    • libcrypt-devel

    • libcurl-devel

    • gcc-core

    • gcc-g++

    • apache2(Kibanaアクセス用)


      • httpd.confは初期設定のまま(Windowsサービス上でcygserverが動いており、localhost:80からアクセスできる)






手順



  1. Elasticsearch, Kibanaをダウンロードして配置

    # http://www.elasticsearch.org/overview/elkdownloads/の最新版をダウンロード
    
    wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.1.tar.gz
    tar zxvf elasticsearch-1.3.1.tar.gz
    # /opt以下に配置
    mv elasticsearch-1.3.1 /opt/elasticsearch

    # http://www.elasticsearch.org/overview/elkdownloads/の最新版をダウンロード
    wget https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.tar.gz
    tar zxvf kibana-3.1.0.tar.gz
    # /opt以下に配置
    mv kibana-3.1.0 /opt/kibana




  2. fluentd, fluent-plugin-elasticsearchのインストール

    gem install fluentd --no-ri --no-rdoc
    
    gem install fluent-plugin-elasticsearch


  3. httpd.confのDocumentRootを/opt/kibanaにする(httpdでKibanaにアクセスするため)



  4. fluent.confの設定(httpdのログをElasticsearchに送る)

    <source>
    
    type tail
    format /^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)" (?<received_byte>[^ ]*) (?<sent_byte>[^ ]*) (?<response_time_micro_sec>[^ ]*))?$/
    time_format %d/%b/%Y:%H:%M:%S %z
    path /var/log/apache2/access_log
    pos_file /var/log/fluentd/buffer/httplog.pos
    tag httplog
    </source>

    <match httplog>
    type elasticsearch
    host localhost
    port 9200
    type_name httplog
    logstash_format true
    </match>




  5. elasticsearchを立ち上げ、fluentdを実行

    # localhost:9200でelasticsearchが立ち上がる
    
    /opt/elasticsearch/bin/elasticsearch
    # 前のステップで作成したfluent.confを使用する
    fluentd -c fluent.conf



  6. ブラウザでlocalhost(Kibana)にアクセスし、ログが表示されることを確認する


    • Logstash Dashboardに移動し、"EVENTS OVER TIME"のグラフを確認

    • 今回の設定では、localhost自身へのアクセスログがelasticsearchに転送され、kibanaに表示される




備考


  • 上記手順は、自分でいくつかはまったものを最終的に整理したものなので、同等の環境でうまくいかなかったらご指摘ください。

  • fluentdのインストールは苦労しました。実際は以下の手順をたどっています(cygwinのパッケージインストールにはapt-cygを使用)。


    1. "gem install fluentd --no-ri --no-rdoc"を実行するも、msgpackの部分でエラーになる

    2. 一応"gem install msgpack"を実行するもやはりエラー

    3. msgpackのmkmf.log(自分の環境では/usr/lib/ruby/gems/1.9.1/gems/msgpack-0.5.8/ext/msgpack/mkmf.log)を確認すると、"/usr/bin/ld: cannot find -lcrypt"というメッセージがあった

    4. "apt-cyg install libcrypt-devel"実行でlcryptを解決

    5. 次に"gem install msgpack"を実行すると"sh: make: command not found"とエラー

    6. "apt-cyg install make"でmakeインストール

    7. "gem install msgpack"で今度こそ成功。

    8. 改めて"gem install fluentd --no-ri --no-rdoc"実行して成功



  • 当初、fluentdはWindows側に直接インストールしようとしました。fluentd, fluent-plugin-elasticsearchまでインストールしたものの、fluentdを動かしたら"runtime error!"とか出たので早々と諦めました。一応インストールまでの手順を書いておきます。


    1. rubyのdevkitをダウンロードして、"ruby dk.rb init", "ruby dk.rb install" 実行

    2. cool.ioをgithubからzipダウンロード



    3. 2を解凍し、"gem install cool.io"

    4. githubからfluentdのwindowsブランチのソースコードをzipダウンロード

    5. 4を解凍し、"gem install fluentd-0.10.46.gem"でインストール

    6. Win版libcurlをダウンロードし、C:\curl-7.21.0-devel-mingw32に配置



    7. PATHにC:\curl-7.21.0-devel-mingw32\binを追加

    8. "gem install fluent-plugin-elasticsearch -- --with-curl-lib=C:\curl-7.21.0-devel-mingw32\bin --with-curl-include=C:\curl-7.21.0-devel-mingw32\include"実行




参考にしたページ