如何编写 python 脚本将指标数据发送到 pushgateway
Posted
技术标签:
【中文标题】如何编写 python 脚本将指标数据发送到 pushgateway【英文标题】:How write a python script to send metrics data to pushgateway 【发布时间】:2021-11-09 11:30:08 【问题描述】:我想将指标数据发送到 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
命令的进程列表。
有没有人有想法。非常感谢。
【问题讨论】:
您可以尝试通过os.system(<command string here>)
执行命令并解析命令的输出。
【参考方案1】:
我要测试这个命令:
$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')
也许这会运行......或者不会!
【讨论】:
【参考方案2】: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 做一段时间,它会获取所有列表元素。
谢谢。
【讨论】:
以上是关于如何编写 python 脚本将指标数据发送到 pushgateway的主要内容,如果未能解决你的问题,请参考以下文章
如何在 libreoffice writer 中编写 python 宏来发送接收数据
如何在 python 中为 xgboost 编写自定义评估指标?