Prometheus 完整技术栈分层详解

laoluo
laoluo
laoluo
管理员
145
文章
0
粉丝
教程评论9阅读模式

整体分为 采集层、Prometheus 核心层、存储扩展层、可视化层、告警层、业务埋点层、运维 / 分布式增强层,覆盖单机到大规模 K8s 集群全套组件。

一、指标采集层(数据来源)

负责把各类系统 / 中间件 / 业务转换成 Prometheus 标准 metrics

1. Exporter 生态(最主流)

  • 服务器硬件 node-exporter:Linux 服务器 CPU / 内存 / 磁盘 / 网卡 / 负载 windows-exporter:Windows 机器指标 ipmi-exporter:服务器硬件温度、风扇、电源 smart-exporter:硬盘健康状态
  • 容器 & K8s cAdvisor:容器 CPU、内存、磁盘 IO、网络 kube-state-metrics:K8s 资源对象(Pod/Deployment/Service/Node) kubelet:内置 metrics 接口,无需额外 exporter
  • 中间件 / 数据库 mysqld-exporter、postgres-exporter、redis-exporter kafka-exporter、elasticsearch-exporter、rabbitmq-exporter nginx-exporter、apache-exporter、traefik-exporter mongodb-exporter、influxdb-exporter
  • 云厂商 / 硬件 blackbox-exporter:拨测 HTTP/TCP/ICMP/DNS(网站存活、端口连通性) snmp-exporter:交换机、路由器、防火墙 SNMP 监控 aws/azure/gcp-exporter:云资源监控

2. PushGateway

适用短时任务:CI 流水线、定时批处理、一次性脚本 短生命周期程序主动推送指标,Prometheus 再拉取网关数据。

3. 客户端 SDK(业务埋点)

业务代码原生暴露指标,四种指标类型(Counter/Gauge/Histogram/Summary) 主流语言官方 SDK: Go、Java (Prometheus Java Client)、Python、NodeJS、C#、Ruby、PHP

4. 服务发现 SD(自动发现 Target)

内置多种服务发现,不用手动填 IP: static_config(静态)、file_sd(文件)、kubernetes_sd、consul_sd、dns_sd、ec2_sd

Prometheus 完整技术栈分层详解

二、Prometheus 核心组件(基础栈)

  1. Prometheus Server 核心:抓取器 Retrieval、TSDB 本地时序存储、PromQL 引擎、Rule 管理器、HTTP API 配置文件:prometheus.yml(抓取、规则、告警、远程读写)
  2. AlertManager 独立告警处理组件:告警分组、去重、抑制、静默、多渠道路由 配置:alertmanager.yml
  3. Promtool 官方工具:校验配置、规则语法、数据调试、导入导出时序数据

三、存储扩展栈(解决单机存储瓶颈)

原生 TSDB 只适合短期热数据(默认 15 天),大规模 / 长期存储用以下方案:

1. Thanos(CNCF,最通用)

  • Sidecar:同步 Prometheus 本地块到对象存储 (S3/MinIO/COS)
  • Store Gateway:查询远端归档历史数据
  • Query:全局统一查询,聚合多台 Prometheus 数据
  • Compactor:压缩、合并旧数据块,降存储成本 适用:多集群、长期数据归档、统一全局大盘

2. VictoriaMetrics(高性能替代)

兼容 PromQL,API 完全对齐 Prometheus,单实例承载千万级指标,压缩率更高 细分组件:vmagent(抓取替代 Prometheus)、vmsingle、vmcluster 集群、vmalert(内置告警,无需 AlertManager)

3. M3DB / Cortex

Cortex:多租户 Prometheus 集群,适合公有云、多业务租户隔离 M3DB:Uber 开源分布式时序数据库,低延迟海量写入

4. Remote 远端存储通用对接

Prometheus 原生支持 remote_write/remote_read,可对接:InfluxDB、TimescaleDB、ClickHouse

四、可视化技术栈

1. Grafana(生产标准)

Prometheus 标配可视化面板 能力:多数据源、模板变量、告警、图表、告警通知、报表、权限管理

2. 备选轻量可视化

  • Prometheus Web UI:自带简易查询界面,仅调试使用
  • Grafana Loki:搭配做指标 + 日志联动观测
  • PromLens:PromQL 可视化调试工具

五、告警通知渠道栈(AlertManager 接收器)

AlertManager 统一分发告警,支持:

  • 企业办公:钉钉、企业微信、飞书、Slack
  • 传统通知:Email、短信、PagerDuty、VictorOps
  • Webhook:自定义告警推送(对接自研运维平台)

六、观测配套栈(可观测三位一体:指标 + 日志 + 链路)

Prometheus 只负责 Metrics,完整可观测体系搭配:

  1. 日志采集 Loki(Grafana 全家桶,轻量化日志库) + Promtail(日志采集器) ELK/EFK:Elasticsearch、Fluentd、Logstash
  2. 链路追踪 Tracing Jaeger、Zipkin、SkyWalking、OpenTelemetry
  3. 统一采集标准 OpenTelemetry 新一代埋点标准,统一生成 metrics/logs/traces,可直接输出给 Prometheus,替代传统 SDK

七、部署 & 运维技术栈

1. 部署方式

  • 二进制:虚拟机、物理机快速部署
  • Docker Compose:测试环境一键启动全套栈
  • Kubernetes + Helm:生产标准,官方 helm-chart
  • Operator:Prometheus Operator(K8s 专属,CRD 管理 Prometheus/AlertManager/ 规则)

2. 容器编排

Docker、Kubernetes、Helm、Prometheus Operator Prometheus Operator 核心 CRD: Prometheus、Alertmanager、ServiceMonitor、PodMonitor、PrometheusRule

3. 存储持久化

本地磁盘、MinIO / 阿里云 COS / 腾讯 COS/S3(Thanos 归档)、PVC (K8s)

4. 监控运维配套

  • blackbox-exporter:自身监控可用性拨测
  • prometheus-mixin:官方标准化 Grafana 面板 + 告警规则模板
  • Alertmanager WebUI:静默、告警查看

八、完整两套典型技术栈组合

方案 1:中小型虚拟机 / 单机(轻量基础栈)

node-exporter + prometheus + alertmanager + grafana + blackbox-exporter 适合几十台服务器,短期存储,简单业务监控

方案 2:云原生 K8s 大规模企业完整栈

OpenTelemetry 埋点 → kube-state-metrics + cAdvisor + 各类 Exporter → Prometheus Operator (Prometheus+AlertManager) → Thanos (对象存储长期归档) → Grafana(指标大盘) → Loki+Promtail(日志) → Jaeger(链路追踪) → 飞书 / 钉钉告警渠道

九、栈对比选型总结

  1. 只想简单监控服务器:基础栈 Prometheus + node-exporter + Grafana
  2. K8s 集群:必用 Prometheus Operator + kube-state-metrics
  3. 多集群、保存数月历史数据:叠加 Thanos
  4. 超高并发百万指标、节约资源:替换为 VictoriaMetrics
  5. 完整可观测(指标 + 日志 + 链路):OpenTelemetry + Prometheus + Loki + Jaeger

 
laoluo
  • 本文由 laoluo 发表于2026年6月27日 23:02:09
  • 转载请务必保留本文链接:https://www.mydata-api.com/tutorials/312.html
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证