好的,阿杰 👍
我给你整理一份 EFK 全栈日志系统简介,包含概念、架构、组件功能及应用场景。
📝 EFK 简介
EFK 是一套常用的日志管理与分析系统,主要用于 收集、存储、搜索和可视化日志。
EFK 全称为:
E = Elasticsearch
F = Fluentd
K = Kibana
它常用于 微服务、容器化(Docker/Kubernetes)环境 的集中式日志管理。
🔹 1. 系统组成
组件 | 功能 | 说明 |
---|---|---|
Elasticsearch | 日志存储 & 搜索 | 基于 Lucene 的分布式搜索引擎,支持全文搜索、聚合分析、分布式存储。 |
Fluentd | 日志采集 & 转发 | 数据收集和传输工具,将日志从各种来源(容器、文件、应用)收集后发送到 Elasticsearch。 |
Kibana | 日志可视化 | 可视化界面,用于搜索、分析、创建仪表盘和图表,方便运维和开发查看日志。 |
🔹 2. 工作流程
应用容器 / 系统日志
│
▼
Fluentd / Filebeat
│
▼
Elasticsearch (存储 + 搜索)
│
▼
Kibana (可视化分析)
- 日志采集:Fluentd 或 Filebeat 监控应用日志文件、容器 stdout/stderr、系统日志。
- 日志传输与解析:Fluentd 可以进行格式化、标签化、过滤,支持 JSON、正则解析等。
- 存储与索引:Elasticsearch 将日志存储为文档,并建立索引,支持高效查询。
- 可视化展示: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 │
│ 日志可视化 & 分析 │
│ - 仪表盘 │
│ - 搜索 & 聚合 │
└─────────────────┘
📌 数据流说明
- 日志生成:应用或容器产生日志,可以是文本文件或标准输出。
- 日志采集:Fluentd 监听日志源,解析、格式化、打标签,并发送到 Elasticsearch。
- 日志存储:Elasticsearch 将日志存储为文档,建立索引,实现快速搜索和聚合分析。
- 日志可视化: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 │
└─────────────┘ └─────────────┘
📌 数据流说明
- 应用日志:每个 Pod 产生日志(stdout/stderr 或文件日志)。
- 日志采集:Fluentd DaemonSet 运行在每个 Node 上,收集所有 Pod 的日志和系统日志。
- 日志存储:Fluentd 将日志发送到 Elasticsearch StatefulSet,每个 Pod 存储一部分索引。
- 日志可视化:Kibana Deployment 提供 Web Dashboard,用户可以搜索、过滤和分析日志。
🔹 特点
- Fluentd DaemonSet:保证每个 Node 上的日志都能被收集,无需手动配置。
- Elasticsearch StatefulSet:保证日志数据持久化,节点可扩展,支持高可用。
- Kibana Deployment:提供统一 Web 入口,支持多用户访问和仪表盘展示。
发表回复