如何使用键{#PROCNAME}将bash输出转换为JSON?

安东·帕特塞夫(Anton Patsev)

我尝试通过内存获取前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获取原始字符串作为输入。该选项-njq输入与输入一起提供null这样inputs就可以一次获取所有字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章