tjinjin's blog

インフラ要素多めの個人メモ

fluentd->kinesis->logstash->Elasticsearchの流れでログを流してみる

About

前作の続きです。今度はElasticsearchに入れてみます。

cross-black777.hatenablog.com

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

ファイルの方も書き込まれていたのでうまく動いてそうでした。

まとめ

次は開発環境とか使ってパフォーマンス検証したいなー