一、非云原生应用日志收集方案

1.6.1 Filebeat收集非云原生应用日志架构图

Day023-K8s可观测性-基于ECK的下一代日志收集框架-图6

1.6.2 Filebeat收集非云原生应用日志架构图解析

1、应用与日志生成

  • 非云原生应用(Application) 以容器形式运行在 Kubernetes Pod 中,但未遵循云原生日志规范(如未将日志输出到标准流)。
  • 应用将日志直接写入容器内的本地文件路径(如 /tmp/xxx.log/app/xxx.log)。

2、日志共享与挂载

  • EmptyDir 卷
  • 在 Pod 内创建 EmptyDir 卷,作为临时存储空间,用于在应用容器与 Filebeat 容器之间共享日志文件。
  • 应用容器将日志写入挂载到 EmptyDir 的目录(如 /tmp/xxx.log)。
  • Filebeat 容器通过挂载同一 EmptyDir 卷,读取共享目录中的日志文件(如 /app/xxx.log)。
  • 路径映射
  • 应用容器日志路径:/tmp/xxx.log → 挂载到 EmptyDir 的某个子目录。
  • Filebeat 容器访问路径:/app/xxx.log(通过卷挂载映射到 EmptyDir 的实际路径)。

3、日志收集器部署模式(Sidecar)

  • Filebeat 以 Sidecar 模式部署
  • 每个应用 Pod 内同时运行应用容器和 Filebeat 容器,二者共享 EmptyDir 卷。
  • Filebeat 实时监控共享目录中的日志文件变化,进行采集、解析与转发。
  • 轻量级代理:Filebeat 仅负责日志传输,资源占用低,适合与业务容器共存。

4、日志处理与转发

  • Filebeat 从共享目录中读取日志后,执行以下操作:
  • 解析日志格式(如 JSON、文本)。
  • 添加元数据(如 Pod 名称、命名空间)。
  • 数据缓冲(可选集成 Kafka 或 Redis 应对突发流量)。
  • 最终将日志发送至后端系统(如 Elasticsearch、Kafka 或云存储)。

1.6.3 Filebeat收集非云原生应用日志架构流程总结

应用容器(Pod 内)
  ↓(写入日志)
EmptyDir 共享卷(/tmp/xxx.log  /app/xxx.log)
  ↓(通过卷挂载)
Filebeat 容器(Sidecar 模式)
  ↓(采集、解析、转发)
Elasticsearch/Kafka 等存储或消息系统

1.7 操作系统级其他组件日志收集方案

1.7.1 Filebeat收集操作系统级其他组件日志架构图

Day023-K8s可观测性-基于ECK的下一代日志收集框架-图7

1.7.2 Filebeat收集操作系统级其他组件日志架构图解析

1、操作系统级日志生成

  • 宿主机(Node)上的操作系统组件(如内核、系统服务、安全审计等)将日志写入 /var/log 目录下的特定文件(如 /var/log/syslog/var/log/auth.log/var/log/kern.log 等)。

2、日志存储与挂载

  • HostPath 卷
  • 通过 Kubernetes 的 hostPath 卷,将宿主机的 /var/log 目录挂载到 Filebeat 容器中,使 Filebeat 能够直接读取节点上的操作系统级日志文件。
  • 挂载路径示例:宿主机的 /var/log → Filebeat 容器的 /host-var-log

3、日志收集器部署模式(DaemonSet)

  • Filebeat 以 DaemonSet 形式部署
  • 每个节点(Node)上运行一个 Filebeat Pod,确保全覆盖收集所有节点的系统日志。
  • DaemonSet 自动适配节点的扩缩容,无需手动管理日志采集器的部署。
  • 权限配置
  • Filebeat 容器需通过 securityContext 配置高权限(如 runAsUser: 0),以访问宿主机上的特权日志文件(如 /var/log/secure)。

4、日志处理与转发

  • Filebeat 从挂载的 /var/log 目录中实时读取日志,进行以下处理:
  • 解析与过滤:提取关键字段(如日志级别、时间戳、服务名称)。
  • 富化元数据:自动附加节点名称、IP、标签等 Kubernetes 元数据。
  • 数据缓冲:可选集成 Kafka 或 Redis 应对流量峰值。
  • 最终将结构化日志发送至后端存储(如 Elasticsearch)或监控系统(如 Splunk)。

1.7.3 Filebeat收集操作系统级其他组件日志流程总结

Filebeat收集操作系统级其他组件日志流程总结:

宿主机操作系统组件(如 systemd、kern)
  ↓(写入日志)
宿主机 /var/log 目录
  ↓(通过 HostPath 挂载)
Filebeat 容器(DaemonSet 部署)
  ↓(采集、解析、转发)
Elasticsearch/Grafana Loki 等存储或分析系统