やりたい構成になりました。
構成
今回目指す構成は以下です。
docker-composeを使用し、録画サーバ上にfluetntd、elasticsearch、kibanaを動かします。
fluentdで受け取ったログをファイルに書き出すようにもしています。
設定
送信側
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されているのを確認できます。