東京生まれHOUSE MUSIC育ち

悪そうな奴はだいたい友達なの?

fluentd、elasticsearch、kibanaをdocker-composeで動かす


スポンサードリンク

やりたい構成になりました。

構成

今回目指す構成は以下です。

docker-composeを使用し、録画サーバ上にfluetntd、elasticsearch、kibanaを動かします。

fluentdで受け取ったログをファイルに書き出すようにもしています。

f:id:padobure:20190501112510p:plain

設定

送信側

送信先IPアドレスを録画サーバに変更しています。

docker container run --rm \
  --name httpd \
  --log-driver=fluentd \
  --log-opt fluentd-address=tcp://192.168.1.254:24224 \
  --log-opt tag=docker.{{.ImageName}}.{{.Name}}.{{.ID}} \
  -v /etc/localtime:/etc/localtime:ro \
  httpd:2.4.37

受信側

以下の記事を参考にしました。

docker-composeでfluentdとelasticsearch/kibanaを動かす - BlankTar

docker-compose.ymlは以下です。elasticsearchやkibanaは古いバージョンにしないと動かなかったので、「5.3.0」にしています。

version: '3.4'

x-logging:
  &default-logging
  driver: fluentd
  options:
    fluentd-address: localhost:24224
    tag: "log.{{.Name}}"

services:
  fluentd:
    build: ./fluentd

    volumes:
      - ./fluentd/fluentd.conf:/fluentd/etc/fluentd.conf:ro
      - /data:/fluentd/log

    ports:
      - 24224:24224

    environment:
      FLUENTD_CONF: fluentd.conf

  elasticsearch:
    image: elasticsearch:5.3.0

    depends_on:
      - fluentd
    logging: *default-logging

  kibana:
    image: kibana:5.3.0

    ports:
      - 5601:5601

    depends_on:
      - elasticsearch
    logging: *default-logging

fluentd.conを以下のようにしています。

<source>
  @type forward
  port 24224
</source>

<match **>
  @type copy

  <store>
    @type stdout
  </store>

  <store>
    @type elasticsearch
    host elasticsearch
    port 9200
    logstash_format true
    logstash_prefix fluent.${tag}
  </store>

  <store>
    @type file
    @id   output_docker1
    path         /fluentd/log/docker.*.log
    symlink_path /fluentd/log/docker.log
    append       true
    time_slice_format %Y%m%d
    time_slice_wait   1m
    time_format       %Y%m%dT%H%M%S%z
  </store>

</match>

kibanaでの確認

kibanaにアクセスし、Dev Toolsを参照すると、elasticsearchにindexされているのを確認できます。

f:id:padobure:20190501114305j:plain