运用 Zabbix 构建企业大型监控系统——使用Zabbix API 来查看、创建、删除主机

本文详细介绍如何使用Zabbix API进行主机信息检索、创建及删除操作,包括API登录认证、获取主机列表、创建新主机和删除主机的完整过程。

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

主机环境:rhel7.3 selinux and firewalld disabled

主机名ip服务
server1172.25.254.1zabbix
server2172.25.254.2nginx

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

基于此博文的基础https://mp.youkuaiyun.com/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
在这里插入图片描述
在这里插入图片描述

### Zabbix 配置主机告警模板 在 Zabbix 中配置主机告警模板是一个多步骤的过程,涉及创建触发器、动作以及集成外部通知工具(如钉钉)。以下是详细的说明: #### 1. 创建监控项 (Items) 监控项是用于收集数据的基础单元。可以通过手动输入命令或者使用现有的插件来定义这些监控项。 对于自定义监控项,可以按照如下方式操作: - 登录到 Zabbix Web 界面。 - 导航至 **Configuration → Hosts** 页面并选择目标主机。 - 进入该主机的 **Items** 菜单选项卡,点击右上角的 “Create item” 按钮。 - 定义 Item 的名称、键值(key)以及其他参数[^1]。 #### 2. 设定触发条件 (Triggers) 触发器基于特定逻辑判断是否发出警告信号。当某个指标超过设定阈值时就会激活相应的事件处理流程。 要建立一个新的触发器,请遵循以下路径: - 访问 **Configuration → Templates 或 Hosts**, 找到对应的实体对象。 - 切换到 **Triggers** 标签页,按下新增按钮。 - 输入表达式描述异常情况的发生标准[^3]。 例如,如果 CPU 使用率高于80%,则可能需要设置这样的规则:“{Template OS Linux:system.cpu.util[,iowait].last()}>80”。 #### 3. 构建自动化响应机制(Action) 通过 Actions 功能模块可以让系统自动做出反应比如发送电子邮件给管理员或是调用第三方 API 接口推送消息至即时通讯软件群聊里头去。 具体做法如下所示: - 去往 **Configuration → Actions** 地址栏位处。 - 添加新 Action 名字及其适用范围(Which objects will be affected?)。 - 编辑 Operation Settings 下拉框里的 Media Type, 并关联之前准备好的 Python 脚本 dingding.py 来实现向 DingTalk 发送通知的功能[^4]。 注意,在此过程中还需要确认 media type 已经正确定义好,并且其 script 参数指向实际存在的位置;同时也要保证 zabbix 用户有足够的权限访问相关资源文件夹及执行相应程序[^2]。 最后一步就是验证整个链条能否正常运作起来——即从检测问题到最后接收到反馈信息为止都顺利完成无误才行哦! ```bash # Example of testing the custom alert script manually before integrating it into Zabbix. ./dingding.py '手机号' '关键词' '测试内容' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值