【问题标题】:Create JSON using python with sequence key for LLD Zabbix discovery top mem process使用带有序列键的python为LLD Zabbix发现top mem过程创建JSON
【发布时间】:2019-02-26 15:44:04
【问题描述】:

我尝试使用带有 LLD Zabbix 发现 top mem 进程的序列键的 python 创建 JSON

#!/usr/bin/python

import subprocess
import json

s = subprocess.Popen(["ps axho comm --sort -rss | head -5"], shell=True, stdout=subprocess.PIPE).stdout
service_states = s.read().splitlines()

count = 0
data = {"data":{}}
for i in service_states:
  count += 1
  key = "{#TOPMEMNAME" + str(count) + "}"
  data["data"][key] = i

json_data = json.dumps(data)
print(json_data)

获取 JSON 不接受 Zabbix(以下代码):

{
  "data": {
    "{#TOPMEMNAME2}": "node",
    "{#TOPMEMNAME1}": "mongod",
    "{#TOPMEMNAME4}": "ffmpeg",
    "{#TOPMEMNAME3}": "kubelet",
    "{#TOPMEMNAME5}": "dockerd"
  }
}

Zabbix 接受 JSON 的代码如下。

{
    "data": [{
            "{#TOPMEMNAME1}": "mongod"
        },
        {
            "{#TOPMEMNAME2}": "node"
        },
        {
            "{#TOPMEMNAME3}": "kubelet"
        },
        {
            "{#TOPMEMNAME4}": "ffmpeg"
        },
        {
            "{#TOPMEMNAME5}": "dockerd"
        }
    ]
}

如何更改 python 代码以获取 JSON zabbix 接受?

【问题讨论】:

    标签: python json zabbix


    【解决方案1】:
    data = {"data":{}}
    # should be changed to the line below
    data = {"data":[]}
    
    data["data"][key] = i
    # should be changed to the line below
    data["data"].append({key:i}) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多