2日前に書いたこれ。
参考にしたサイトの情報が古かったようで、
filebeat.autodiscover: providers: - type: docker templates: - condition: contains: docker.container.image: nginx config: - module: nginx access: input: type: docker containers.ids: - "${data.docker.container.id}" error: input: type: docker containers.ids: - "${data.docker.container.id}"
この type: docker というのは古いようで...
WARN [cfgwarn] docker/input.go:49 DEPRECATED: 'docker' input deprecated. Use 'container' input instead. Will be removed in version: 8.0.0
などと警告が表示されていた。さらに悪いことに container.image が "nginx" を含んでいないログまで filebeat-7.8.0-nginx-access-pipeline に送られていた。
それで調べて書き直した結果。
filebeat.autodiscover: providers: - type: docker templates: - condition: contains: docker.container.image: app config: - type: container paths: ["/var/lib/docker/containers/${data.docker.container.id}/*-json.log"] - condition: contains: docker.container.image: nginx config: - module: nginx access.input: type: container stream: stdout paths: ["/var/lib/docker/containers/${data.docker.container.id}/*-json.log"] error.input: type: container stream: stderr paths: ["/var/lib/docker/containers/${data.docker.container.id}/*-json.log"]
これでコンテナ名に "nginx" を含むコンテナのアクセスログ(stdoutで出力される)は filebeat-7.8.0-nginx-access-pipeline へ、エラーログ(stderrで出力される)は filebeat-7.8.0-nginx-error-pipeline へ、コンテナ名に "app" を含むものは、どのパイプラインも通さないという動作になった。