Pushgateway


Pushgateway 是 Prometheus 生態中一個重要工具,使用它的原因主要是:
Prometheus 采用 pull 模式,可能由於不在一個子網或者防火牆原因,導致 Prometheus 無法直接拉取各個 target 數據。
在監控業務數據的時候,需要將不同數據匯總, 由 Prometheus 統一收集。
由於以上原因,不得不使用 pushgateway,但在使用之前,有必要了解一下它的一些弊端:
將多個節點數據匯總到 pushgateway, 如果 pushgateway 掛了,受影響比多個 target 大。
Prometheus 拉取狀態 up 只針對 pushgateway, 無法做到對每個節點有效。
Pushgateway 可以持久化推送給它的所有監控數據。
因此,即使你的監控已經下線,prometheus 還會拉取到舊的監控數據,需要手動清理 pushgateway 不要的數據。 
拓撲圖如下:
下載安裝:
tar -zxvf pushgateway-0.8.0.linux-amd64.tar.gz 
./pushgateway
 
改prometheus的配置文件,給pushgateway定義一個job
-job_name: 'pushgateway_test'  #這個名稱可以自定義,后面會用到
  static_configs:
    - targets: ['localhost:9091']  #這里是pushgateway的地址 
 
數據管理
正常情況我們會使用 Client SDK 推送數據到 pushgateway, 但是我們還可以通過 API 來管理, 例如:
向 {job="pushgateway_test"} 添加單條數據:
echo "pushgateway_test_metric 3.14" | curl --data-binary @- http://pushgateway.example.org:9091/metrics/job/pushgateway_test
--data-binary 表示發送二進制數據,注意:它是使用POST方式發送的!
 
添加更多更復雜數據,通常數據會帶上 instance, 表示來源位置:
# TYPE some_metric counter
some_metric{label="val1"} 42
# TYPE another_metric gauge
# HELP another_metric Just an example.
another_metric 2398.283
EOF
 
可以發現 pushgateway 中的數據我們通常按照 job 和 instance 分組分類,所以這兩個參數不可缺少。
因為 Prometheus 配置 pushgateway 的時候,也會指定 job 和 instance, 但是它只表示 pushgateway 實例,不能真正表達收集數據的含義。
所以在 prometheus 中配置 pushgateway 的時候,需要添加 honor_labels: true 參數, 從而避免收集數據本身的 job 和 instance 被覆蓋。
注意,為了防止 pushgateway 重啟或意外掛掉,導致數據丟失,我們可以通過 --persistence.file="" 和--persistence.interval=5m參數將數據持久化下來。
 
刪除某個組下的某實例的所有數據:
刪除某個組下的所有數據:
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM