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 ~]# 

創建成功
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章