我正在尝试构建curl API 查询以从Prometheus 获取Json 数据。Prometheus UI 查询的工作方式如下所示:
max_over_time(container_memory_usage_bytes{image!="",pod_name=~"somepod-.*"}[7d])
所以我正在尝试:
curl 'http://127.0.0.1:20001/api/v1/query?query=max_over_time(container_memory_usage_bytes{(pod_name="somepod-.*")})[1d]' | jq
Run Code Online (Sandbox Code Playgroud)
但根据括号,它总是抱怨诸如预期或意外字符之类的东西。
我试图仅显示第二个值大于 1000 的行。我用来显示所有内容的原始 JQ 程序是:
jq -r '.[] | [.name, .size] | join(",")' file.json
Run Code Online (Sandbox Code Playgroud)
这给了我:
name1,1024
name2,300
name3,512
Run Code Online (Sandbox Code Playgroud)
如果我选择仅大于 1000 的值:
jq -r '.[] | [.name, .size | select(. > 1000)] | join(",")' file.json
Run Code Online (Sandbox Code Playgroud)
然后我得到:
name1,1024
name2
name3
Run Code Online (Sandbox Code Playgroud)
如何丢弃大小小于 1000 的行?
如何在 Bash 中单列的每一行中将字节转换为千兆字节?我已经尝试过这个:
echo "scale=2; $(cat file.log) / 1024^2" | bc
Run Code Online (Sandbox Code Playgroud)
但只转换最后一个值。
file.log 内容示例:
2171863040
1693491200
1984045056
Run Code Online (Sandbox Code Playgroud)
(之间没有空格)