3

我想将指标数据发送到 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

有没有人有想法。非常感谢。

4

2 回答 2

0

我要测试这个命令:

$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')

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

于 2021-09-14T16:06:57.540 回答
0

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 做一段时间,它会获取所有列表元素。

谢谢。

于 2021-09-15T13:46:32.477 回答