普通容器的日志,采用nas更好还是日志分析平台直接收集更好
从日志的持久性保存、性能、分析便捷性进行综合分析的话,哪种方案更优,或者是否有结合的方案。
首先,我们应该明确一下理解和认知。
a、普通容器日志,应该是指应用服务本身在容器中运行正常输出的应用自身日志。
b、NAS是给容器做数据持久化的支撑
c、直接收集日志,通常日志平台也是从本地日志文件采集后,转发的日志平台。很少把应用日志直接转发到日志平台上。
下面我们再基于上面的理解来分析看看:
一般来说应用日志都是落盘后,再由日志平台采集端去收集。
项目中采用NAS做数据持久化,落日志占绝大多数。
后续的日志统一管理,一般是日志平台把应用日志采集后统一存放,进行分析查看。
日志的性能,可以从日志平台自身性能、存储和网络性能等维度去考虑,同一般的日志分析方案类似,没有太特别的差异。
先从单个容器的角度看日志的持久化存储:
以Containerd容器运行时为例,容器日志会保存至/var/log/pods/$CONTAINER_NAME目录下,该目录默认保存在每个节点的本地盘上。
但是本地存储有很多问题:日志量大会占用大量本地盘空间、日志分散管理难度大、POD漂移后日志找回难等;因此常见的是指定一个外置NFS共享存储路径来挂载该目录。如果对性能有诉求,可以用全闪存的NFS存储或者SSD占比较多的混合闪存。
但解决容器日志的本地存储是第一步,要发挥日志的作用,还要建立日志分析平台。
所以接下来从K8S集群角度看日志存储和分析:
常见的是部署一套日志收集-存储-分析平台,如ELK/EFK平台
其中的L(Logstash)或F(Fluentd)作为logging agent会作为DaemonSet运行在每个节点上用于抽取日志并写入Elastic Search节点;日志会在ES节点上再次持久化,再使用Kibana做分析
ES节点下的存储建议基于混合闪存的NAS:
1. 为什么推荐外置存储:
关于普通容器的日志,使用NAS或者日志分析平台直接收集都有其优缺点。如果您只是需要简单地存储和查看日志,那么使用NAS可能更为方便。但是,如果您需要对大规模的容器日志进行分析和查询,并从中汇总有用的信息,则使用专门的日志分析平台可能更为适合。这些平台通常提供更强大的查询和可视化工具,以帮助您更好地理解和利用日志数据。
收起