【硬核】Prometheus怎么用,从原理到落地全解析

2026-08-05 来源: 点击量

Prometheus 是一款开源的系统监控和告警工具包,在云原生时代被广泛使用。它通过拉取(Pull)或推送(Push)的方式收集指标数据,并以时间序列的形式进行存储和查询。

【硬核】Prometheus怎么用,从原理到落地全解析

以下是使用 Prometheus 的标准化实操指南:

一、 核心组件认知

在开始之前,需要了解 Prometheus 生态的几个核心组件:

Prometheus Server:核心服务,负责数据的采集、存储与查询。

Exporters:用于将第三方系统(如 Node.js、MySQL)的指标转换为 Prometheus 兼容格式的代理服务。

Alertmanager:负责接收告警规则触发后的通知,进行去重、分组和路由。

Pushgateway:用于短生命周期任务(如 CronJob)的指标中转站。

二、 快速部署与配置

1. 下载并启动

从 Prometheus 官方下载对应平台的二进制包并解压。在启动前,需要创建一个基础的配置文件 prometheus.yml:

yaml

编辑

1global:

2 scrape_interval: 15s # 默认每15秒抓取一次目标

3scrape_configs:

4 - job_name: 'prometheus' # 监控Prometheus自身

5 static_configs:

6 - targets: ['localhost:9090']

配置完成后,通过命令 ./prometheus --config.file=prometheus.yml 启动服务。

2. 访问控制台

启动后,在浏览器中访问 http://localhost:9090,即可进入 Prometheus 的 Web 控制台,查看监控目标和执行查询。

三、 数据采集实战

1. 监控主机(Node Exporter)

若要监控服务器的 CPU、内存、磁盘等指标,需部署 Node Exporter。启动后,在 prometheus.yml 中添加抓取配置:

yaml

编辑

1- job_name: 'node'

2 static_configs:

3 - targets: ['localhost:9100'] # Node Exporter 默认端口

2. 监控应用程序

对于自定义应用,可使用官方提供的客户端库(如 Go、Java、Python)。在应用中暴露一个 /metrics 的 HTTP 端点,Prometheus 会定期拉取该端点的数据。例如,在 Go 语言中可以使用 promhttp.Handler() 来快速暴露指标。

3. 外部黑盒探测(Blackbox Exporter)

若需从外部视角探测 HTTP 状态码、DNS 解析或 TCP 端口连通性,可部署 Blackbox Exporter,它无需侵入应用内部即可实现端到端的可用性监控。

四、 数据查询与可视化

1. 使用 PromQL 查询

Prometheus 提供了强大的查询语言 PromQL。在 Web 控制台的“Graph”标签页中,你可以输入表达式进行查询。例如:

查询抓取延迟的99百分位数:prometheus_target_interval_length_seconds{quantile="0.99"}

计算每秒创建块的速率:rate(prometheus_tsdb_head_chunks_created_total[1m])

2. 结合 Grafana 可视化

虽然 Prometheus 自带了基础的图表界面,但在生产环境中,通常会将其作为数据源接入 Grafana,以构建更丰富、更美观的监控大屏和告警面板。

五、 告警配置

当指标达到特定阈值时,Prometheus 会触发告警。你需要在 prometheus.yml 中配置 Alertmanager 的地址,并编写告警规则(Alerting Rules)。Alertmanager 收到告警后,会通过邮件、Slack 等渠道发送通知。

相关文章
  • RBAC推荐入门到精通,这份后端学习路线请收好
    RBAC推荐入门到精通,这份后端学习路线请收好

    RBAC 从入门到精通:后端权限学习路线RBAC 的核心不是“多写几张表”,而是把用户、角色、权限解耦:用户不直接绑定权限,而是通过角色获得权限。这样在人员变动、岗位调整、权限回收时,系统不会迅速失控。1. 先搞懂 RBAC 在解决什么问题没有 RBAC 时,用户和...

  • RocketMQ总结详解:大厂面试必问的核心知识点
    RocketMQ总结详解:大厂面试必问的核心知识点

    RocketMQ 面试核心知识点总结RocketMQ 的核心不是背 API,而是理解它如何在高吞吐、高可靠、顺序性、事务一致性之间做取舍。下面按面试高频链路整理。1. 架构与四大组件NameServer:轻量路由中心,无状态、节点间不通信,Broker 定时上报路由,Producer/Consumer 从 NameServer...

  • Beego精选入门到精通,这份后端学习路线请收好
    Beego精选入门到精通,这份后端学习路线请收好

    Beego 精选入门到精通,这份后端学习路线请收好Beego 是国内 Go 生态成熟全栈 MVC 框架,适合快速开发 Web 门户、CMS、管理后台、RESTful API,内置 ORM、缓存、日志、配置、监控、定时任务,搭配 bee 脚手架,上手快、开箱模块齐全,是 Go Web 入门、企业内部系统开发的优...

  • Python缓存方案常见问题及解决方案大全
    Python缓存方案常见问题及解决方案大全

    Python 缓存方案常见问题及解决方案大全缓存不是“加一层就变快”,而是命中率、一致性、内存、并发、过期策略之间的平衡。下面按问题类型整理,适合排查和面试复盘。一、工具选错:lru_cache 并不适合所有场景问题functools.lru_cache 只能缓存函数返回值,参数必...

  • 一文搞懂JWT手册,别再停留在会用层面
    一文搞懂JWT手册,别再停留在会用层面

    JWT 最常见的误区,是把它当成“加密过的安全令牌”。实际上 JWT 只是自包含、可验签、URL 安全的声明载体;它的 Payload 只是 Base64URL 编码,任何人都能解码,所以安全重点不在“藏数据”,而在“签名、过期、存储、吊销和算法控制”。 一、JWT 的三段结构JWT 由三部...

  • Spring Cloud常见问题及解决方案大全
    Spring Cloud常见问题及解决方案大全

    Spring Cloud 常见问题及解决方案大全Spring Cloud 微服务项目里,问题通常集中在六类:服务注册发现、服务调用、配置中心、网关路由、熔断限流、分布式事务与链路追踪。下面按故障场景整理,方便排查。 一、服务注册与发现失败常见现象Nacos / Eureka 控制台看不到服...