【Prometheus 】通过 Pushgateway 上报指标数据

Prometheus 是目前最流行的开源监控系统之一,其拉取(pull)模型非常适合服务发现和静态目标的监控。然而,在某些场景下,例如短生命周期任务、批处理作业或无法暴露 HTTP 接口的服务,传统的拉取方式并不适用。此时,Pushgateway 就派上了用场。

本文将详细介绍 Prometheus Pushgateway 的标准上报协议、使用场景、最佳实践以及常见误区,帮助你构建一个稳定、可维护的监控上报机制。


一、Pushgateway 简介

Prometheus Pushgateway 是一个中间组件,允许用户以“推送”的方式将监控指标发送给它。Pushgateway 会将这些指标缓存,并供 Prometheus Server 拉取。

主要用途:

  • 支持短时任务(如 cronjob)上报指标
  • 为不支持 HTTP 暴露端点的服务提供指标中转
  • 避免频繁重启导致指标丢失(如 CI/CD 作业)

二、Pushgateway 上报协议详解

Pushgateway 提供了一个简单的 HTTP 接口用于接收指标推送,其核心接口如下:

POST /metrics/job/<JOB_NAME>{/group_label/name}

1. URL 参数说明:

参数必填描述
jobPrometheus 中定义的 job 名称,是必须参数
group_label.name可选的一组标签,用于区分不同实例或分组

示例:

POST http://pushgateway.example.com:9091/metrics/job/my-job/instance/my-instance

2. 请求体格式(PLAIN TEXT)

请求体内容为 Prometheus 文本格式的指标输出,即类似于如下形式:

# HELP http_requests_total The total number of HTTP requests.
# TYPE http_requests_total counter
http_requests_total{method="post",code="200"} 1027

注意:所有指标都应包含 HELP 和 TYPE 注释行,虽然不是强制要求,但这是推荐的最佳实践。


三、客户端库推荐

大多数语言都有对应的 Prometheus 客户端库,可以直接生成符合规范的文本格式并推送到 Pushgateway。

以下是部分主流语言的客户端库推荐:

语言客户端库特性
Goprometheus/client_golang官方支持 Pusher 功能
Pythonprometheus_client支持 Pushgateway 推送
Javasimpleclient_pushgatewaySpring Boot 集成友好
Node.jsprom-client轻量级,易集成

四、典型上报流程示例(Python)

以下是一个使用 Python 向 Pushgateway 上报计数器指标的完整示例:

from prometheus_client import CollectorRegistry, Gauge, push_to_gatewayregistry = CollectorRegistry()
g = Gauge('some_metric', 'Description of metric', registry=registry)
g.set(10)push_to_gateway('http://pushgateway:9091', job='my-python-job', registry=registry)

该代码会向 Pushgateway 的 /metrics/job/my-python-job 路径推送一个名为 some_metric 的指标值。


五、Prometheus 配置示例

在 Prometheus 的配置文件中添加 Pushgateway 的 scrape 目标即可:

scrape_configs:- job_name: 'pushgateway'static_configs:- targets: ['pushgateway.example.com:9091']honor_labels: true  # 保留客户端设置的标签

⚠️ 注意:建议设置 honor_labels: true,否则 Prometheus 会覆盖客户端上报的标签。


六、最佳实践与注意事项

✅ 最佳实践:

  1. 合理设计 job 和 instance 标签
    使用有意义的 job 名称和 instance 标签,便于识别数据来源。

  2. 避免重复推送相同指标
    多次推送相同 job + instance 的指标会导致旧数据被覆盖,除非你明确希望如此。

  3. 使用 TTL 清理过期数据
    可通过脚本定期清理长时间未更新的指标(例如使用 DELETE /metrics/job/<job>)。

  4. 配合短时任务使用
    在 Kubernetes CronJob 或 AWS Lambda 等场景中,推送完成后清理指标是一种好习惯。

  5. 不要滥用 Pushgateway
    对于长期运行的服务,尽量使用 Pull 模式暴露 /metrics 接口。

❌ 常见误区:

  1. 把 Pushgateway 当作远程存储
    Pushgateway 不是远程写入后端,不具备持久化能力,也不适合大规模指标聚合。

  2. 所有服务都使用 Pushgateway 上报
    这会导致数据管理混乱,违背 Prometheus 的设计理念。

  3. 忽视数据时效性问题
    如果没有清理机制,历史数据可能误导监控结果。


七、扩展功能与高级用法

1. 删除特定指标

