我花了几天时间尝试为 Pushgateway 和 Prometheus 使用 bash 脚本。但是这个脚本不起作用。实际上,我的树莓派上有 Pushgateway,而另一个树莓派有 Prometheus。一切正常,我测试了一个简单的 bash 脚本,这个脚本正常工作。我的简单脚本(test.sh):
echo "metric 99" | curl --data-binary @- http://localhost:9091/metrics/job/some_job
现在我想写一个更复杂的脚本。该脚本必须将 CPU 使用率的指标推送给 prometheus(与“$ps aux”命令或“$top”命令相同)。但是这个脚本不起作用,我不知道如何修改它。我更复杂的脚本:
#!/bin/bash
z="ps aux"
while read -r $z
do
var=$var$(awk '{print "cpu_usage{process=\""$11"\", pid=\""$2"\"}", $3$z}');
done <<< "$z"
curl -X POST -H "Content-type: text/plain" --data "$var" http://localhost:9091/metrics/job/top/instance/machine
如果有人可以帮助我。非常感谢。
我也试试这段代码:
#!/bin/bash
z="ps aux"
while read -r "ps aux"
do
var=$var$(awk '{print "cpu_usage{process=\""$11"\", pid=\""$2"\"}", $3$z}');
done <<< "$z"
curl -X POST -H "Content-type: text/plain" --data "$var" http://localhost:9091/metrics/job/top/instance/machine
但我不确定语法。怎么了 ?
我尝试代码:
load=$(ps aux | awk '{ print "cpu_usage{ process=\"" $11 "\",pid=\"" $2 "\"}," $3 }')
curl -X POST -H --data "$load" http://localhost:9091/metrics/job/top/instance/machine
但它不起作用。第一行没问题,但是当我运行这段代码时,我发现 curl 命令的错误消息:
curl: (3) URL using bad/illegal format or missing URL
==========我的问题的解决方案是: ==========
ps aux | awk '$3>0 {print "cpu_usage"$2" "$3""}' | curl --data-binary @- http://localhost:9091/metrics/job/top/instance/machine
此命令可以将 % CPU > 0 的所有进程数据传输到 pushgateway。在这一行中,$3 = %CPU,$2 = PID。小心特殊字符。如果结果命令是错误信息,可能是因为有特殊字符...