使用API 在zabbix监控系统中查看,创建及删除监控主机

本文介绍了如何使用Zabbix API来查看、添加和删除监控主机。通过JSON-RPC实现API调用,详细步骤包括关闭自动发现配置、编写并执行脚本以查看API接口、获取主机信息、删除和添加主机。同时,提供了获取groupid和templateid的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是API:

  • API(Application Programming
    Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。简单的说,API就是对外的接口,利用API可以直接到达软件硬件内部来进行操作
  • zabbix中API的作用:
    Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。
  • API的大致工作流如下:
    (1)API 采用JSON-RPC实现。这意味着调用任何函数,都需要发送POST请求,输入输出数据都是以JSON格式
    (2)准备JSON对象,它描述了你想要做什么(创建主机,获取图像,更新监控项等)。
    (3)获取JSON格式响应。
  • 在做实验前,把zabbix监控的自动发现和自动注册的相应配置都关掉(读者如果没有添加过则不用配置)
  • 这里就利用API获得主机信息,添加主机删除主机做以展示

一。查看api接口
1.编写脚本:查看zabbix监控系统的api接口:

[root@server1 ~]# vim zabbix-api
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",             # zabbix监控系统的用户名和密码
        "password": "zabbix"
    },
    "id": 1,       # 这个字段用于绑定JSON请求和响应。响应会跟请求有相同的"id"。在一次性发送多个请求时很有用,这些也不需要唯一或者连续
    "auth": null
}' http://172.25.26.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是调用API的PHP脚本。可在安装可视化前端的目录下找到。

2.给脚本以执行权限

[root@server1 ~]# chmod +x zabbix-api
[root@server1 ~]# ./zabbix-api
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "4d5a1251c6d77dd06b264aa316e6d9e9"
}

在这里插入图片描述
在这里插入图片描述
二。查看zabbix主机和被监控主机信息
1.配置脚本

[root@server1 ~]# vim zabbix-api-show
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": "4d5a1251c6d77dd06b264aa316e6d9e9"      ##此处是zabbix的API令牌
}' http://172.25.26.1/zabbix/api_jsonrpc.php | python -m json.tool

2.执行脚本获取被监控的主机信息

[root@server1 ~]# vim zabbix-api-show 
[root@server1 ~]# chmod +x zabbix-api-show 
[root@server1 ~]# ./zabbix-api-show 
{
    "id": 3,
    "jsonrpc": "2.0",
    "result": [
        {
            "host": "Zabbix server",
            "hostid": "10084",
            "interfaces": [
                {
                    "interfaceid": "1",
                    "ip": "127.0.0.1"
                }
            ]
        },
        {
            "host": "server2",
            "hostid": "10270",
            "interfaces": [
                {
                    "interfaceid": "9",
                    "ip": "172.25.26.2"
                }
            ]
        }
    ]
}

三。删除zabbix监控中的主机
1.配置脚本文件

[root@server1 ~]# vim zabbix-api-delete
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{   
   "jsonrpc": "2.0",
   "method": "host.delete",    # 调用host.delete方法
   "params": [
       "10270"     # 上一步返回的被监控主机hostid号
   ],
   "id":2,
   "auth": "4d5a1251c6d77dd06b264aa316e6d9e9"
}' http://172.25.19.1/zabbix/api_jsonrpc.php | python -m json.tool

在这里插入图片描述
在这里插入图片描述
2.执行脚本

[root@server1 ~]# vim zabbix-api-delete 
[root@server1 ~]# chmod +x zabbix-api-delete 
[root@server1 ~]# ./zabbix-api-delete 
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10270"
        ]
    }
}

浏览器发现server2主机已经删除了在这里插入图片描述
四。添加主机:
1.配置脚本

[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",    # 调用host.create方法
    "params": {
        "host": "server2",    # 被监控的主机名
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "172.25.26.2",     # 被监控主机的ip
                "dns": "", 
                "port": "10050"    # zabbix-agent的端口号
            }
        ],
        "groups": [
            {
                "groupid": "2"    # 建立的主机加入的群组id
            }
        ],
        "templates": [
            {
                "templateid": "10001"  # 建立的主机使用的模版id
            }
        ]
    },
    "id":2,
    "auth": "4d5a1251c6d77dd06b264aa316e6d9e9" 
}' http://172.25.26.1/zabbix/api_jsonrpc.php | python -m json.tool

补充:如何获知groupid和templateid呢?我们可以在zabbix的web界面中打开某个群组和模版,即可在上边的地址栏中得到
在这里插入图片描述
在这里插入图片描述
2.执行脚本

[root@server1 ~]# vim zabbix-api-add
[root@server1 ~]# chmod +x zabbix-api-add 
[root@server1 ~]# ./zabbix-api-add 
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10271"
        ]
    }
}

刷新页面就显示server2已经添加成功了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值