CentOS7.1にFluentd+ElasticSearch+Kibana4をインストールする

まずは準備

ここからasticsearch, kibana, logstashをダウンロード、現時点の最新版を取りましょう

# wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.1.1/elasticsearch-2.1.1.rpm
# wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
# wget https://download.elastic.co/logstash/logstash/packages/centos/logstash-2.1.1-1.noarch.rpm

Java SE Runtime Environment 8 の 最新RPMパッケージをダウンロードして、インストール

https://java.com/ja/download/manual.jsp

※今回は、jre-8u71-linux-x64.rpm をインストール

# rpm -ivh jre-8u71-linux-x64.rpm

elasticsearchのインストール

# rpm -ivh elasticsearch-2.1.1.rpm
# sudo systemctl daemon-reload
# sudo systemctl enable elasticsearch.service

設定ファイルの末尾に以下を追加。kibana連携に必要

# enable cross-origin resource sharing
http.cors.enabled: true

起動 # sudo systemctl start elasticsearch.service

logstashのインストール

# rpm -ivh logstash-2.1.1-1.noarch.rpm

kibanaのインストール

# tar vxf kibana-4.3.1-linux-x64.tar.gz
# mv kibana-4.3.1-linux-x64 /opt/kibana

kibanaの起動スクリプトを拝借

    # vi /etc/rc.d/init.d/kibana

#!/bin/sh
### BEGIN INIT INFO
# Provides:          kibana
# Required-Start:    $local_fs $remote_fs $network
# Should-Start:      $time
# Required-Stop:     $local_fs $remote_fs $network
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Kibana 4
# Description:       Service controller for Kibana 4
### END INIT INFO

INSTALLED_DIR=/opt/kibana
EXEC_SCRIPT="$INSTALLED_DIR/bin/kibana"
LOG_DIR=/var/log/kibana
PID_DIR=/var/run
PID_FILE="$PID_DIR"/kibana.pid
LOG_FILE="$LOG_DIR"/kibana.log

test -d $LOG_DIR || mkdir $LOG_DIR

# Source function library.
. /etc/init.d/functions

RETVAL=0

case "$1" in
    start)
        if [ ! -f "$PID_FILE" ]; then
          echo -n "Starting Kibana"
          nohup $EXEC_SCRIPT 0<&- &> $LOG_FILE &
          echo $! > $PID_FILE
          success
        else
          echo -n "Kibana is already running"
          RETVAL=1
          failure
        fi
        echo
        ;;
    stop)
        if [ -f "$PID_FILE" ]; then
          echo -n "Stopping Kibana"
          test -f $PID_FILE && cat $PID_FILE | xargs kill -s SIGKILL && rm -f $PID_FILE
          success
        else
          echo -n "Kibana is not running"
          RETVAL=1
          failure
        fi
        echo
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        $0 restart
        ;;
    status)
        status kibana
        RETVAL=$?
        ;;
*)
echo "Usage: $0 {start|stop|status|restart|reload}"
exit 1
;;
esac
exit $RETVAL

起動スクリプトの実行権限を追加

# chmod 755 /etc/rc.d/init.d/kibana

サービス起動

# systemctl start kibana

アクセス

ブラウザから http://[IP address]:5601/kibanaにアクセスすると、kibanaの設定画面が表示されます。 (firewallの設定は適宜...)

Fluentd (td-agent 2.3.0) インストール

最新版をインストール

# curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

サービス起動

# systemctl start td-agent
# systemctl enable td-agent

あとは、後でElasticsearchにデータを転送できるようにするために、連携用のfluent-plugin-elasticsearchプラグインをインストールしておく。 プラグインはfluent-gemコマンドでインストールできる。

# /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch

Fetching: elasticsearch-api-1.0.15.gem (100%)
Successfully installed elasticsearch-api-1.0.15
Fetching: multipart-post-2.0.0.gem (100%)
Successfully installed multipart-post-2.0.0
Fetching: faraday-0.9.2.gem (100%)
Successfully installed faraday-0.9.2
Fetching: elasticsearch-transport-1.0.15.gem (100%)
Successfully installed elasticsearch-transport-1.0.15
Fetching: elasticsearch-1.0.15.gem (100%)
Successfully installed elasticsearch-1.0.15
Fetching: excon-0.45.4.gem (100%)
Successfully installed excon-0.45.4
Fetching: fluent-plugin-elasticsearch-1.3.0.gem (100%)
Successfully installed fluent-plugin-elasticsearch-1.3.0
Parsing documentation for elasticsearch-1.0.15
Installing ri documentation for elasticsearch-1.0.15
Parsing documentation for elasticsearch-api-1.0.15
Installing ri documentation for elasticsearch-api-1.0.15
Parsing documentation for elasticsearch-transport-1.0.15
Installing ri documentation for elasticsearch-transport-1.0.15
Parsing documentation for excon-0.45.4
Installing ri documentation for excon-0.45.4
Parsing documentation for faraday-0.9.2
Installing ri documentation for faraday-0.9.2
Parsing documentation for fluent-plugin-elasticsearch-1.3.0
Installing ri documentation for fluent-plugin-elasticsearch-1.3.0
invalid options: -SHN
(invalid options are ignored)
Parsing documentation for multipart-post-2.0.0
Installing ri documentation for multipart-post-2.0.0
Done installing documentation for elasticsearch, elasticsearch-api, elasticsearch-transport, excon, faraday, fluent-plugin-elasticsearch, multipart-post after 6 seconds
7 gems installed

試しにfluentにメッセージを飛ばしてログを見る

# curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test

以下のようなログが出力される。

# cat /var/log/td-agent/td-agent.log

2016-01-28 21:08:17 +0900 debug.test: {"json":"message"}

以上で構築は完了です、次は実際にログの収集、解析をして見たいと思います。