采集zabbix的监控指标

75 阅读1分钟

1.获取访问zabbix的token

header = {
  'Content-Type': 'application/json-rpc'
}

def get_token():
    login_param = '''
                {
                    "jsonrpc": "2.0",
                    "method": "user.login",
                    "params": {
                        "user": "root",
                        "password": "password"
                    },
                    "id": 1,
                    "auth": null
                }'''
    rep = requests.post('http://127.0.0.1:8000/api_jsonrpc.php', headers = header, data = login_param)
    return str(json.loads(rep.text)['result'])

2.获取被监控项目的item

2.1 找到被监控的主机配置的所有监控,然后找到关键词 2.2 根据主机的hostids 和找到的关键词找到对应的item

header = {
  'Content-Type': 'application/json-rpc'
}

def get_item(token):
    get_item_param ='''
                {
                    "jsonrpc": "2.0",
                    "method": "item.get",
                    "params": {
                        "output": "extend",
                        "hostids": "hostids", #点击主机的地方url路径中有这个参数
                        "search": {
                            "key_": "检控页面配置的关键词"
                        },
                        "sortfield": "name"
                    },
                    "auth": "''' + token  + '''",
                    "id": 1
                }
                '''
    rep = requests.post('http://127.0.0.1:8000/api_jsonrpc.php',headers = header,data = get_item_param)
    return json.dumps(json.loads(rep.text),indent=4)

3.根据itemid 和token 获取对应的指标

其中的条件是时间 其他指标同理 具体可以参考官方的文档

header = {
  'Content-Type': 'application/json-rpc'
}
def get(token):
    min_time = str(int(time.mktime(datetime.date.today().timetuple())))
    max_time  = str(int(time.time()))
    history_param ='''
                {
                        "jsonrpc": "2.0",
                        "method": "history.get",
                        "params": {
                            "output": "extend",
                            "history": 3,
                            "itemids": "itemids",
                            "sortfield": "clock",
                            "sortorder": "DESC",
                            "time_from":'''+min_time+''',
                            "time_till":'''+max_time+'''
                        },
                        "auth": "''' + str(token) + '''",
                        "id": 1
                }
                '''
    print(min_time)
    print(max_time)
    rep = requests.post('http://127.0.0.1:8000/api_jsonrpc.php', headers = header,data = history_param)
    list = []
    for value in json.loads(rep.text)["result"]:
        list.append(int(value["value"]))

    return max(list)