运用 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
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44209804/article/details/89674438
今日推荐