【硬核】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 等渠道发送通知。

相关文章
  • Go架构方案详解:大厂面试必问的核心知识点
    Go架构方案详解:大厂面试必问的核心知识点

    既然你已经具备了扎实的网站开发与运维底层能力,那我们就跳过基础的语法科普,直接从架构设计、工程化规范和高并发实战的角度,为你梳理一套生产级的 Go 架构方案。在云原生和高并发场景下,Go 语言的优势在于其轻量级的协程模型和编译级效率。但“能用 ...

  • 手把手后端日志实战教程:手把手打造企业级项目
    手把手后端日志实战教程:手把手打造企业级项目

    既然涉及到底层排查,那我们就直接上服务器运维最硬核的手段。在 WordPress 开发中,后端日志主要分为 WordPress 自身的 PHP 调试日志 和 服务器环境日志 两个层面。以下是手把手的实操指南:第一步:开启 WordPress 核心调试日志这是排查插件冲突、主题代码报错最直...

  • Go部署教程入门到精通,这份后端学习路线请收好
    Go部署教程入门到精通,这份后端学习路线请收好

    Go语言因其编译后生成单一可执行文件的特性,部署起来非常轻量且高效。根据应用场景的不同,Go项目的部署通常分为“轻量级单机部署”、“Docker容器化部署”以及“Kubernetes集群部署”三种主流方案。以下为您梳理这三种方案的实操步骤与核心要点:一、 轻量级...

  • Go架构教程对比分析:帮你做出最优技术选型
    Go架构教程对比分析:帮你做出最优技术选型

    GraphQL 是由 Facebook 开发并于 2015 年开源的一种用于 API 的查询语言和运行时。它提供了一种更高效、灵活和强大的方式来处理 API 请求,允许客户端精准地请求所需的数据,从而有效减少数据传输并提高效率。一、 GraphQL 与 REST 的核心区别与传统的 REST API 相比,GraphQ...

  • 【推荐】Cron框架最佳实践,大厂都在用
    【推荐】Cron框架最佳实践,大厂都在用

    Cron 框架是一种用于定义和调度自动化任务(定时任务)的系统或工具。它的核心是基于 Cron 表达式(一种描述“任务在什么时间执行”的领域特定语言),由调度器(Scheduler)在匹配的时间点自动触发并执行相应的代码逻辑。Cron 框架广泛应用于后端开发中,典型的应用场景...

  • 为什么限流详解这么重要?深度剖析底层原理
    为什么限流详解这么重要?深度剖析底层原理

    限流(Rate Limiting)是分布式系统和API管理中至关重要的防御机制,其核心目的是控制客户端在特定时间内的请求数量,以保障系统稳定性、防止恶意攻击并确保资源公平分配。以下为您详细解析限流的核心算法、实现方案及最佳实践。一、 核心限流算法对比业界常用的...