可以通过 DELETE 方法删除某个 job 的指标:

DELETE /metrics/job/my-job/instance/my-instance

2. 查询当前指标状态

访问 Pushgateway 的 Web 页面或直接访问:

GET /metrics

可以查看当前缓存的所有指标。


八、总结

Pushgateway 是 Prometheus 生态中一个非常有用的补充工具,尤其适用于短时任务和无法暴露 HTTP 接口的场景。了解其标准上报协议、正确使用方法及最佳实践,能够帮助我们更高效地构建监控体系。

场景推荐方式
长时服务暴露 /metrics 接口,由 Prometheus 拉取
短时任务使用 Pushgateway 推送指标
批处理作业推送后清理数据
无暴露能力的服务通过 Sidecar 或脚本推送至 Pushgateway

九、参考资料

  • Pushgateway 官方文档
  • Prometheus 数据模型
  • Client Libraries 列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87471.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器 - - QPS与TPS介绍

1、QPS&#xff08;Queries Per Second 每秒查询数&#xff09; 定义&#xff1a;常用于表示每秒的请求次数&#xff0c;衡量接口请求、数据库查询等动作的吞吐量&#xff08;单位时间内处理的数据量&#xff09; 计算&#xff1a;总请求数/请求时间&#xff0c;如&#xff1…

Cot2:思维链提示激发大型语言模型的推理能力

摘要 我们探讨了生成思维链——一系列中间推理步骤——如何显著提升大型语言模型执行复杂推理的能力。特别地&#xff0c;我们展示了在足够大的语言模型中&#xff0c;这种推理能力如何通过一种简单的方法——思维链提示&#xff08;chain-of-thought prompting&#xff09;自…

go交易数据后端

地址 https://gitee.com/EEPPEE_admin/go-stock-line-trading-datahttps://github.com/jerryshell/midas 需求 为了替代rust后端爬虫端: 爬取东方财富数据到index-data目录server端: 项目主要内容 todo 替代https://github.com/jerryshell/midas的前端量化概念性理解扩展: 存储…

灵巧手概览

第一章 灵巧手的技术演进与核心价值 1.1 技术演进的五个阶段 仿生学启蒙阶段&#xff08;1960-1980&#xff09; 1968年斯坦福大学首台3自由度机械夹爪标志机器人操作技术开端&#xff0c;1973年MIT提出"仿生手"概念&#xff0c;但受限于材料和控制技术&#xff0c;…

在设计提示词(Prompt)时,关于信息位置的安排z怎么 结合模型特性和任务目标

在设计提示词(Prompt)时,关于信息位置的安排z怎么 结合模型特性和任务目标 在设计提示词(Prompt)时,关于信息位置的安排确实需要结合模型特性和任务目标。从自注意力机制的原理及应用场景来看,关键信息的位置选择需遵循以下启示,并结合具体场景灵活调整: 一、核心启示…

七、性能优化

目录 1. 如何检测Flutter应用的性能问题&#xff1f;2. 什么是重绘边界&#xff08;Repaint Boundary&#xff09;&#xff1f;3. 如何避免不必要的重建&#xff1f;4. const 构造函数在优化中起什么作用&#xff1f;5. 如何优化长列表的性能&#xff1f;6. 如何减少应用启动时…

Webpack优化详解

Webpack 5提供了一系列工具和功能,可以在本地开发和线上构建过程中进行优化,以提高开发效率和构建性能。 1. 本地开发优化 1.1. 开启模块热替换(HMR) 模块热替换可以在不刷新整个页面的情况下更新模块,提高开发效率。 const webpack = require(webpack);module.export…

latency 对功耗的影响

文章目录 1、Connection Interval(连接间隔) vs. Latency(从机延迟)2、为什么不能完全依赖 Connection Interval?3、什么时候可以不用 Latency?4、如何正确配置?5、结论调节连接间隔(Connection Interval)确实可以直接影响通信频率和功耗,但 Latency(从机延迟)仍然…

10分钟搭建 PHP 开发环境教程

下载、安装 Xserver 下载 php 过程中如果提示需要安装 vc 运行环境&#xff0c;按照引导下载安装即可 安装 nginx 安装 Mysql 支持多个版本同时安装 下载 php 过程中如果提示需要安装 vc 运行环境&#xff0c;按照引导下载安装即可mysql 默认用户名为 root&#xff0c;默认密…

设计模式(六)

