1. 收集那些日志
- k8s系统的组件日志
- k8s cluster里面部署的应用程序日志
- 标准输出
- 日志文件
2. elk stack日志收集方案
- 架构图
ELK 是三个开源软件的缩写,提供一套完整的企业级日志平台解决方案。
分别是:
- Elasticsearch:搜索、分析和存储数据
- Logstash :采集日志、格式化、过滤,最后将数据推送到Elasticsearch存储
- Kibana:数据可视化
- redis:可以作为数据缓存做准备
- Beats :集合了多种单一用途数据采集器,用于实现从边缘机器向Logstash 和Elasticsearch 发送数据。里面应用最多的是Filebeat,是一个轻量级日志采集器。
3. 容器中的日志怎么收集的
-
方案一:Node上部署一个日志收集程序
- DaemonSet方式部署日志收集程序
- 对本节点/var/log/kubelet/pods和/var/lib/docker/containers/两个目录下的日志进行采集
- Pod中容器日志目录挂载到宿主机统一目录上
-
方案二:Pod中附加专用日志收集的容器
- 每个运行应用程序的Pod中增加一个日志收集容器,使用emtyDir共享日志目录让日志收集程序读取到。
- 每个运行应用程序的Pod中增加一个日志收集容器,使用emtyDir共享日志目录让日志收集程序读取到。
-
方案三:应用程序直接推送日志
- 超出Kubernetes范围
- 超出Kubernetes范围
4. 日志收集三种的优缺点
方式 | 优点 | 缺点 |
---|---|---|
方案一:Node上部署一个日志收集程序 | 每个Node仅需部署一个日志收集程序,资源消耗少,对应用无侵入 | 应用程序日志如果写到标准输出和标准错误输出,那就不支持多行日志 |
方案二:Pod中附加专用日志收集的容器 | 低耦合 | 每个Pod启动一个日志收集代理,增加资源消耗,并增加运维维护成本 |
方案三:应用程序直接推送日志 | 无需额外收集工具 | 浸入应用,增加应用复杂度 |