Zabbix API二次开发之jsonrpc调用基本方法及实例

通过Zabbix的api_jsonrpc.php提供的接口服务进行二次开发,是个非常不错的选择,比如开发移动端页面、获取指定数据等,接口文件位置默认在http://{host_ip}/zabbix/api_jsonrpc.php。

参数说明

参数 说明
jsonrps JSON-RPC版本
method 调用的API方法
params 需要传递的参数
id 请求标志
auth 用户token,登录前为null

更多方法请访问官网,本文举例几个常见的调用实例。

常用实例

获取API版本

curl -X POST -H "Content-Type":application/json-rpc --data '{"jsonrpc":"2.0", "method":"apiinfo.version", "id":1, "auth":null, "params":{}}' http://10.10.10.201/api_jsonrpc.php

建议写成脚本并通过python的json工具对结果格式化,如zabbix-api-info.sh:

curl -X POST -H "Content-Type":application/json-rpc --data '
{
    "jsonrpc":"2.0", 
    "method":"apiinfo.version", 
    "id":1, 
    "auth":null, 
    "params":{}
}' http://10.10.10.201/zabbix/api_jsonrpc.php | python -m json.tool

获取token

在操作zabbix之前,先获取token,在后续的操作中必须包含token,否则没有权限,获取token的请求方法如下:

curl -s -X POST -H "Content-Type":application/json-rpc -d '
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "user",
        "password": "password"
    },
    "id":  1,
    "auth": null
}' http://10.10.10.201/zabbix/api_jsonrpc.php | python -m json.tool

如果验证成功,将返回以下数据:

{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "c8d88f5ab9ee0744dcdd43efe2ef7f6b"
}

创建主机

curl -s -X POST -H "Content-Type":application/json-rpc -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "HostName",
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "10.10.10.201",
                "dns": "",""
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "8"
            }
        ],
        "templates": [
            {
                "templateid": "10008"
            }
        ]
    },
    "auth": "c8d88f5ab9ee0744dcdd43efe2ef7f6b",
    "id": 1
}' http://10.10.10.201/zabbix/api_jsonrpc.php | python -m json.tool

检索主机

curl -s -X POST -H "Content-Type":application/json-rpc -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": "c8d88f5ab9ee0744dcdd43efe2ef7f6b"
}' http://10.10.10.201/zabbix/api_jsonrpc.php | python -m json.tool

删除主机

curl -s -X POST -H "Content-Type":application/json-rpc -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
            "10265"  #通过检索主机获取hostid
     ],
    "id": 3,
    "auth": "c8d88f5ab9ee0744dcdd43efe2ef7f6b"
}' http://10.10.10.201/zabbix/api_jsonrpc.php | python -m json.tool

原创文章禁止转载:技术学堂 » Zabbix API二次开发之jsonrpc调用基本方法及实例

精彩评论

2+8=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