Zabbix(二)--利用API修改其配置

1.概述

  1. Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
  • 创建新的应用程序以使用Zabbix;
  • 将Zabbix与第三方软件集成;
  • 自动执行常规任务。
  1. Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
  • 该API包含一组独立的方法;
  • 客户端和API之间的请求和响应使用JSON格式进行编码。
  1. 大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。

2.获取身份验证令牌

[root@server1 ~]# vim zabbix-api 
chomd +x zabbix.api
[root@server1 ~]# ./zabbix-api
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "06335a8a530deef28f0f74802dad5b9d"
}
[root@server1 ~]# cat zabbix-api 
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"					##如果修改了密码,要同步更改
    },
    "id": 1,
    "auth": null
}' http://172.25.31.1/zabbix/api_jsonrpc.php | python -m json.tool

参数解释:

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

3.检索主机,获取已配置主机的ID,主机名和接口

[root@server1 ~]# vim zabbix-api 
[root@server1 ~]# ./zabbix-api
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "auto_compress": "1",
            "available": "1",
            "description": "",
            "disable_until": "0",
            "error": "",
            "errors_from": "0",
            "flags": "0",
            "host": "Zabbix server",
            "hostid": "10084",
            "ipmi_authtype": "-1",
            "ipmi_available": "0",
            "ipmi_disable_until": "0",
            "ipmi_error": "",
            "ipmi_errors_from": "0",
            "ipmi_password": "",
            "ipmi_privilege": "2",
            "ipmi_username": "",
            "jmx_available": "0",
            "jmx_disable_until": "0",
            "jmx_error": "",
            "jmx_errors_from": "0",
            "lastaccess": "0",
            "maintenance_from": "0",
            "maintenance_status": "0",
            "maintenance_type": "0",
            "maintenanceid": "0",
            "name": "Zabbix server",
            "proxy_address": "",
            "proxy_hostid": "0",
            "snmp_available": "0",
            "snmp_disable_until": "0",
            "snmp_error": "",
            "snmp_errors_from": "0",
            "status": "0",
            "templateid": "0",
            "tls_accept": "1",
            "tls_connect": "1",
            "tls_issuer": "",
            "tls_psk": "",
            "tls_psk_identity": "",
            "tls_subject": ""
        },
        {
            "auto_compress": "1",
            "available": "1",
            "description": "",
            "disable_until": "0",
            "error": "",
            "errors_from": "0",
            "flags": "0",
            "host": "server2",
            "hostid": "10265",
            "ipmi_authtype": "-1",
            "ipmi_available": "0",
            "ipmi_disable_until": "0",
            "ipmi_error": "",
            "ipmi_errors_from": "0",
            "ipmi_password": "",
            "ipmi_privilege": "2",
            "ipmi_username": "",
            "jmx_available": "0",
            "jmx_disable_until": "0",
            "jmx_error": "",
            "jmx_errors_from": "0",
            "lastaccess": "0",
            "maintenance_from": "0",
            "maintenance_status": "0",
            "maintenance_type": "0",
            "maintenanceid": "0",
            "name": "server2",
            "proxy_address": "",
            "proxy_hostid": "0",
            "snmp_available": "0",
            "snmp_disable_until": "0",
            "snmp_error": "",
            "snmp_errors_from": "0",
            "status": "0",
            "templateid": "0",
            "tls_accept": "1",
            "tls_connect": "1",
            "tls_issuer": "",
            "tls_psk": "",
            "tls_psk_identity": "",
            "tls_subject": ""
        },
        {
            "auto_compress": "1",
            "available": "1",
            "description": "",
            "disable_until": "0",
            "error": "",
            "errors_from": "0",
            "flags": "0",
            "host": "server3",
            "hostid": "10267",
            "ipmi_authtype": "-1",
            "ipmi_available": "0",
            "ipmi_disable_until": "0",
            "ipmi_error": "",
            "ipmi_errors_from": "0",
            "ipmi_password": "",
            "ipmi_privilege": "2",
            "ipmi_username": "",
            "jmx_available": "0",
            "jmx_disable_until": "0",
            "jmx_error": "",
            "jmx_errors_from": "0",
            "lastaccess": "0",
            "maintenance_from": "0",
            "maintenance_status": "0",
            "maintenance_type": "0",
            "maintenanceid": "0",
            "name": "server3",
            "proxy_address": "",
            "proxy_hostid": "0",
            "snmp_available": "0",
            "snmp_disable_until": "0",
            "snmp_error": "",
            "snmp_errors_from": "0",
            "status": "0",
            "templateid": "0",
            "tls_accept": "1",
            "tls_connect": "1",
            "tls_issuer": "",
            "tls_psk": "",
            "tls_psk_identity": "",
            "tls_subject": ""
        }
    ]
}
[root@server1 ~]# 
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "filter": {
            "host": [
                "Zabbix server",
                "server2",
                "server3"
                ]
        }
    },
    "id": 1,         		 ##api编号
    "auth": "abbc36abcb26d41b1f2e8359622a325f"		##上面获取的令牌
}' http://172.25.31.1/zabbix/api_jsonrpc.php | python -m json.tool

4.删除主机server2

[root@server1 ~]# ./zabbix-api
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10265"				##上面检索获取的server2的hostid
        ]
    }
}
[root@server1 ~]# cat zabbix-api 
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
	"10265" 					##server2的hostid
    ],
    "id": 1,
    "auth": "abbc36abcb26d41b1f2e8359622a325f"
}' http://172.25.31.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# 

5.创建主机

[root@server1 ~]# vim zabbix-api 
[root@server1 ~]# ./zabbix-api 
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10268"
        ]
    }
}
[root@server1 ~]# cat zabbix-api 
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
	"host":"server2",
	"interfaces": [
	    {
		"type": 1,
		"main": 1,
		"useip": 1,
		"ip": "172.25.31.2",
		"dns": "",
		"port": "10050"
	     }
		
	],
	"groups": [
	    {
		"groupid": "2"							##查看server3的组
	    }
	],
	"templates": [
	    {
		"templateid": "10001"			 ##创建的时候
	    }
    	]
    },
    "id": 1,
    "auth": "abbc36abcb26d41b1f2e8359622a325f"
}' http://172.25.31.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# 

创建成功
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值