使用python通过zabbix api获取监控项历史数据示例

Posted ~~~~~~~~~~~~~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python通过zabbix api获取监控项历史数据示例相关的知识,希望对你有一定的参考价值。

1、python获取zabbix apiinfo.version信息:

import requests
import json

data = "jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":None,"params":

header = "Content-Type":"application/json-rpc"
url = 'https://zabbix.cn/api_jsonrpc.php'

response = requests.post(url,data=json.dumps(data),headers=header)
print(response.content.decode())

 

- `jsonrpc` - API使用的JSON-RPC协议的版本; Zabbix API实现的JSON-RPC版本是2.0;
- `method` - 被调用的API方法名;
- `params` - 将被传递给API方法的参数;
- `id` - 请求的任意标识符;
- `auth` -用户认证令牌; 因为我们还没有一个,它的设置null。

在访问Zabbix中的任何数据之前,需要登录并获取身份验证令牌,python连接zabbix api获取身份验证令牌:

import requests
import json

data = 
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": 
        "user": "username",
        "password": "password"
    ,
    "id": 1,
    "auth": None,


header = "Content-Type":"application/json-rpc"
url = 'https://zabbix.cn/api_jsonrpc.php'

response = requests.post(url,data=json.dumps(data),headers=header)
r = response.content.decode()
r_json = json.loads(r)
print("身份令牌为:",r_json["result"])

 

1、获取所有主机ID及主机名称信息

import requests
import json

data = 
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": 
        "user": "username",        #zabbix登录用户名
        "password": "password"     #zabbix登录密码
    ,
    "id": 1,
    "auth": None,




header = "Content-Type":"application/json-rpc"
url = 'https://myzabbix.cn/api_jsonrpc.php'   #zabbix api接口

response = requests.post(url,data=json.dumps(data),headers=header)
r = response.content.decode()
r_json = json.loads(r)
# print("身份令牌为:",r_json["result"])
token = r_json["result"]

host_data = 
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": 
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    ,
    "id": 2,
    "auth": token


host_info = json.loads(requests.post(url,data=json.dumps(host_data),headers=header).content.decode())
host_list = host_info["result"]
# print(host_list)
# print(host_list[0])
for i in host_list:
    print(i["hostid"],i["host"])  # 打印所有主机id及主机名称信息

2.根据key查找监控项,从ID为10265的主机获取key带有“ nginx”的监控项,并以名称排序。

nginx_data = 
    "jsonrpc": "2.0",
    "method": "item.get",
    "params": 
        "output": "extend",
        "hostids": "10265",
        "search": 
            "key_": "nginx"
        ,
        "sortfield": "name"
    ,
    "auth": token,
    "id": 3


nginx_item = json.loads(requests.post(url,data=json.dumps(nginx_data),headers=header).content.decode())
# print(nginx_item['result'])
for i in nginx_item['result']:
    print(i['itemid'],i['name'],i['key_'])    #打印itemid、监控项名称及key

3.获取监控项ID为113480数字(浮点)监控项中获取最近10条数据

history_data = 
    "jsonrpc": "2.0",
    "method": "history.get",
    "params": 
        "output": "extend",
        "history": 0,
        "itemids": "113480",
        "sortfield": "clock",
        "sortorder": "DESC",
        "limit": 10
    ,
    "auth": token,
    "id": 4


history_item = json.loads(requests.post(url,data=json.dumps(history_data),headers=header).content.decode())
print(history_item)

更多用法参见zabbix官方文档。

以上是关于使用python通过zabbix api获取监控项历史数据示例的主要内容,如果未能解决你的问题,请参考以下文章

通过python封装zabbix-api批量添加监控项

利用ZABBIX进行服务器自动巡检并导出报表

利用zabbix—API查询zabbix监控项历史数据均值峰值详细讲解

利用zabbix—API查询zabbix监控项历史数据均值峰值详细讲解

[技术干货] Zabbix通过api监控k8s

Zabbix 监控 Docker容器