zabbix通过API接口管理监控服务(三十)
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
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'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4.API简单使用
api用到的json都可以从官网拿到
https://www.zabbix.com/documentation/4.0/zh/manual/api/reference
- 1
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}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
字段解释:
解释:
“host”: “192.168.81.160”, #主机名称
“interfaces”: [
{undefined
“type”: 1, #使用agent客户端
“main”: 1, #默认
“useip”: 1, #ip地址
“ip”: “192.168.81.160”, #agent的地址
“dns”: “”,
“port”: “10050” #agent端口
}
],
“groups”: [
{undefined
“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'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
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}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
删除成功
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
必要字段说明
“alias”: “jiangxl”, 名称
“passwd”: “123”, 密码
“usrgrpid”: “7” 用户组id
active": 0 是否有效
文章来源: jiangxl.blog.csdn.net,作者:Jiangxl~,版权归原作者所有,如需转载,请联系作者。
原文链接:jiangxl.blog.csdn.net/article/details/115999292
- 点赞
- 收藏
- 关注作者
评论(0)