Sim*_*kas 3 logging systemd docker fluent-bit
我正在使用 docker-compose.yml 来启动我的服务。所有服务看起来都是这样的:
A-service:
image: A-service
restart: always
network_mode: host
logging:
driver: journald
options:
tag: "{{.ImageName}}/{{.Name}}/{{.ID}}"
fluent-bit:
image: 'bitnami/fluent-bit:latest'
restart: always
network_mode: host
command: /fluent-bit/bin/fluent-bit -c /fluent-bit/etc/fluent-bit.conf
volumes:
- ./service/config/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf
- type: bind
source: /run/log
target: /run/log
Run Code Online (Sandbox Code Playgroud)
当我运行时journalctl -e -f -u docker,我看到所有日志都被记录得很好。我遇到的问题是我的 fluid-bit 容器在从 systemd 收集时似乎无法获取任何数据:
fluent-bit.conf:
[SERVICE]
Flush 5
Daemon Off
Log_Level debug
[INPUT]
Name systemd
Tag *
[OUTPUT]
Name stdout
Match *
Run Code Online (Sandbox Code Playgroud)
我认为这可能是因为它位于容器中并且无法到达日志位置,但绑定目录/run/log:/run/log没有效果。
所以我的问题是:当日志位于容器内时,Fluent-bit 可以到达 systemd 并读取日志吗?如果是 - 我怎样才能实现这一目标?
经过更多研究后,我偶然发现了这个线程: https : //github.com/ Fluent/ fluence-bit/issues/497
长话短说:
所以:
fluent-bit:
image: 'bitnami/fluent-bit:latest'
restart: always
user: root
network_mode: host
command: /fluent-bit/bin/fluent-bit -c /fluent-bit/etc/fluent-bit.conf
volumes:
- ./service/config/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf
- /etc/machine-id:/etc/machine-id:ro
- /run/log/journal:/run/log/journal
Run Code Online (Sandbox Code Playgroud)
然后,在 Fluent-bit.conf 中,您需要编辑 INPUT 路径:
[INPUT]
Name systemd
Tag *
Path /run/log/journal
Systemd_Filter _SYSTEMD_UNIT=docker.service
Systemd_Filter _SYSTEMD_UNIT=kubelet.service
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5312 次 |
| 最近记录: |