Prometheus + Grafana + Alertmanager和ELK 栈(Elasticsearch + Logstash + Kibana)

Prometheus 看指标(性能/状态) ,ELK 看日志(报错/详情)

两者完全不冲突,各司其职,缺一不可

Alertmanager 只是 Prometheus 的「告警配件」,替代不了 ELK

一、先分清:两个体系管的东西完全不一样

1. Prometheus + Grafana + Alertmanager

只负责:监控指标、性能、健康度、告警

你文中说的:

  • CPU、内存、磁盘
  • JVM 堆内存、GC、线程
  • HTTP 成功率、QPS、接口延迟 P95/P99
  • 服务器/容器负载

👉 特点:

  • 看宏观数据、趋势、性能指标
  • 适合:看「服务慢不慢、挂没挂、资源够不够」
  • 数据精简、定时采集、适合画图、告警

❌ 致命缺点:不存详细日志

报错了,它只会告诉你:接口报错率飙升

但不知道为啥错、报错堆栈、入参、SQL、业务上下文

2. ELK 栈(Elasticsearch + Logstash + Kibana)

只负责:全量日志收集、存储、检索、排查

收集:

  • 应用控制台日志
  • 错误堆栈
  • 接口入参/出参
  • SQL 日志
  • 异常信息
  • 微服务分布式链路日志

👉 特点:

  • 存海量原始文本日志
  • 关键词搜索、过滤、排查问题
  • 适合:线上报错、查原因、定位代码BUG

❌ 缺点:

不做性能指标监控,不看CPU/JVM/延迟

二、线上排障完整流程(一看就懂)

  1. Prometheus 告警
    短信/钉钉报警:

订单服务 P99 延迟过高、错误率暴涨

  1. 你打开 Grafana

    确认:CPU正常、JVM频繁GC、接口大量500

    ✅ 只知道「出问题了、哪里异常」

  2. 打开 Kibana(ELK)

    搜索:500、异常类名、用户ID、请求ID

    查到:

  • 具体报错堆栈
  • 哪行代码炸了
  • 当时请求参数
  • 数据库报错SQL

✅ 真正定位根因

三、为什么不能只用 Prometheus?

举个例子:

Prometheus 只能告诉你:

接口错误率 30%

但不知道:

  • 是空指针?
  • 数据库超时?
  • 参数非法?
  • 第三方接口挂了?

没有 ELK,线上报错只能瞎猜。

四、ELK 是标配吗?

1. 大厂/中大型项目 / 微服务架构

✅ 必装 ELK(或替代方案)

微服务实例几十上百个,日志分散在无数容器里,

不集中收集,根本没法查日志

2. 小项目/单体应用/个人项目

❌ 可以不用

直接看容器日志、服务器日志就行,没必要太重。

3. ELK 平替(现在很多公司用)

成本更低、轻量:

EFK (Filebeat + Elasticsearch + Kibana)

Loki(搭配 Grafana,轻量日志方案)

  1. Prometheus+Grafana:
    盯着服务性能、资源、接口快慢、健康状态,出问题及时告警
  2. ELK:
    把所有微服务日志全部汇总起来,方便查报错、排BUG、审计
组件 核心数据 用途 能不能互相替代
Prometheus 指标(数值) 性能监控、告警、看板 不能
ELK 日志(文本) 问题排查、错误溯源 不能
Alertmanager 告警分发 只是Prometheus的通知工具 不算独立体系

ELK三个组件分别干啥(大白话)

1. L 👉 Logstash(日志搬运+清洗工)

入口、加工、过滤

  • 从各个微服务/容器收集原始日志
  • 过滤无用日志、脱敏(手机号/密码)
  • 格式化、拆分字段、打标签(服务名、环境、IP)
  • 清洗完,统一发给 Elasticsearch

类比:快递分拣中心,拆开包裹、分类、贴标签

2. E 👉 Elasticsearch(日志仓库+搜索引擎)

存日志、存海量数据、快速检索

  • 海量日志持久化存储
  • 支持按关键词、报错、用户ID、链路ID快速搜索
  • 分布式,能无限加机器扛日志量

类比:超大智能仓库,存所有快递,搜东西秒查

3. K 👉 Kibana(可视化页面)

看图、查日志、操作ES

  • 网页界面,查询日志、筛选报错
  • 日志图表、统计、大屏
  • 管理 ES 索引、权限

类比:仓库前台查询系统,你在上面查快递、看数据

完整日志流转链路

应用/容器 → Filebeat(轻量采集) → Logstash(清洗) → Elasticsearch(存储检索) → Kibana(查看)

现在企业基本不用 Logstash 做采集,改用更轻的 Filebeat

所以新版常叫 EFK,更轻量。

相关推荐
蓝胖的四次元口袋6 小时前
Prometheus+Grafana知识梳理(1)
grafana·prometheus
晨陌y7 小时前
CentOS 7 部署 mysqld_exporter:MySQL 指标采集、Prometheus 告警与远程监控
mysql·centos·prometheus
倔强的小石头_1 天前
Ubuntu部署Prometheus与Alertmanager:systemd配置、告警对接及cpolar远程访问
数据库·ubuntu·prometheus
打工仔折腾 AI1 天前
Prometheus接入Pushgateway实战:二进制与Docker部署、指标推送与远程写入
后端·python·docker·容器·性能优化·prometheus·ai agent 实战
SelectDB技术团队1 天前
Agent Trace 数据底座建设:宽表建模、全文检索与成本聚合的配置与验证步骤
大数据·python·clickhouse·elk·elasticsearch·全文检索·复杂查询
哈__1 天前
日志散在多台服务器怎么查?用 Promtail + Loki + Grafana 搭一套集中检索平台
运维·服务器·grafana
谢亮_vipxieliang2 天前
容器日志收集与管理:从 stdout 规范到 ELK/Loki 落地
运维·网络·人工智能·elk·docker·容器
Elastic 中国社区官方博客2 天前
两个依赖和一个配置块:通过 Prometheus 远程写入将 Spring Boot 指标发送到 Elasticsearch
大数据·数据库·spring boot·elasticsearch·搜索引擎·全文检索·prometheus
SelectDB技术团队2 天前
ELK 太占磁盘、ES 总报写入拒绝:从归因到可执行的优化清单
大数据·clickhouse·elk·elasticsearch·全文检索·复杂查询·实时更新
User_芊芊君子3 天前
Prometheus接入Pushgateway实战:二进制与Docker部署、指标推送及远程上报
docker·容器·prometheus