# ELK 栈概述:ELK 生态、审计日志场景、课程目标

ELK栈监控审计日志实操教程 - 第1节

1.1 什么是 ELK 栈?

ELK 栈,说白了就是三个开源工具的合称——Elasticsearch、Logstash、Kibana。很多新人误以为它是一套“装好就能用”的监控软件,其实不然。我刚开始接触 ELK 时也踩过这个坑,以为装上就能自动分析日志……结果花了三天才把数据送进去。

这三兄弟各有分工:

  • Elasticsearch:负责存储和搜索。它能处理海量数据,返回结果基本在秒级。我个人习惯把它叫作“日志仓库的图书馆管理员”——所有数据进来后按索引分类,随查随到。
  • Logstash:负责采集、转换和传输。它可以吃进各种格式的日志,加工后再吐给 Elasticsearch。我记得有一次改造老系统,日志格式不统一,全靠 Logstash 的 filter 插件把每一行拆成结构化字段。
  • Kibana:负责可视化和交互。它是 ELK 的“脸面”,所有的图表、仪表盘、告警都在这上面配置。你想想看,没有 Kibana,你对着 Elasticsearch 的 REST API 查日志,效率多低。

ELK 栈 = Elasticsearch + Logstash + Kibana,后来社区加入了 Beats(轻量级采集器),现在更常被称为 Elastic Stack。但很多老运维还是习惯叫 ELK,包括我。

1.1.1 ELK 生态里的“新朋友”

除了三件套,现在生态里还有几个关键角色:

组件 作用 我的建议
Beats 轻量级数据采集器,安装在目标机器上 日志量不大时优先用 Filebeat,省资源
Elastic APM 应用性能监控,追踪请求链路 适合微服务架构,审计中也常用来查调用链
Elastic Security 内置安全分析和告警引擎 审计日志场景下能直接复用它的检测规则
Watcher 监控和告警(Elasticsearch 自带功能) 我一般用它做日志异常实时通知

为什么要把这些罗列出来?因为审计日志的场景往往需要不止一套方案。比如你要做登录失败检测,Elastic Security 的预置规则加上 Watcher 的告警,基本就能覆盖。

1.2 审计日志场景:到底在审什么?

审计日志,和普通的应用日志不一样。应用日志通常关心“程序跑得好不好”,审计日志关心的是“谁在什么时间,对什么资源做了什么操作”。

我整理了几个典型的审计场景:

  1. 用户行为审计——登录、登出、权限变更、密码修改等操作,全部要记录下来。我曾经配合安全部门追溯一次内部信息泄露,就是靠审计日志锁定了那个半夜批量导出数据的账号。
  2. 配置变更审计——谁改了服务器配置、谁改了数据库白名单。很多合规要求(如等保三级)强制保留这类日志至少6个月。
  3. 数据访问审计——谁查询了敏感表,谁下载了客户信息。这类场景在金融行业特别常见。
  4. 异常行为审计——短时间内大量登录失败、异地登录、非工作时间操作等。这些不属于单一事件,需要聚合分析。

注意:别指望所有审计日志都格式统一。我以前接手过一个客户的系统,有两个业务模块分别用 JSON 和 Syslog 格式来记录登录日志——你想想看,同一个操作,两个模块输出的字段名都不同。这就是需要 ELK 做统一处理的核心原因。

审计日志相对于普通日志,有几个特点:

  • 不可篡改性(至少得保证源头日志不可改)
  • 时间精确性(通常要求毫秒级时间戳)
  • 关联性(多个操作之间可能存在因果,比如“先改权限,再导出数据”)
  • 保留期限长(少则半年,多则数年)

有一个问题经常被忽略,就是“时间同步”。很多审计事件落地后,Elasticsearch 里看到的时间是采集服务器的时间,而不是业务服务器的时间。我曾经排查过一个案例:日志显示某个操作发生在凌晨3点,但实际业务日志是凌晨1点——差了2小时。最后发现是时区配置错了。

1.3 课程目标:这门课要带你走到哪?

这门课的目标很具体:从零搭建一套能真正用于生产环境的 ELK 审计日志监控系统。不是“演示环境”,也不是“单节点玩具”。

