如何编写适配Pushgateway与Prometheus的CPU指标上报Bash脚本
Bash脚本向Pushgateway上报进程CPU指标问题及解决方案
背景
尝试编写Bash脚本向Pushgateway上报指标供Prometheus采集,当前Pushgateway部署在一台树莓派上,Prometheus部署在另一台树莓派,两个基础服务均运行正常。
已验证可正常运行的简单上报脚本如下:
echo "metric 99" | curl --data-binary @- http://localhost:9091/metrics/job/some_job
问题说明
需要实现上报ps aux输出的各进程CPU使用率指标,先后编写的多个版本脚本无法正常运行,部分脚本执行时curl返回*“URL using bad/illegal format or missing URL”*错误。
常见错误原因
- 未正确处理
ps aux输出的特殊字符、空格,导致curl读取到的内容混入被误识别为URL参数的内容 - 输出的指标名格式不符合Prometheus规范,或是输出内容存在格式错误,导致curl参数解析异常
- 脚本编写时引号、转义符使用错误,导致请求URL被截断或混入多余字符
最终解决方案
以下命令可将所有CPU使用率大于0的进程数据上报至Pushgateway:
ps aux | awk '$3>0 {print "cpu_usage_"$2" "$3}' | curl --data-binary @- http://localhost:9091/metrics/job/top/instance/machine
注:该指令中
$3对应CPU使用率,$2对应进程PID,若执行报错可检查返回内容是否包含特殊字符。
内容的提问来源于stack exchange,提问作者wanwan
相关产品推荐
相关产品推荐

