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
ファイルの方も書き込まれていたのでうまく動いてそうでした。
まとめ
次は開発環境とか使ってパフォーマンス検証したいなー