记录在云原生技术日志收集的两个坑——flume和fluent(1)
flumeflume原官方本就没实现支持k8s或者其他容器部署,虽然能找到一些镜像,但没啥人用,因为坑就在这里flume最常用的source类型,taildir,可以监控指定的多个文件,一旦文件内有新写入的数据,就会将其写入到指定的sink内,但如果部署到容器上,flume就必须通过挂载监听文件,但这样就会有问题。因为flume读取追加内容的机制是通过记录一个偏移量文件来实现,这个文件也是需要配置
flume
flume原官方本就没实现支持k8s或者其他容器部署,虽然能找到一些镜像,但没啥人用,因为坑就在这里
flume最常用的source类型,taildir,可以监控指定的多个文件,一旦文件内有新写入的数据,就会将其写入到指定的sink内,但如果部署到容器上,flume就必须通过挂载监听文件,但这样就会有问题。小丑竟是我自己,如果用另外的pod往挂载的文件写日志,没问题,如果收动修改文件就有问题。。。还有待研究
fluent
这个官方确实是支持k8s以及容器部署,应该说支持的不错,但如果你安照fluent官方和k8s官方的文档来操作,会坑死你。比如,fluent官方的实例,让你挂载的配置文件是fluentd.conf,但对应给你的镜像确是要读取fluent.conf的,不然就报错。又比如,如果你按k8s官方文档用ConfigMap配置,你也会得到解析报错,因为即使你在ConfigMap这样写
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd-config-1
data:
fluent.conf:
<source>
@type http
port 9880
bind 0.0.0.0
</source>
<match **>
@type stdout
</match>
最终被挂载进去,生成的文件是这样的
<source>@type http port 9880 bind 0.0.0.0</source>
<match **>@type stdout</match>
然而,就是这个鬼东西,标签的一行是不允许有别的东西的,只能是一个标签!!!!!!!!!!!!!!!!!!!!!!!!!
更多推荐
所有评论(0)