备忘录模式&#xff08;Memento Pattern&#xff09;详解 一、核心概念 备忘录模式允许在不破坏封装性的前提下&#xff0c;捕获并保存对象的内部状态&#xff0c;以便后续恢复。该模式通过三个角色实现&#xff1a; 原发器&#xff08;Originator&#xff09;&#xff1a;需…

迪杰斯特拉算法之解决单源最短路径问题

迪杰斯特拉算法 迪杰斯特拉(Dijkstra)算法是典型**最短路径算法**&#xff0c;用于计算一个结点到其它结点的最短路径。它的主要特点是以起始点为中心向外扩展(利用广度优先搜索思想)&#xff0c;直到扩展到终点。迪杰斯特拉(Dijkstra)算法最佳应用-最短路径 战争时期&#xf…

风平浪静、无事发生

2025年7月4日&#xff0c;16~25℃&#xff0c;阴雨紧急不紧急重要1.备考D1.物理备课不重要遇见&#xff1a;风平浪静、无事发生&#xff01;感受或反思&#xff1a;体检的结果收到了&#xff0c;医生建议多吃绿蔬多喝水&#xff01;多运动&#xff0c;少和喝饮料........

QtitanRibbon打造现代办公软件新体验:提升效率的专业界面解决方案

在现代办公环境中&#xff0c;无论是日常公文处理、文档编辑、任务协同还是数据分析&#xff0c;桌面办公软件仍扮演着不可替代的角色。然而&#xff0c;许多传统系统依旧使用菜单繁杂、图标混乱、交互老旧的界面&#xff0c;用户操作效率低、上手慢、满意度差。 QtitanRibbon…

MSPM0G3507学习笔记(一) 重置版:适配逐飞库的ti板环境配置

由于使用逐飞库&#xff0c;很多东西其实都不用配置了&#xff0c;也不需要自己移植空工程了&#xff0c;于是写一个重置版的环境配置教程。 1.下载芯片支持包 MSPM0G3507芯片支持CCS、IAR、KEIL等IDE&#xff0c;选择KEIL作为开发工具&#xff0c;首先安装芯片支持包。 前往…

如何查看自己电脑的显卡信息?

右键单击底部导航栏选择“任务管理器” 点开之后 选择左侧的性能一栏 查看你的显卡的信息

使用Go语言实现智能EXE文件重命名工具

文章目录 使用Go语言实现智能EXE文件重命名工具 &#x1f6e0;️引言工具功能概述核心技术实现Windows版本信息API调用大模型API集成交互式命令行界面 完整工作流程实际应用示例附录完整代码 使用Go语言实现智能EXE文件重命名工具 &#x1f6e0;️ 引言 在日常开发和软件管理…

3.1.1.9 安全基线检查项目九:检查是否设置限制su命令用户组

限制su配置 关于限制su命令检查项&#xff0c;对于大多数的Linux&#xff08;Redhat系列、Debian系列&#xff09;&#xff0c;进行本项检查很简单。只需要检查/etc/pam.d/su中是否配置了&#xff1a; auth required pam_wheel.so use_uid [group用户组名] 有些资料讲说需要有…

【加解密与C】对称加密(四) RC4

RC4算法概述RC4&#xff08;Rivest Cipher 4&#xff09;是由Ron Rivest在1987年设计的流密码算法&#xff0c;广泛应用于SSL/TLS、WEP等协议中。其核心是通过密钥调度算法&#xff08;KSA&#xff09;和伪随机生成算法&#xff08;PRGA&#xff09;生成密钥流&#xff0c;与明…

医科+AI!和鲸支持南京医科大学医学数据挖掘课程实践教学落地

近两年&#xff0c;生物统计学更多地进入了公众视野。作为统计学、医学与计算机科学交叉的前沿学科&#xff0c;伴随测序技术革新与人工智能算法突破&#xff0c;其发展前景也被十分看好。 市场需求的背后是人才需求的爆发与人才培养的挑战。目前&#xff0c;生物统计学专业在国…

亚马逊云科技中国峰会:数新智能CTO原攀峰详解一站式AI原生数智平台DataCyber在Amazon EKS的实践

6月20日&#xff0c;在上海世博中心举办的亚马逊云科技中国峰会 “在 Amazon EKS 上运行高性能生成式 AI 应用” 分论坛圆满结束。本次分论坛聚焦于 Amazon EKS 在生成式 AI 应用领域的强大支撑作用&#xff0c;数新智能CTO原攀峰凭借其深厚的技术背景和丰富的实践经验&#xf…