模块 目标 交付成果
基础搭建 能搭建 3 节点 Elasticsearch 集群 + Logstash + Kibana 一套可监控的生产环境 ELK 栈
日志采集 能接入不同格式的审计日志(JSON、Syslog、CSV) Logstash 和 Filebeat 的标准化配置
数据处理 能用 Logstash filter 做字段提取和清洗 一套可复用的审计日志处理 Pipeline
可视化 能创建审计仪表盘和实时告警 用户操作审计、异常检测、合规报表等 Dashboard
运维与调优 能应对日志量增长和集群异常 索引生命周期管理策略 + 集群监控方案

1.3.1 哪些人适合学这门课?

说实话,不是所有人都需要从头学 ELK。这门课最适合以下三类人:

  • 运维工程师:需要搭建审计日志系统,但不满足于“能用”,想做到“可靠”
  • 安全运维人员:需要满足合规审计要求,但不想用商业方案(省成本)
  • 开发工程师:想理解日志落盘后的流转过程,以及如何做数据关联分析

提示:如果你对 Elasticsearch 的 REST API 完全不熟,建议先大概过一遍基本的 CRUD 操作。不过也不用太紧张,课程里涉及的关键操作我都会给出具体请求和示例。

1.4 整体知识体系

下面这张图可以帮你快速理解 ELK 栈在审计日志场景下的全貌。我一直觉得,看文字不如看图,图能让你一眼知道每个组件处于什么位置。

ELK 栈审计日志整体架构 日志源头 应用 / 系统 / 网络设备 采集层 Filebeat / Logstash 处理与存储 Elasticsearch 集群 可视化与告警 Kibana / Watcher 用户 / 监管审查 核心要点 • 审计日志从源头直采 • 采集层做格式统一 • Elasticsearch 处理海量 • Kibana 做可视化 • 告警和报表用于审计 课程覆盖 搭建、采集、清洗、 可视化、告警、 集群调优

看了这张图,你应该能更直观地理解:ELK 栈本质上是一条数据管道。从日志源头发起,到最终呈现给用户,中间每一层都有自己的职责。我见过很多团队只搭了前两层(采集+存储),却忽略了可视化,结果审计人员还是得写 Elasticsearch 查询语句——这其实没发挥出 ELK 的真正价值。

这门课程会把每一层都涉及,而且每一层都会有实操环节。

1.5 为什么选择 ELK 做审计日志?

我接触过不少商业审计方案,比如 Splunk、Sumo Logic。它们的优点是开箱即用,但代价是贵。对于中小团队来说,ELK 是性价比最高的选择,没有之一。

对比维度 ELK 栈 商业方案(如 Splunk)
成本 开源免费(可选付费支持) 按数据量收费,量大时费用高昂
灵活性 可深度定制日志处理逻辑 固定字段和索引方式
扩展性 水平扩展,理论上无上限 扩展也方便,但单价高
社区生态 非常活跃,插件丰富 官方支持,但插件少
学习曲线 中等(需要理解各组件配合) 低(但维护成本转嫁到费用上)

当然,ELK 也不是万能药。我曾经碰到过一个极端情况:高峰期每秒写入近 10 万条审计日志,单机 Elasticsearch 直接 OOM(内存溢出)。后来调整了分片数和索引刷新间隔才扛住。这些“坑”我都会在后面的章节里详细讲。

我的建议:如果你们公司已经有现成的 Kafka,可以考虑用“Filebeat + Kafka + Logstash + Elasticsearch”的架构,把解耦做到位。我在几个高并发项目里都是这么搭的,效果不错。

1.6 小结

这一章我们聊了 ELK 栈的核心组件,也梳理了审计日志的典型场景。你可能会觉得内容偏概念,不过没关系——从下一章开始,我们会直接动手搭建环境。放心,每一行配置我都会解释清楚为什么这么写。

最后再啰嗦一句:学 ELK 不能只靠“照着敲命令”。你要理解它为什么需要这些配置、为什么日志格式要标准化。理解透了,遇到问题才不会慌——因为我就是过来人。