我尝试通过内存获取前5个进程的JSON。
我想将此JSON发送到Zabbix并按内存绘制前5个进程。
我通过命令获得内存的前5个进程:
ps axho comm --sort -rss | head -5
node
mongod
kubelet
dockerd
systemd-journal
如何使用键{#PROCNAME}将bash输出转换为JSON,以获得以下结构:
{
"data": [
{
"{#PROCNAME}": "node"
},
{
"{#PROCNAME}": "mongod"
},
{
"{#PROCNAME}": "kubelet"
},
{
"{#PROCNAME}": "dockerd"
},
{
"{#PROCNAME}": "systemd-journal"
}
]
}
https://www.zabbix.com/documentation/current/manual/config/macros/lld_macros
低层发现(LLD)功能中使用了一种宏:
{#MACRO}
如果您jq
具有inputs
函数,并且假设{#PROCNAME}
它只是一个字符串,则可以使用以下命令:
ps axho comm --sort -rss | head -5 | jq -Rn '{data: [inputs|{"#PROCNAME":.}]}'
该inputs
函数可以jq
读取所有输入字符串。剩下的就是装饰,以获取所需的格式。
该选项-R
获取原始字符串作为输入。该选项-n
将jq
输入与输入一起提供null
。这样inputs
就可以一次获取所有字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句