我准备使用两周时间重新学习和理解EFK/ELK体系,之前我也学习过,但是因为没有实际可操作的项目,所以很快就忘记了,以下是AI(gemini)给我提供的学习方案
学习方案
第一阶段:核心基石与可视化(第 1 - 3 天)
目标:搞定存储端 Elasticsearch 和展示端 Kibana,理解数据的”家”是怎么建的。
- 第 1 天:Elasticsearch 架构与索引原理
- 复习倒排索引(Inverted Index)和分片(Shards/Replicas)的概念。
- 实战: 使用 Docker 部署一个三节点的 ES 集群。手动通过
curl或 Kibana Dev Tools 执行 CRUD。 - 重点: 理解
Index Template和ILM(索引生命周期管理),这是生产环境下防止磁盘爆满的关键。 - 第 2 天:Kibana 数据可视化
- 实战: 导入官方示例数据集(Sample Data)。
- 练习创建 Index Pattern,制作 Discover 视图,搭建一个简单的 Dashboard(柱状图、饼图)。
- 第 3 天:ES 性能调优与健康检查
- 学习常用的集群健康检查 API (
_cat/indices,_cluster/health)。 - 思考: 当集群状态变为
Yellow或Red时,你该如何排查?
第二阶段:采集端之争 ELK vs. EFK(第 4 - 8 天)
目标:理解 Logstash 与 Fluentd/Fluent Bit 的区别,掌握数据清洗(Grok/Filter)。
- 第 4 - 5 天:Logstash(ELK 的”L”)
- 学习 Logstash 的三段式配置:
Input,Filter,Output。 - 实战: 模拟收集 Nginx 日志。使用 Grok 插件将非结构化日志解析成 JSON。
- 难点: 调试 Grok 表达式(推荐使用 Kibana 内置的 Grok Debugger)。
- 第 6 - 7 天:Fluentd & Fluent Bit(EFK 的”F”)
- 了解为什么云原生环境(K8s)更偏爱 Fluentd。
- 实战: 部署 Fluent Bit 收集系统日志(Journald),并转发给 ES。
- 对比: 感受 Fluentd 的”轻量化”配置与 Logstash 的区别。
- 第 8 天:Beats 系列(运维利器)
- 快速上手 Filebeat 和 Metricbeat。
- 实战: 使用 Filebeat 直接对接 ES(绕过 Logstash),体验
Ingest Pipeline在 ES 端做简单处理。
第三阶段:安全、监控与实战场景(第 9 - 12 天)
目标:结合你的安全背景,把系统”锁死”并投入实战。
- 第 9 天:安全加固(RBAC & TLS)
- 实战: 开启 ES 的内置安全功能。配置用户权限(Role-based Access Control),设置 Kibana 登录认证。
- 生成证书并开启节点间的加密传输(TLS)。
- 第 10 天:监控与告警
- 学习使用 Watcher 或 Kibana Alerting。
- 场景: 设置一个告警,当 5 分钟内 Nginx 出现超过 10 次
500错误时,触发通知。 - 第 11 - 12 天:日志收集的”最后公里”
- 实战: 结合
rsyslog。很多旧系统只支持 syslog,练习如何用 Logstash 或 Fluentd 接收 syslog 数据流。 - 架构思考: 引入消息队列(如 Redis 或 Kafka)作为缓冲,防止日志峰值冲垮 ES。
第四阶段:总演练与大作业(第 13 - 14 天)
目标:从零搭建一套完整的生产级架构。
- 任务:搭建一个”全栈日志审计系统”
- 环境: 在你的 WSL2 或服务器上,用容器起一套完整环境。
- 采集: Filebeat 收集
/var/log/auth.log(安全审计)和 Nginx 日志。 - 清洗: 经过 Logstash 过滤,提取出:访问 IP、地理位置(GeoIP 插件)、状态码。
- 存储: 存入 ES,并配置 7 天自动删除旧索引。
- 展示: 在 Kibana 做一个”安全监控大屏”,显示异常登录尝试和流量趋势。
第一天
搭建一个es集群
二进制安装
1 | # 二进制安装系统支持情况 |
docker-compose安装
1 | # 直接略过单机安装,直接用docker-compose装集群了 |
获取es集群的api key
我这里下载了postman
使用最简单的basic auth(账密)

获取id和api-key
记录id与encoded的值,encoded是id 和 api_key组合后经过 Base64 编码的结果
2t1QBZ0B32Y4LOSZqZxD
MnQxUUJaMEIzMlk0TE9TWnFaeEQ6UjAyLVloeUFNRGw4Rl85d25BeEM3dw==

使用api key进行连接es集群测试

向es集群中传入数据
创建索引并定义 Mapping(手动创建
这个行为类似于建立数据库中的一个表,一行数据有很多键,每个键都有对应的字段行为,比如自增、字符串格式、时间格式等
1 | 将索引PUT进去,这个syslog表就手动创建了一个索引,用来对syslog日志中的字段进行分类 |

手动传入数据

查找数据

在kibana中查看数据
在kibana-stack management中创建一手图表

