好的,阿杰 👍
我给你整理一份 EFK 全栈日志系统简介,包含概念、架构、组件功能及应用场景。


📝 EFK 简介

EFK 是一套常用的日志管理与分析系统,主要用于 收集、存储、搜索和可视化日志
EFK 全称为:

E = Elasticsearch
F = Fluentd
K = Kibana

它常用于 微服务、容器化(Docker/Kubernetes)环境 的集中式日志管理。


🔹 1. 系统组成

组件功能说明
Elasticsearch日志存储 & 搜索基于 Lucene 的分布式搜索引擎,支持全文搜索、聚合分析、分布式存储。
Fluentd日志采集 & 转发数据收集和传输工具,将日志从各种来源(容器、文件、应用)收集后发送到 Elasticsearch。
Kibana日志可视化可视化界面,用于搜索、分析、创建仪表盘和图表,方便运维和开发查看日志。

🔹 2. 工作流程

应用容器 / 系统日志
        │
        ▼
   Fluentd / Filebeat
        │
        ▼
   Elasticsearch (存储 + 搜索)
        │
        ▼
      Kibana (可视化分析)

  1. 日志采集:Fluentd 或 Filebeat 监控应用日志文件、容器 stdout/stderr、系统日志。
  2. 日志传输与解析:Fluentd 可以进行格式化、标签化、过滤,支持 JSON、正则解析等。
  3. 存储与索引:Elasticsearch 将日志存储为文档,并建立索引,支持高效查询。
  4. 可视化展示:Kibana 提供图表、搜索和仪表盘,方便开发与运维快速定位问题。

🔹 3. 优点

  • 集中管理:微服务或多容器应用日志统一收集和管理。
  • 强大搜索:Elasticsearch 提供全文搜索和聚合分析功能。
  • 实时监控:日志实时传输,Kibana 仪表盘可即时显示。
  • 可扩展性强:支持海量日志存储和分布式部署。
  • 插件丰富:Fluentd 支持上百种插件,可对日志进行加工、过滤和路由。

🔹 4. 典型应用场景

  • 容器化环境(Docker / Kubernetes)日志收集与监控。
  • 微服务系统异常日志追踪与分析。
  • 系统运维监控、审计与告警。
  • 数据分析与业务指标监控(通过日志事件聚合生成指标)。

🔹 5. 补充说明

  • EFK vs ELK
    • ELK:Elasticsearch + Logstash + Kibana
    • EFK:Elasticsearch + Fluentd + Kibana
    • 区别:Fluentd 替代了 Logstash,Fluentd 更轻量,易于在容器环境部署。

好嘞,阿杰 👍
我帮你画一个 EFK 架构图,把应用日志的采集、传输、存储和可视化流程直观展示出来。


🖥️ EFK 架构图(日志收集与分析流程)

┌─────────────────────────────┐
│       应用 / 容器 / 系统日志       │
│  (Docker stdout/stderr / 文件日志) │
└───────────────┬─────────────┘
                │
                ▼
       ┌─────────────────┐
       │     Fluentd      │
       │  日志采集 & 转发 │
       │ - 格式化日志      │
       │ - 过滤 & 标签化   │
       └─────────┬───────┘
                 │
                 ▼
       ┌─────────────────┐
       │  Elasticsearch  │
       │ 日志存储 & 搜索  │
       │ - 建立索引       │
       │ - 支持聚合分析   │
       └─────────┬───────┘
                 │
                 ▼
       ┌─────────────────┐
       │     Kibana       │
       │ 日志可视化 & 分析 │
       │ - 仪表盘          │
       │ - 搜索 & 聚合     │
       └─────────────────┘


📌 数据流说明

  1. 日志生成:应用或容器产生日志,可以是文本文件或标准输出。
  2. 日志采集:Fluentd 监听日志源,解析、格式化、打标签,并发送到 Elasticsearch。
  3. 日志存储:Elasticsearch 将日志存储为文档,建立索引,实现快速搜索和聚合分析。
  4. 日志可视化:Kibana 提供 Web 可视化界面,支持搜索、仪表盘和实时监控。

好嘞,阿杰 👍
我帮你画一个 EFK 在 Kubernetes 集群中的部署架构图,把 Fluentd、Elasticsearch、Kibana 的部署方式和日志流向都可视化出来。


🖥️ EFK + Kubernetes 架构图

                    ┌───────────────────────┐
                    │       用户访问 Kibana    │
                    │  (Web Dashboard / 查询) │
                    └───────────┬───────────┘
                                │
                                ▼
                    ┌───────────────────────┐
                    │      Kibana Pod        │
                    │ Deployment / Service   │
                    └───────────┬───────────┘
                                │
                                ▼
                    ┌───────────────────────┐
                    │   Elasticsearch Pod(s) │
                    │ StatefulSet / Service  │
                    │ - 存储 & 索引日志       │
                    │ - 聚合 & 搜索          │
                    └───────────┬───────────┘
                                │
                                ▼
       ┌───────────────────────────────────────────┐
       │                  Fluentd                  │
       │           DaemonSet (每个 Node 一个)       │
       │ - 收集 Node 上的容器日志 / 系统日志         │
       │ - 格式化 / 打标签 / 转发到 Elasticsearch │
       └─────────────┬─────────────┬──────────────┘
                     │             │
                     ▼             ▼
           ┌─────────────┐   ┌─────────────┐
           │   Node 1    │   │   Node 2    │
           │ Pods / Logs │   │ Pods / Logs │
           └─────────────┘   └─────────────┘


📌 数据流说明

  1. 应用日志:每个 Pod 产生日志(stdout/stderr 或文件日志)。
  2. 日志采集:Fluentd DaemonSet 运行在每个 Node 上,收集所有 Pod 的日志和系统日志。
  3. 日志存储:Fluentd 将日志发送到 Elasticsearch StatefulSet,每个 Pod 存储一部分索引。
  4. 日志可视化:Kibana Deployment 提供 Web Dashboard,用户可以搜索、过滤和分析日志。

🔹 特点

  • Fluentd DaemonSet:保证每个 Node 上的日志都能被收集,无需手动配置。
  • Elasticsearch StatefulSet:保证日志数据持久化,节点可扩展,支持高可用。
  • Kibana Deployment:提供统一 Web 入口,支持多用户访问和仪表盘展示。