天天看點

Prometheus 使用Python推送名額資料到Pushgateway

使用Python推送名額資料到Pushgateway

需求描述

實踐環境

Python 3.6.5

Django 3.0.6

prometheus-client 0.11.0

代碼實作

!/usr/bin/env python
-*- coding:utf-8 -*-


from prometheus_client import CollectorRegistry, Gauge, push_to_gateway


if __name__ == '__main__':
    registry = CollectorRegistry()
    labels = ['req_status', 'req_method', 'req_url']
    g_one = Gauge('requests_total', 'url請求次數', labels, registry=registry)
    g_two = Gauge('avg_response_time_seconds', '1分鐘内的URL平均響應時間', labels, registry=registry)
    g_one.labels('200','GET', '/test/url').set(1) #set設定值
    g_two.labels('200','GET', '/test/api/url/').set(10) #set設定值
    push_to_gateway('http://162.13.0.83:9091', job='SampleURLMetrics', registry=registry)
           

注意:采用這種方式是無法為名額資料提供資料生成時間戳的,具體下文說明

檢視運作結果

浏覽器通路推送網關位址

http://162.13.0.83:9091

,如下

Prometheus 使用Python推送名額資料到Pushgateway

關于時間戳(timestamp)

如果你在 t1 時刻推送

Metric

,你可能認為普羅米修斯會“刮取(

scrap

)”這些名額,并使用相同時間戳 t1 作為對應時序資料的時間戳,然而,普羅米修斯不會這樣做,它會把從推送網關(

Pushgateway

)“刮取”資料時的時間戳當作名額資料對應的時間戳。為什麼會這樣?

在普羅米修斯的世界觀中,一個

Metric

可以在任何時候被刮取,一個無法被”刮取”的

Metric

基本上是不存在了。對此,普羅米修斯多少還是有點“容忍”的,但是如果它不能在 5 分鐘内獲得一個

Metric

的任何樣本,那麼它就會表現得好像該

Metric

不再存在一樣。為了防止這種情況發生,實際上是使用

Pushgateway

的原因之一。

Pushgateway

将使你的臨時job在任何時候都可以被刮取,也就是說任何時刻都可以采集到你推送的資料。将推送時間附加為時間戳将無法達到這一目的,因為在最後一次推送5分鐘之後,普羅米修斯會認為你的

Metric

已經過時,就好像它再也不能被“刮取”一樣。(普羅米修斯隻能識别每個樣本的一個時間戳,無法區分“推送時間”和“刮取時間”。)

由于沒有任何讓附加不同的時間戳有意義的場景,并且許多使用者試圖錯誤地這樣做(盡管沒有用戶端庫支援),

Pushgateway

拒絕任何帶有時間戳的推送。

為了更容易對失敗的推送器或最近未運作的

Pusher

發出警報,Pushgateway将在

push_time_seconds

push_failure_time_seconds

Metric

中給每個組添加最後一次成功和失敗的

POST

PUT

的Unix時間戳。這将覆寫使用該名稱推送的任何

Metric

。兩個

Metric

的值均為零表示該組從未見過成功或失敗的

POST

PUT

作者:授客

QQ:1033553122

全國軟體測試QQ交流群:7156436

Git位址:https://gitee.com/ishouke

友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!

作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!

           微信打賞                       

支付寶打賞                  全國軟體測試交流QQ群  

Prometheus 使用Python推送名額資料到Pushgateway
Prometheus 使用Python推送名額資料到Pushgateway
Prometheus 使用Python推送名額資料到Pushgateway