前言 在生产环境中,日志对于排查问题至关重要,我们需要有一个日志管理系统kubernetes可以实现elk的快速部署和使用,通过statefulset控制器部署elasticsearch集群组件,用来检索存储日志数据;使用hostpath或者volumenclaimtemplate动态生成pv实现es数据的持久化;通过deployment部署kibana组件,实现日志的可视化管理;通过daemonset控制器部署fluentd组件,来收集各节点和k8s集群控制台的日志;通过daemonset控制器部署filebeat组件,来收集应用服务内部的日志;通过kafka/redis做消息队列缓存,减轻logstash的数据处理压力。流向如下:
资料下载
1.EFK的yaml文件所在的github地址如下:
https://github.com/luckylucky421/efk
2.efk组件需要的镜像获取方式在百度网盘
链接:https://pan.baidu.com/s/1lsP2_NrXwOzGMIsVCUHtPw
提取码:kpg2
3.efk部署操作参考文章:
https://blog.csdn.net/weixin_38320674/article/details/105852646
? ? ? ?efk部署很详细了,不做叙述了,此时只是采集到集群控制台输出的日志,实际生产应用的日志保存在各自的容器目录中,我们日常排查问题更多的是取这块的日志,采用一个pod下面同时部署app服务容器和filebeat容器,两者通过emptydir模式挂载volume,filebeat获取到日志再发送至kafka消息队列,logstash订阅kafka的主题获取并处理日志,最终发送给ES通过kibana展示。
待续~
|