運用 Zabbix 構建企業大型監控系統——使用Zabbix API 來查看、創建、刪除主機

主機環境:rhel7.3 selinux and firewalld disabled

主機名 ip 服務
server1 172.25.254.1 zabbix
server2 172.25.254.2 nginx

server1:server端
server2:agent(被監控端)

基於此博文的基礎https://mp.csdn.net/mdeditor/89670269#

一、基礎概念

Zabbix API允許你以編程方式檢索和修改Zabbix的配置,並提供對歷史數據的訪問。它廣泛用於:

  • 創建新的應用程序以使用Zabbix;
  • 將Zabbix與第三方軟件集成;
  • 自動執行常規任務。

Zabbix API是基於Web的API,作爲Web前端的一部分提供。它使用JSON-RPC 2.0協議,這意味着兩件事:

  • 該API包含一組獨立的方法;
  • 客戶端和API之間的請求和響應使用JSON格式進行編碼。

當完成了前端的安裝配置後,你就可以使用遠程HTTP請求來調用API。

在做實驗前,把zabbix監控的自動發現和自動註冊的相應配置都關掉
在這裏插入圖片描述
在這裏插入圖片描述

這裏就利用API獲得主機信息,添加主機刪除主機做以展示

1.編寫腳本,獲得 zabbix 監控系統的 API 接口

[root@server1 ~]# vim zabbix-api.sh
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '		# 利用curl命令模擬json格式的post請求
{
    "jsonrpc": "2.0",	# 這是標準的JSON RPC參數以標示協議版本。所有的請求都會保持不變
    "method": "user.login",	# 利用用戶登陸的方式獲取API
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,		# 這個字段用於綁定JSON請求和響應。響應會跟請求有相同的"id"。在一次性發送多個請求時很有用,這些也不需要唯一或者連續
    "auth": null
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
# 採用POST方法向http://example.com/zabbix/api_jsonrpc.php發送此JSON對象. http://example.com/zabbix/是Zabbix前端地址。
# api_jsonrpc.php是調用APIPHP腳本。可在安裝可視化前端的目錄下找到。

2.執行腳本可以獲得監控的 API 靈牌

[root@server1 ~]# sh zabbix-api.sh 
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "db391912b046a38829eb09863053060e"
}

響應對象又包含以下屬性:
jsonrpc - JSON-RPC協議的版本;
result - 方法返回的數據;
id - 相應請求的標識符。

在這裏插入圖片描述

  • 檢索主機

我們現在有一個有效的用戶身份驗證令牌,可以用來訪問Zabbix中的數據。 例如,讓我們使用 host.get 方法檢索所有已配置主機的ID,主機名和接口 :

編寫腳本,查看zabbix主機和被監控主機信息

[root@server1 ~]# vim zabbix-api.sh
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": "db391912b046a38829eb09863053060e"	#我們獲得的身份令牌
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool

執行腳本會獲得

[root@server1 ~]# sh zabbix-api.sh 
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": [
        {
            "host": "Zabbix server",
            "hostid": "10084",
            "interfaces": [
                {
                    "interfaceid": "1",
                    "ip": "127.0.0.1"
                }
            ]
        }
    ]
}
  • 創建主機

編寫腳本,創建主機

[root@server1 ~]# vim zabbix-api.sh
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.254.2",			# 被監控主機的ip
                "dns": "",
                "port": "10050"					# zabbix-agent的端口號
            }
        ],
        "groups": [
            {
                "groupid": "2"		# 建立的主機加入的羣組id
            }
        ],
        "templates": [
            {
                "templateid": "10001"		# 建立的主機使用的模版id
            }
        ],
        "inventory_mode": 0,
        "inventory": {
            "macaddress_a": "01234",
            "macaddress_b": "56768"
        }
    },
    "id": 3,
    "auth": "db391912b046a38829eb09863053060e"
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool

在這裏插入圖片描述
在這裏插入圖片描述
執行腳本web下會發現主機被建立

[root@server1 ~]# sh zabbix-api.sh
在這裏插入圖片描述
在這裏插入圖片描述

  • 刪除主機
[root@server1 ~]# vim zabbix-api.sh
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10266"
    ],
    "id": 4,
    "auth": "db391912b046a38829eb09863053060e"
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool

執行腳本對應的主機會被刪除
[root@server1 ~]# sh zabbix-api.sh
在這裏插入圖片描述
在這裏插入圖片描述

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