構成
ソフトウェア | バージョン |
---|---|
OS | CentOS 7.2 |
td-agent | td-agent-2.3.2 |
Elasticsearch | elastic-search-2.4.0-1 |
Kibana | kibana-4.5.4-1 |
Elasticsearchインストール
こちらの公式ガイドに沿って行います。
前提のJavaだけ先にインストールしておきます。
yum install java-1.8.0-openjdk
Elasticsearchをインストールしていきます。
リポジトリの準備。
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
cat <<EOF > /etc/yum.repos.d/elasticsearch-2.repo [elasticsearch-2.x] 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 EOF
インストール実行
yum install elasticsearch
Elasticsearchに外部からアクセスできるように、 network.host
の値を設定します。
とりあえず動作確認という段階なら0にするとどこからでもアクセス可能となります。
vi /etc/elasticsearch/elasticsearch.yml
network.host: 0
Elasticsearchの起動と有効化をしておきます。
systemctl start elasticsearch systemctl enable elasticsearch
稼働確認
インストールが完了したら、サーバ上からElasticsearchの接続テストしてみます。
$ curl -s -XGET http://localhost:9200/_cluster/health?pretty { "cluster_name": "elasticsearch", "status": "green", "timed_out": false, "number_of_nodes": 1, "number_of_data_nodes": 1, "active_primary_shards": 0, "active_shards": 0, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 0, "delayed_unassigned_shards": 0, "number_of_pending_tasks": 0, "number_of_in_flight_fetch": 0, "task_max_waiting_in_queue_millis": 0, "active_shards_percent_as_number": 100 }
クライアントPC側のBrowserからもテストしておきます。
http://IPアドレスorホスト名:9200/_cluster/health?pretty
Fluentdインストール
公式ガイドに沿って作業します。
インストールはコマンド一本です。
curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
Elasticsearchとの連携プラグイン
Elasticsearchとの連携のプラグインとして、こちらのPluginを利用させてもらいます。
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
AWS ELBとの連携プラグイン
ELBのログ取得のプラグインとしてはこちらのPluginを利用させてもらいます。
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elb-log
プラグイン設定
プラグインに合わせて設定を行います。
vi /etc/td-agent/td-agent.conf
<source> @type elb_log region ap-northeast-1 s3_bucketname s3bucketname s3_prefix path/to/elblog timestamp_file /var/tmp/fluentd-elb_last_at.dat buf_file /var/tmp/fluentd-elb_log.tmp refresh_interval 300 tag elb_log.access access_key_id ACCESS_KEY secret_access_key SECRET_KEY </source> <match elb_log.**> type elasticsearch type_name access_log host localhost port 9200 logstash_format true include_tag_key true tag_key @log_name buffer_type file buffer_path /var/tmp/fluentd-elsticsearch.buf </match>
td-agentを起動と有効化しておきます。
systemctl start td-agent systemctl enable td-agent
fluentd動作確認
fluentd起動後にログを確認します。
tail -f /var/log/td-agent/td-agent.log
うまくいっていると以下のようなログが出力されます。
2016-09-11 22:42:08 -0400 [info]: processing 2 object(s). 2016-09-11 22:42:09 -0400 [info]: Connection opened to Elasticsearch cluster => {:host=>"localhost", :port=>9200, :scheme=>"http"}
ログが確認できたら、データが登録されているか確認してみます。
まずはインデックスを確認します。
curl -XGET http://localhost:9200/_aliases?pretty { "logstash-2016.09.12" : { "aliases" : { } } }
上記のインデックスを元にして以下のようなクエリを投げると登録されているデータが表示されます。
curl -XGET http://localhost:9200/logstash-2016.09.12/_search -d '{"query":{ "match_all":{}}}' | jq .
Kibana導入
Elasticsearchにデータが登録されていること確認できたいので、可視化のためのKibanaをインストールします。 こちらも公式ガイドに沿ってインストールします。
yumレポジトリを準備します。
cat <<EOF > /etc/yum.repos.d/kibana.repo [kibana-4.5] name=Kibana repository for 4.5.x packages baseurl=http://packages.elastic.co/kibana/4.5/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1 EOF
インストールして起動・有効化していきます。
yum install kibana systemctl start kibana systemctl enable kibana
以下のURLでアクセスします。
http://IPアドレスorホスト名:5601/app/kibana
参考URL
使用しているプラグインは異なりますが、全般に参考にさせていただきました。
ELBのアクセスログをfluentd(fluent-plugin-elb-access-log)+Elasticsearch+kibanaで可視化する - Qiita
Elasticsearch API 一覧
Elasticsearch API 一覧 – Hello! Elasticsearch. – Medium
利用したプラグイン
GitHub - shinsaka/fluent-plugin-elb-log: Amazon ELB log input plugin