监控基石 - Prometheus 核心概念入门
你好!在之前的 SRE 基础系列中,我们强调了监控与告警对于维护系统可靠性的极端重要性。理论学习之后,我们自然要问:在实践中,我们用什么工具来实现这些监控和告警呢?
在云原生(尤其是在 Kubernetes 环境)的监控领域,Prometheus 无疑是目前最流行、最核心的开源监控和告警解决方案。它由 SoundCloud 公司于 2012 年启动,后来成为继 Kubernetes 之后第二个加入云原生计算基金会 (CNCF) 的项目,足见其重要地位。
这篇博客,我们将一起揭开 Prometheus 的面纱,理解它的核心设计理念和基本概念,为后续学习 PromQL 查询、Exporter 配置和 Grafana 可视化打下坚实的基础。
Prometheus 是什么?
Prometheus 的核心是一个时间序列数据库 (Time Series Database - TSDB),并自带了强大的数据查询语言 (PromQL) 和告警处理能力 (Alerting)。它的设计哲学强调可靠性和简洁性,非常适合动态的、面向微服务的云环境。
核心架构与 Pull 模型
理解 Prometheus 的工作方式,首先要理解它的架构和独特的数据采集模型。
-
Pull (拉取) vs. Push (推送):
- Prometheus 主要采用 Pull 模型。这意味着 Prometheus Server 会主动、定期地去访问(称为 “scrape” 或 “抓取”)已配置的监控目标(通常是一个暴露了 metrics 的 HTTP 端点),并将获取到的指标数据存储起来。
- 这与一些传统的 Push 模型(如 Graphite 或 OpenTSDB 的部分场景)不同,后者是监控目标主动将数据推送到监控系统。
- Pull 模型的优势:
- 中心化控制: 抓取目标和频率由 Prometheus Server 集中配置和管理。
- 目标状态感知: 抓取本身就能判断目标是否存活(如果抓取失败)。
- 易于发现: 结合服务发现机制,更容易自动找到和管理动态环境中的监控目标。
- Pull 模型的劣势:
- 网络可达性: Prometheus Server 必须能够通过网络访问到所有目标。
- 短暂任务: 对于生命周期很短