我有几个请求Prometheus提供不同的度量标准,我想将它们合并到一个字典中。结果的目标应该是:{'domain': 'domain.com', 'uptime': '100', 'threats_number': '12345'}
# Uptime
def uptime_percent():
uptime_data = prom.custom_query(
query="avg_over_time(host_tracker_uptime_percent{job='donodeexporter'}[10d])"
)
for domain_z in uptime_data:
domain_zone = domain_z['metric']['zone']
uptime = domain_z['value'][1]
yield ({"domain": f'{domain_zone}', "uptime": f'{uptime}'})# Cloudflare threats total by zone
def cloudflare_threats():
cloudflare_threats_total = prom.custom_query(
query="sum by(zone) (increase(cloudflare_zone_threats_total{job='cloudflare'}[10d]))"
)
for domain_z in cloudflare_threats_total:
domain_zone = domain_z['metric']['zone']
threats_number = domain_z['value'][1]
yield ({"domain": f'{domain_zone}', "threats_number": f'{threats_number}'})发布于 2022-11-07 14:03:01
它可能不优雅,但部分适合我
# Uptime
def uptime_percent():
uptime_data = prom.custom_query(
query="avg_over_time(host_tracker_uptime_percent{job='donodeexporter'}[10d])"
)
for domain_z in uptime_data:
domain_zone = domain_z['metric']['zone']
uptime = domain_z['value'][1]
yield dict(([("domain", f'{domain_zone}'), ("uptime", f'{uptime}')]))
# Cloudflare threats total by zone
def cloudflare_threats():
cloudflare_threats_total = prom.custom_query(
query="sum by(zone) (increase(cloudflare_zone_threats_total{job='cloudflare'}[10d]))"
)
for domain_z in cloudflare_threats_total:
domain_zone = domain_z['metric']['zone']
threats_number = domain_z['value'][1]
yield dict(([("domain", f'{domain_zone}'), ("threats", f'{threats_number}')]))
result_uptime = list(uptime_percent())
result_threats = list(cloudflare_threats())
result_dict = {"total_stats": result_uptime + result_threats}
result_json = json.dumps(result_dict)
print(result_json)这并不优雅,因为我仍然没有想要的JSON。The new question is here :)
https://stackoverflow.com/questions/74344640
复制相似问题