如何编写 python 脚本将指标数据发送到 pushgateway

我想将指标数据发送到 Prometheus 推送网关以监控 CPU 和内存。我想要的是将 $ps aux$htop 信息传输到推送网关。我使用 bash 脚本尝试了此操作,但没有成功,这就是为什么我想尝试使用 python 脚本。对我来说最大的问题是将 $ps aux$htop 信息转换为指标数据。我真的不知道如何管理它。我尝试了一个简单的代码,它可以正常工作:

import requests
job_name='metrics'
instance_name='10.0.0.1:9090'
team_name='cpu'
provider='Rpi'
payload_key='cpu_utilization'
payload_value='33'

response = requests.post('http://localhost:9091/metrics/job/{j}/instance/{i}/team/{t}'.format(j=job_name, i=instance_name, t=team_name), data='{k} {v}n'.format(k=payload_key, v=payload_value))
print(response.status_code)

我现在想要的是将 payload_key='cpu_utilization'payload_value='33' 修改为 $ps aux$htop 命令的进程列表。

stack overflow How write a python script to send metrics data to pushgateway
原文答案

答案:

作者头像

python命令完美运行:

os.system('ps –eo pid,user,%mem,cmd --sort=-%mem')

但是如何将它插入到以前的代码中呢?

我测试了:

import requests, os
job_name='metrics'
instance_name='10.0.0.1:9090'
team_name='cpu'
provider='Rpi'
payload_key=os.system('ps –eo pid')
payload_value=os.system('ps –eo %cpu')

response = requests.post('http://localhost:9091/metrics/job/{j}/instance/{i}/team/{t}'.format(j=job_name, i=instance_name, t=team_name), data='{k} {v}n'.format(k=payload_key, v=payload_value))
print(response.status_code)

但是(并不奇怪),那没有运行。我如何影响带有 %cpu 的 PID 1 到指标 n# 1 ?和所有 cpu 数据到指标列表?

至少将 os.system('ps –eo pid,user,%mem,cmd --sort=-%mem') 响应转换为列表,并在为 request.post 执行一段时间后获取所有列表元素。

谢谢。

作者头像

我要测试这个命令:

$ps –eo pid,user,%mem,cmd --sort=-%mem

并改变:

payload_key='cpu_utilization'
payload_value='33'

通过“$ps”命令:

os.system('ps –eo pid,user,%mem,cmd --sort=-%mem')

也许这会运行......或者不运行!