zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

zabbix通过API接口管理监控服务(三十)

监控接口服务API 管理 通过 Zabbix 三十
2023-09-14 09:15:44 时间

zabbix api使用

1.zabbix api介绍

我们可以调用api实现二次开发,或者执行一些批量的操作,例如批量创建主机、批量创建监控项

Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:

  • 创建新的应用程序以使用Zabbix;
  • 将Zabbix与第三方软件集成;
  • 自动执行常规任务。

具体看官方文档介绍

在这里插入图片描述

2.zabbix使用api登陆令牌认证

登陆zabbix令牌
[root@192_168_81_160 ~]# curl -X POST -H 'Content-Type: application/json' -d '
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}' http://192.168.81.250/zabbix/api_jsonrpc.php

执行出现这个表示成功
{"jsonrpc":"2.0","result":"a0ee3094c8577a376faec27d0a548d70","id":1}

我们将令牌值做成变量,这样就能避免每次都要输入了
[root@192_168_81_160 ~]# token=a0ee3094c8577a376faec27d0a548d70

3.获取主机群组id以及模板id

主机群组id和模板id都存放于数据库中,我们只需要知道在那张表即可

3.1.获取主机群组id

主机群组id位于hstgrp表,可以看到我们的主机群组centos7的id为15

在这里插入图片描述

3.2.获取监控模板id

监控模板id位于hosts_templates,只能说可以在这里取到,我们只需要将一台主机添加一个模板,然后去hosts表找到我们添加的主机,然后在复制hostid去hosts_templates这个表即可拿到我们添加的模板id

我们可以写个SQL去查询

SELECT
	h.hostid,
	t.templateid 
FROM
	`hosts` h
	LEFT JOIN hosts_templates t ON h.hostid = t.hostid 
WHERE
	h.HOST = '192.168.81.170'

在这里插入图片描述

4.API简单使用

api用到的json都可以从官网拿到

https://www.zabbix.com/documentation/4.0/zh/manual/api/reference

在这里插入图片描述

4.1.创建一台主机

需要实现安装好agent,并配置好启动

执行api

创建主机
curl -X POST -H 'Content-Type: application/json' -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "192.168.81.160",
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "192.168.81.160",
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "15"
            }
        ],
        "templates": [
            {
                "templateid": "10271"
            }
        ]
    },
    "auth": "'$token'",
    "id": 1
}' http://192.168.81.250/zabbix/api_jsonrpc.php

执行完出现这个表示成功
{"jsonrpc":"2.0","result":{"hostids":["10279"]},"id":1}

在这里插入图片描述

字段解释:

解释:
“host”: “192.168.81.160”, #主机名称
“interfaces”: [
{
“type”: 1, #使用agent客户端
“main”: 1, #默认
“useip”: 1, #ip地址
“ip”: “192.168.81.160”, #agent的地址
“dns”: “”,
“port”: “10050” #agent端口
}
],
“groups”: [
{
“groupid”: “15” #主机群组的id
}
],
“templates”: [
{
“templateid”: “10271” #模板id
}
]

添加成功,且监控成功

在这里插入图片描述

4.2.删除多台主机

4.2.1.获取主机hostid

我们将192.168.81.180/190这两台机器给删掉
在这里插入图片描述

获取主机hostid
在zabbix库中执行
SELECT
	h.hostid,
	t.templateid 
FROM
	`hosts` h
	LEFT JOIN hosts_templates t ON h.hostid = t.hostid 
WHERE
	h.HOST = '192.168.81.180' or 	h.HOST = '192.168.81.190'

在这里插入图片描述

4.2.2.删除主机

删除主机
[root@192_168_81_160 ~]# curl -X POST -H 'Content-Type: application/json' -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10281",
        "10280"
    ],
    "auth": "'$token'",
    "id": 1
}' http://192.168.81.250/zabbix/api_jsonrpc.php
输出这个表示成功
{"jsonrpc":"2.0","result":{"hostids":["10281","10280"]},"id":1}

删除成功

在这里插入图片描述

4.3.创建用户

添加用户
[root@192_168_81_160 ~]# curl -X POST -H 'Content-Type: application/json' -d '
{
    "jsonrpc": "2.0",
    "method": "user.create",
    "params": {
        "alias": "jiangxl",
        "passwd": "123",
        "usrgrps": [
            {
                "usrgrpid": "7"
            }
        ],
        "user_medias": [
            {
                "mediatypeid": "1",
                "sendto": [
                    "jiangxl@qq.com"
                ],
                "active": 0,
                "severity": 63,
                "period": "1-7,00:00-24:00"
            }
        ]
    },
    "auth": "'$token'",
     "id": 1
}' http://192.168.81.250/zabbix/api_jsonrpc.php   

必要字段说明

“alias”: “jiangxl”, 名称

“passwd”: “123”, 密码

“usrgrpid”: “7” 用户组id

active": 0 是否有效

在这里插入图片描述