やりたいこと
様々なdocker containerが動いている環境で、指定したcontainer logのみ収集したい事例が出てきたのでそのやり方メモする。
やり方
1. 使用する機能
FilbeatのAutodiscoverを使用する。Autodiscoverは、dockerやkubernetes環境下で使用することが出来る。一例として、以下のフィールド条件を指定して収集条件を設定することが出来る。
- docker
- docker.container.id
- docker.container.image
- docker.container.name
- docker.container.labels
- kubernetes
- kubernetes.labels
- kubernetes.annotations
- kubernetes.node.name
- kubernetes.namespace
詳細は公式ページを確認
https://www.elastic.co/guide/en/beats/filebeat/current/configuration-autodiscover.html
2. filebeat confの書き方
今回はcontainer名を条件したが、多くの方はimageとかを条件にすることが多いのかな。
filebeat.autodiscover:
providers:
- type: docker
templates:
- condition:
contains:
docker.container.name: nginx
config:
- type: container
path:
- /var/lib/docker/containers/${data.docker.container.id}/*.log