Skip to content

5)Prometheus

✅ 第 1 题:Prometheus 是什么?为什么需要它?

Q1:请简述 Prometheus 的设计理念、核心功能,它与传统监控工具(如 Zabbix)有何不同?

📝 参考答案:

Prometheus 是一个开源的、云原生的 监控系统 + 时序数据库(TSDB),用于收集、存储和查询各类系统指标。

📌 核心理念:

  • 拉模式(Pull):从 Exporter 拉取指标
  • 多维数据模型:支持通过 label 维度进行指标聚合
  • PromQL 查询语言:灵活强大
  • 内置时序数据库:无外部依赖

🎯 与 Zabbix、Nagios 相比:

  • Zabbix 是主动推送(Push)和轮询的混合模式,适合基础设施监控
  • Prometheus 更适合微服务、云原生架构(如 Kubernetes)

💡 类比思维:

如果 Zabbix 是“医生定时体检”,Prometheus 更像是“病人自助量体温+大数据分析系统”。

🛠️ 第 2 题:Prometheus 是如何采集和存储数据的?

Q2:Prometheus 的指标采集机制是怎样的?它的时序数据库是如何设计的?

📝 参考答案:

📦 采集机制:

  • Prometheus 定时以 HTTP 请求的方式 拉取 metrics 接口
  • 每个被监控的组件需要暴露 /metrics 接口(如通过 Exporter、或 SDK)

📊 数据结构(TSDB):

  • 核心单位是 Time Series(时间序列),由:metric name + label 集合 唯一标识
  • 数据以压缩块方式存储(chunk-based)

✨ 举例:

plaintext
http_requests_total{job="nginx", method="GET", code="200"}  1027  1691462400

🔍 第 3 题:PromQL 的查询能力强在哪?请举例说明。

Q3:请简要介绍 PromQL 的核心功能,并举一个查询示例及其含义。

📝 参考答案:

PromQL 是 Prometheus 的查询语言,支持:

  • 即时查询(Instant vector)
  • 范围查询(Range vector)
  • 聚合函数(rate, sum, avg 等)
  • Label 过滤与正则

📌 示例:

promql
rate(http_requests_total{job="nginx"}[1m])

👉 含义:统计 nginx 服务在过去 1 分钟内的 http_requests_total 每秒增长速率。

🎯 聚合示例:

promql
sum(rate(http_requests_total[5m])) by (method)

👉 含义:按 HTTP 方法分组,统计过去 5 分钟内的每秒请求速率。

📦 第 4 题:在实际项目中如何落地 Prometheus?

Q4:如果你接手一个微服务项目,你会如何用 Prometheus 实现监控?有哪些关键组件?

📝 参考答案:

📌 步骤一:架构部署

  • 部署 Prometheus Server
  • 结合 Grafana(用于可视化)
  • Node Exporter(主机监控)
  • 应用集成 SDK(如 Go 的 promhttp

📌 步骤二:配置文件(prometheus.yml)

  • 添加 job
yaml
scrape_configs:
  - job_name: "app"
    static_configs:
      - targets: ["localhost:8080"]

📌 步骤三:添加告警(Alertmanager)

  • 设置规则文件 alert.rules.yml
  • 当条件满足时发邮件、微信、钉钉告警

📌 步骤四:在 Grafana 创建仪表盘

🚦 第 5 题:Prometheus 在高可用和扩展性方面的挑战与解决方案?

Q5:请问 Prometheus 如何实现 HA?在大规模集群中如何扩展监控能力?

📝 参考答案:

🌟 挑战:

  • 单个 Prometheus 无法水平扩展
  • 没有全局视角(适用于单集群或单团队)

📦 解决方案:

  1. 双实例 HA

    • 两个 Prometheus 实例同时采集数据,但只用一个推送到 Alertmanager
    • 外部通过 Thanos 或 Cortex 合并数据
  2. 长远方案:Thanos / Cortex

    • Thanos:Prometheus 的水平扩展与存储层解决方案,支持多集群聚合、长期存储(如接入对象存储 S3)
    • Cortex:更大规模的 Prometheus 多租户系统,适合 SaaS 场景

🔚 总结思维导图:Prometheus 五维问题

维度内容
原理拉模式采集,Label + 时间序列模型
工具链Prometheus + Grafana + Alertmanager
查询语言PromQL 语法强大,支持聚合、过滤、速率计算
落地Exporter 部署、告警配置、仪表盘集成
扩展性Thanos/Cortex 实现 HA、横向扩展