fluentd是常用容器日志收集工具,与filebeat不同,fluentd可以将容器日志在不落到本地以文件形式存在的情况下,将日志收集并吐到对应的存储中。
例如,通常情况下,容器app的日志需要通过挂在,把容器日志目录挂在到本地,然后日志输出到log文件,以此来持久化。在通过filebeat等日志收集共工具将持久化的log文件吐到相应的日志存储(es或者kafka)中。
通过fluentd,容器不必将日志持久化到本地,fluentd可以直接收集docker logs <container_id>打印的日志,并吐到相应的日志存储中。这样可以节省磁盘空间。
要实现这样的功能需要如下配置:
1.配置docker日志driver为fluentd
在启动容器时,添加参数–log-drive=fluentd。
例如: docker run --log-driver fluentd nginx:latest
这样将使容器以fluentd作为日志driver。
2.配置fluentd
fluentd有许多插件,输出到es需要安装fluent-plugin-elasticsearch插件,安装过程可以查看fluentd官方文档。
<match **>
@type elasticsearch
host localhost
port 9200
logstash_format true
</match>
host:es服务器地址
port:es服务端口
此为一个简单f