将pod中的日志推到阿里云的SLS中遇到的一些坑

在阿里云环境中,将pod中的日志推到日志服务SLS中,按照官方文档,他会推荐你使用sidecar方式将logtail跑到pod中,然后业务容器和logtail共享同一个卷,然后logtail实现日志采集,具体配置参考官方文档即可,我这里说一个官方文档比较坑的点,就是在配置过程中,官方文档使用emptyDir 类型的卷来和logtail容器进行共享,我们业务日志打到这个目录中:

默认emptyDir类型的卷是使用tmpfs类型来挂载,而tmpfs占用的是内存,如果日志一大,容器又配置了limit,就会造成 OOM,而且就算没有配置pod的limit,占用内存来存放日志也是很不合理的,所以赶紧将卷类型改为hostPath类型,在初始化linux节点的时候,就创建一个目录叫做/data/logs/,通常我们/data目录是单独挂载一块盘。然后path部分填这个目录的一个子目录,最好使用服务名进行区分,比如我填的是/data/logs/wordpress-log-v1,这样服务的日志就落在了磁盘上,logtail和服务在磁盘上进行日志写入和采集。最后的一步,在初始化系统的时候仍然添加一个logrotate的配置文件指向/data/logs/*/*.log,最终实现日志的轮转,及时释放磁盘空间。如果一个node上调度了多个相同的pod,它们的日志会写进同一个文件而不是覆盖,依然能正常采集。

留下评论