ELK Stack 通俗指南:日志江湖的“神探组合”

ELK 不是一个软件,而是一个技术栈组合
它是目前互联网公司用来处理日志(Logs) 的事实标准。

如果你的系统报错了,老板问:“昨天晚上 3 点是谁在攻击我们的接口?”,你不需要去几十台服务器上一台台 grep 日志,只需要打开 ELK。


1. 成员介绍 (复仇者联盟)

ELK 最初只有三个成员,后来加了一个小弟(Beats),所以现在有时也叫 Elastic Stack

A. Elasticsearch (大脑)

  • 角色:仓库管理员 + 超级图书管理员。
  • 职责:负责存数据搜数据
  • 能力:它用“倒排索引”技术,让你在几亿条日志里搜一个词,只需要几毫秒。
  • (详见 Elasticsearch Wiki

B. Logstash (输油管 - 老师傅)

  • 角色:加工厂流水线。
  • 职责:负责收集清洗转换数据。
  • 场景
    • 日志里的日期格式是 2026/01/22,ES 想要 2026-01-22,Logstash 帮你改。
    • 日志里有敏感的“身份证号”,Logstash 帮你把中间打上星号 **** 再存库。
    • 缺点:它是用 Java 写的,比较重,跑起来有点吃内存。

C. Kibana (面子 - 颜值担当)

  • 角色:仪表盘 / 可视化界面。
  • 职责:把枯燥的数据变成图表
  • 场景
    • 你不会写复杂的查询代码?没关系,在 Kibana 搜索框里输入 status: 500,它自动帮你列出所有服务器错误。
    • 它可以画饼图(访问来源分布)、柱状图(流量趋势)、地图(攻击者IP分布)。

D. Beats (快递员 - 小弟)

  • 角色:轻量级采集器。
  • 职责:安装在每一台业务服务器上,只负责搬运日志,不负责处理。
  • 为什么需要它?:因为 Logstash 太重了,装在业务服务器上会抢资源。所以派 Beats(用 Go 写的,很轻)去采集,采集完发给 Logstash 或直接发给 ES。
    • Filebeat:搜集日志文件。
    • Metricbeat:搜集 CPU/内存指标。

2. 经典工作流:日志的一生

假设你有一个电商网站,用户访问了一次首页,报错了。

  1. 产生:Nginx 服务器生成一行日志:[Error] 500 Internal Server Error ... 写入到本地文件 /var/log/nginx/error.log
  2. 搬运 (Beats):安装在服务器上的 Filebeat 监听到文件变了,立马把这行新日志抓起来,发出去。
  3. 加工 (Logstash):Logstash 收到日志,把它切分成字段:
    • time: 10:00
    • level: Error
    • code: 500
    • 然后发给 ES。
  4. 存储 (Elasticsearch):ES 收到数据,建立索引,存入硬盘。
  5. 展示 (Kibana):运维人员上班了,打开 Kibana 网页。
    • 仪表盘上一个红灯亮了:“今日 500 错误飙升”。
    • 运维点击红灯,看到了具体的报错日志堆栈,发现是空指针异常。

3. ELK vs Prometheus + Grafana

这也是面试常考题。都是监控,有啥不一样?

特性 ELK Stack Prometheus + Grafana
侧重点 日志 (Logs) 指标 (Metrics)
数据样貌 文本。比如 “User login failed: uid 123” 数字。比如 “CPU Usage = 80%”
排查深度 。能告诉你为什么挂了(具体的报错信息、堆栈)。 。只能告诉你挂了,或者快挂了。
存储成本 极高。存全量文本,非常占硬盘。 。存的是压缩后的数字时间序列。
最佳实践 出了问题去 ELK 查细节 平时盯着 Grafana 看趋势报警

4. 总结

  • ELK 是给程序员看病的显微镜
  • 没有 ELK,查 Bug 靠猜和翻文件;有了 ELK,查 Bug 靠搜。
  • 它是目前业内日志中心的标配。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