fluentd->kinesis->logstash->Elasticsearchの流れでログを流してみる
About
前作の続きです。今度はElasticsearchに入れてみます。
docker-compose
ほぼローカルで動作確認したかったのでとりあえず動くレベルにしました。
version: '3'
services:
fluentd-forwarder:
build: ./fluentd-forwarder
ports:
- 24224:24224
env_file:
- .env
logstash:
build: ./logstash
env_file:
- .env
volumes:
- "./log:/tmp/log"
logstash_es:
build: ./logstash_es
env_file:
- .env
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.0.0
ports:
- "9200:9200"
- "9300:9300"
environment:
- cluster.name=docker-cluster
- xpack.security.enabled=false
- xpack.monitoring.enabled=false
- xpack.watcher.enabled=false
- xpack.graph.enabled=false
- xpack.monitoring.history.duration=1d
- "ES_JAVA_OPTS=-Xmx256m -Xms256m"
kibana:
image: "docker.elastic.co/kibana/kibana:6.0.0"
ports:
- "5601:5601"
depends_on:
- elasticsearch
logstashはデータをファイルに出力する用とESに流すようで別にしています。
logstashの設定
基本的に前回と変わりはないんですが、logstash-output-elasticsearchをインストールしたことと、設定ファイルが一部変わっています。
input {
kinesis {
kinesis_stream_name => "log"
codec => json { }
region => "ap-northeast-1"
application_name => logstash_es
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "access_log-%{+YYYYMMdd}"
}
}
動かしてみる
docker-compose upで起動後に、fluent-catを使ってダミーを流してみるとindexができあがりました。
$ curl localhost:9200/_cat/indices\?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open access_log-20180124 TQ7V1G0NS2SxW41KiotmXg 5 1 1 0 5.5kb 5.5kb yellow open .kibana qbRWN1fmTNCTJ1i9tpsjBQ 1 1 2 0 7.2kb 7.2kb
ファイルの方も書き込まれていたのでうまく動いてそうでした。
まとめ
次は開発環境とか使ってパフォーマンス検証したいなー