【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 參數說明:

參數必填描述
job?Prometheus 中定義的 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
英文地址,請注明出處:http://en.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…