gpt4 book ai didi

python - 用于 json 值的 Prometheus python 导出器

转载 作者:行者123 更新时间:2023-12-04 17:30:47 26 4
gpt4 key购买 nike

我有一个场景,我正在获取和格式化 json 响应,然后我想使用 Prometheus-python 客户端转换 json dataresponse 获取到 Prometheus 相关指标。

这是我尝试过的:

import time
from prometheus_client.core import GaugeMetricFamily, REGISTRY, CounterMetricFamily
from prometheus_client import start_http_server
import requests
import json

class CustomCollector(object):
def __init__(self):
pass

def collect(self):
response = requests.get('https://api.test.com/v1/data', auth=
('abc@gg.com', 'xxrty'))
d1=(response.json())
for key in d1:
g = GaugeMetricFamily("devicevalue", 'Help text', labels=['datalnddev'])
g.add_metric([key['appname'], key['value'])
yield g

if __name__ == '__main__':
start_http_server(8003)
REGISTRY.register(CustomCollector())
while True:
time.sleep(1)

但这无助于解决问题,我不确定如何在这里进行任何帮助。预计 exporter metrics在普罗米修斯中输出。

最佳答案

你的代码思路很好,但是有一些小错误。 - 在您的 json 数据中,有一个元素带有键 appnamet(末尾有额外的 t)。 - 当你遍历你的数据时,你忘记了通过键“app_metric”获取列表 - 您应该将标签值转换为字符串,如下例所示 ([str(key['appname'])])

import time
from prometheus_client.core import GaugeMetricFamily, REGISTRY, CounterMetricFamily
from prometheus_client import start_http_server
import requests
import json

class CustomCollector(object):
def __init__(self):
pass

def collect(self):
# response = requests.get('https://api.test.com/v1/data', auth= ('abc@gg.com', 'xxrty'))
d1 = {
"app_metric": [
{
"appname": 18,
"value": "0"
},
{
"appname": 12,
"value": "0"
},
{
"appname": 123,
"value": "0"
},
{
"appname": 134,
"value": "0"
}
]
}
list_of_metrics = d1["app_metric"]
for key in list_of_metrics:
g = GaugeMetricFamily("devicevalue", 'Help text', labels=['datalnddev'])
g.add_metric([str(key['appname'])], key['value'])
yield g

if __name__ == '__main__':
start_http_server(8003)
REGISTRY.register(CustomCollector())
while True:
time.sleep(1)

通过这个例子,我得到了你想要的结果:

# HELP devicevalue Help text
# TYPE devicevalue gauge
devicevalue{datalnddev="18"} 0.0
# HELP devicevalue Help text
# TYPE devicevalue gauge
devicevalue{datalnddev="12"} 0.0
# HELP devicevalue Help text
# TYPE devicevalue gauge
devicevalue{datalnddev="123"} 0.0
# HELP devicevalue Help text
# TYPE devicevalue gauge
devicevalue{datalnddev="134"} 0.0

关于python - 用于 json 值的 Prometheus python 导出器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59954984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com