网站首页 > 技术文章 正文
趁热记录下,给未来的自己
- 背景
- 现象
- 解决过程
- 总结(很重要)
背景?
本地部署了两套 k8s 环境:开发和预生产。为了方便开发同学调试,需要将 k8s 的业务日志通过 EFK 框架输出到 WEB 端查看。?
部署架构:?
- elastic search 和 kibana 是部署在 k8s 集群外,?
- filebeat 以 demonset 的方式部署在 k8s 的 node 节点上。?
现象?
同一份 filebeat-k8s.yml 文件,在开发集群上可以成功部署且在 Kibana 上能采集到对应的日志。但是在预生产集群上部署成功后,无法在 Kibana 上看到日志。?
?
解决过程?
首先,对比了 filebeat 在开发和预生产 node 节点上的日志,发现前者含有 [input.harvester] 和 Collection to backoff established 日志,而后者没有。这说明,后者没有采集到数据,所以没有向 elastic search 发送数据。?
定位到了具体问题,那么接下来要解决的是,为什么预生产 node 节点上的 filebeat 无法采集 docker 日志呢??
到这里,我突然想起来,预生产和开发集群最大的区别在于: docker 安装目录不同。?
- 开发集群的 docker 安装在默认位置: /var/lib/docker; ?
- 预生产的 docker 安装在了 /home/ops/docker 。?
这么做的目的是,将 docker 从较小的系统盘移到了较大的数据盘上,以便放更多的日志。没想到给自己埋下了一个大坑。。。?
为了验证猜测,进入预生产的 filebeat 容器, 查看 /var/log/container 目录下的内容,发现全是红色的,表示挂载失败:?
用 ls -la 命令查看了下,发现这些文件软链接于 /var/log/pods??
于是,又进入 /var/log/pods,ls -la 发现,该目录下的log文件又软链接于 /home/ops/docker 目录?
而 /home/ops/docker 目录在容器中并不存在!至此,找到了根本原因。那么可以修改 filebeat-k8s.yml 里 DeamonSet 资源的 volume 和 volumeMounts 如下:?
volumeMounts:
- name: varlibdockercontainers
# 容器内的目录
mountPath: /home/ops/docker/containers
readOnly: true
volumes:
- name: varlibdockercontainers
# 宿主机上的目录
hostPath:
path: /home/ops/docker/containers
总结
k8s里 docker 的日志链路关系:
- 默认docker安装目录:
/var/log/container/*.log --> /var/log/pods/*/*.log -> /var/lib/docker/containers/*/*.log
- 预生产docker安装目录:
/var/log/container/*.log --> /var/log/pods/*/*.log -> /home/ops/docker/containers/*/*.log
Done
猜你喜欢
- 2024-09-22 经典案例复盘——运维专家讲述如何实现K8S落地
- 2024-09-22 EFK 日志系统收集K8s日志 (二)
- 2024-09-22 Docker安装ELK并实现JSON格式日志分析
- 2024-09-22 开发利器丨如何使用ELK设计微服务中的日志收集方案?
- 2024-09-22 智汇华云 | 集群日志动态采集方案
- 2024-09-22 使用Elastic进行事件响应的便携式SIEM
- 2024-09-22 日志服务架构设计
- 2024-09-22 如何将 Python 项目日志接入到 ELK
- 2024-09-22 搭建ELK容器化,so easy
- 2024-09-22 Elasticsearch Service 数据接入
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)