服务商概述

Prometheus 最初由 SoundCloud 于 2012 年开发,2016 年捐赠给 CNCF,是继 Kubernetes 之后第二个 CNCF 毕业项目,也是云原生监控领域的事实标准。作为开源监控与告警系统,Prometheus 采用 Pull 模型主动从目标采集指标数据,存储在本地时序数据库中,并通过 Labels 实现多维数据模型。

Prometheus 的设计围绕"可靠性"与"简洁性":每个 Server 独立运行,不依赖分布式存储或外部服务发现;PromQL 查询语言提供灵活的数据聚合与分析能力。Prometheus 被全球数千家企业用于生产环境,是 Kubernetes 生态中部署率最高的监控系统。

核心优势

  • 云原生监控事实标准:CNCF 毕业项目(2016),与 Kubernetes 生态深度集成,kubelet、etcd 等核心组件原生暴露 Prometheus 格式指标,详见 Kubernetes 部署指南。
  • Pull 模型简洁可靠:主动拉取指标,采集频率可控,1 个实例可处理数百万活跃时序,单机即可承载中小规模集群。
  • PromQL 查询强大:支持 sum/avg/quantile 聚合、predict_linear 预测与子查询,1 条表达式即可完成跨指标关联分析。
  • 100+ Exporter 生态:覆盖 node_exporter、MySQL、PostgreSQL、Redis、Nginx、HAProxy 等主流组件,自定义指标可用 Go/Java/Python 客户端暴露。
  • 免费开源零许可费:Apache 2.0 许可,搭配 Grafana 可构建完整的开源监控栈。

产品生态

Pull 模型与服务发现

Prometheus 采用 Pull 方式主动抓取目标指标,相比 Push 更容易控制频率并避免数据洪峰。服务发现支持 Kubernetes、Consul、DNS、EC2 等多种机制,动态跟踪目标变化;短暂任务可通过 Pushgateway 桥接。

PromQL 查询语言

PromQL 支持即时查询与范围查询,常用函数包括 rate()、increase()、histogram_quantile() 以及 by/without 分组聚合。例如用 1 条表达式计算每分钟错误率:rate(http_requests_total{status=~"5.."}[1m]) / rate(http_requests_total[1m]) * 100

Alertmanager

告警由独立组件 Alertmanager 处理,负责去重、分组、静默与路由,支持多级抑制(Inhibition)。通知渠道覆盖邮件、Slack、PagerDuty、Webhook 等,详见 监控告警实践。

与 Grafana 集成

Prometheus 自带表达式浏览器用于调试,生产环境通常搭配 Grafana 实现仪表盘可视化,Grafana 原生支持 Prometheus 数据源。

不足之处

  • 高可用需额外组件:单机架构存在单点故障与存储上限,生产环境通常需部署 Thanos 或 Cortex 实现长期存储与高可用,增加架构复杂度。
  • Pull 模型跨网络不友好:要求 Prometheus Server 能直接访问目标端点,跨 VPC、防火墙或 SaaS 场景需 Pushgateway 或 Agent 桥接。
  • 原生可视化有限:表达式浏览器不支持持久化仪表盘,生产级可视化依赖 Grafana,多一层集成与版本管理。
  • 高基数 Label 风险:将 UserID 等作为 Label 会急剧膨胀时序数量,导致查询变慢与存储暴涨,需规范指标设计。

适用场景

  • Kubernetes 容器平台监控(★★★★★):与 K8s 原生集成,是容器平台监控的首选方案。
  • 微服务架构监控(★★★★★):Pull 模型自动发现动态实例,Client Library 便于埋点,适合微服务与 Service Mesh。
  • 传统基础设施监控(★★★):node_exporter 可覆盖基础服务器监控,但传统 IT 场景 Zabbix 生态更完善。
  • 长期历史趋势分析(★★★):单机存储有限,需部署 Thanos 或 Cortex 实现长期保留。

价格参考

组件 说明 成本
Prometheus Server 开源,Apache 2.0 免费
Alertmanager 开源告警组件 免费
官方 Exporters 100+ 官方 Exporter 免费
Thanos / Cortex 长期存储与高可用方案 免费(开源)
托管服务 云厂商托管 Prometheus 按用量计费

注:Prometheus 及官方组件均免费开源,生产环境需额外投入基础设施与运维人力。

常见问题

  • Prometheus 与传统网络设备监控适合吗? 可以,但需 SNMP Exporter 转换指标;批量监控路由器/交换机时 Zabbix 的 SNMP 原生支持更完善,选型见 云监控服务对比。
  • Prometheus 数据怎么长期保存? 单机默认保留 15 天(可配置)。长期保存需通过 Remote Write/Read 对接 Thanos、Cortex 或云厂商托管方案,体系见 监控告警体系。
  • 告警通知支持哪些渠道? Alertmanager 原生支持邮件、Slack、PagerDuty、Webhook 等,Webhook 可对接任意外部告警平台,规则见 Prometheus 告警规则设计。
  • Prometheus 与 Zabbix 怎么选? Prometheus 适合云原生与动态环境,Zabbix 适合传统 IT 基础设施,两者在指标模型与采集方式上差异明显,实践见 监控告警指南。
  • Prometheus Operator 是什么? 通过 CRD 简化 Prometheus、Alertmanager 与 ServiceMonitor 的部署配置,是 K8s 上声明式管理 Prometheus 的标准方案,见 Kubernetes 部署指南。