一、生产级亿级流量日志平台架构解析

1.4.1 生产级亿级流量日志平台架构图

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

1.4.2 架构核心组件及流程

1、日志生成层(Kubernetes + e-service)

  • Kubernetes 作为容器编排平台,管理业务微服务(如 e-service)的部署、扩缩容及服务发现。
  • e-service 作为业务应用,产生海量日志数据,通过 Sidecar 或 DaemonSet 模式(如 Filebeat/Fluentd)将日志输出到标准流或文件。

2、日志收集与缓冲层(Kafka 集群)

  • 内部 Kafka Cluster:部署在 Kubernetes 内,接收来自 Logstash 或轻量级收集器(如 Filebeat)的日志数据,作为第一层缓冲,应对流量峰值。
  • 外部 Kafka Cluster:独立于 Kubernetes 的分布式消息队列,提供跨集群、跨区域的数据同步和持久化存储,确保高可用性和数据可靠性。
  • kafka-service:Kubernetes 内的 Kafka 服务,可能用于内部生产者/消费者的连接管理。

3、日志处理层(Logstash)

  • Logstash 从 Kafka 消费数据,进行日志解析、过滤、字段提取等预处理,并将结构化数据推送至 Elasticsearch。支持动态扩展以应对高负载。

4、存储与搜索层(Elasticsearch)

  • 外部 Elasticsearch Cluster:独立部署的高可用集群,采用分片和副本机制,支持横向扩展,提供 PB 级日志存储和近实时搜索能力。
  • 结合冷热数据分层(Hot-Warm Architecture),优化存储成本与查询性能。

5、可视化与监控层(Kibana)

  • Kibana 作为可视化工具,展示日志分析仪表盘、异常检测及趋势图表,支持 APM(应用性能监控)和告警集成。
  • 可结合 Prometheus + Grafana 监控 Kafka、Elasticsearch 及 Kubernetes 集群状态。

1.5 云原生应用日志收集方案

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

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

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

1、应用Pod与日志生成

  • 云原生应用(如微服务)以 Pod 形式部署在 Kubernetes 集群中。
  • 容器日志默认由 Kubernetes 的日志驱动(如 json-file)写入宿主机的 /var/log/containers 目录,路径格式为:/var/log/containers/<pod-name>_<namespace>_<container-name>-<container-id>.log

2、日志存储与挂载

  • HostPath 卷:通过 Kubernetes 的 hostPath 卷,将宿主机的 /var/log/containers 目录挂载到 Filebeat 容器中,使 Filebeat 能够直接读取节点上的所有容器日志文件。
  • 节点(Node):每个 Kubernetes 节点均需挂载此目录,确保日志可被统一收集。

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

  • Filebeat 以 DaemonSet 形式部署
  • 每个节点(Node)上运行一个 Filebeat Pod,确保全覆盖收集所有节点的日志。
  • DaemonSet 自动适配节点扩缩容,无需手动管理日志收集器的部署。
  • 轻量级设计:Filebeat 作为轻量级日志采集器,仅负责日志的读取、解析与转发,资源占用低。

4、日志处理与转发

  • Filebeat 从挂载的目录中实时读取日志,进行以下处理:
  • 解析字段(如容器名、Pod名称、命名空间)。
  • 过滤与富化(添加 Kubernetes 元数据:标签、注解等)。
  • 数据缓冲(可选结合 Kafka 或 Redis 应对流量峰值)。
  • 最终将结构化日志发送至后端存储(如 Elasticsearch)或消息队列(如 Kafka)。

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

应用 Pod
  ↓(写入日志)
宿主机 /var/log/containers 目录
  ↓(通过 HostPath 挂载)
Filebeat 容器(DaemonSet 部署)
  ↓(采集、解析、转发)
Elasticsearch/Kafka 等存储或消息系统