「{#PROCNAME}」キーを使用して「ps」と「head」の出力をJSONに変換するには?

「{#PROCNAME}」キーを使用して「ps」と「head」の出力をJSONに変換するには?

メモリから最初の5つのプロセスを含むJSONドキュメントをインポートしようとしています。

このJSONをZabbixに送信し、メモリを介して最初の5つのプロセスをプロットしたいと思います。

次のコマンドを使用して、メモリの上位5つのプロセスを取得します。

ps axho comm --sort -rss | head -5
node
mongod
kubelet
dockerd
systemd-journal

この構造を得るためにキーを使用してps+の出​​力をJSONに変換するにはどうすればよいですか?head{#PROCNAME}

{
  "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} 

ベストアンサー1

jq対応するinputs関数があり、それが文字列であると仮定すると、次のようになり{#PROCNAME}ます。

ps axho comm --sort -rss | head -5 | jq -Rn '{data: [inputs|{"#PROCNAME":.}]}'

これらのinputs関数は任意のjq入力文字列を読み取ることができます。残ったのは、好きな形式を得るための装飾だけです。

このオプションは、-R生の文字列を入力として使用します。このオプションは項目を介した入力を-n提供します。これにより、すべての文字列を一度に取得できます。jqnullinputs

おすすめ記事