主要要实现的功能:
1.1 groups、hosts表
其中hosts表中的status代表主机是否启用监控,0为监控,1为不起用
1.2 hosts、items、history表
用途:items表中的status代表监控项是否启用监控,0为监控,1为不起用
其中historys分为historys:存放浮点数
History_log:存放字符串
History_str:存放字符串
History_uint:存放整数
1.3 Triggers表
用途:主要用来存放存放trigger的状态,其中status,0为启用,1为不起用,value值代表trigger是否报警,0为正常,1为报警
2 zabbixapi
2.1 zabbix2.4.4接口地址
接口链接:https://www.zabbix.com/documentation/2.4/manual/api,在zabbix用户手册第17章API-->Methodreference下,可以看到zabbix接口
2.2 用户请求
请求url:http://ip/zabbix/api_jsonrpc.php
请求header:{"Content-Type": "application/json"}
2.3 获取用户登录的认证ID
request json字符串格式
{
"jsonrpc":"2.0",
"method":"user.login",
"params":{
"user": "Admin", #用户名
"password": "zabbix" #密码
},
"id":1
}
Response得到的结果:
{
"jsonrpc":"2.0",
"result":"0424bd59b807674191e7d77572075f33",
"id":1
}
需要用到result中的内容0424bd59b807674191e7d77572075f33。
2.4 获取主机组和主机
a) 获取所有主机组的groupid、所属的hostid和name
{
"jsonrpc":"2.0",
"method":"hostgroup.get",
"params":{
"output": ["groupid",
"name" #输出groupid和name
],
"selectHosts":"*",
"filter": {
"flag": "0" #筛选条件
}
},
"auth":self.authID,
"id":1
}
b) 获取一个主机组的所有主机(需要利用上边获取到的hostid,可以组成联动下拉框)
{
"jsonrpc":"2.0",
"method":"host.get",
"params":{
"output": ["hostid",
"name" #输出hostid和name
],
"filter": {
"hostid":hostid,
"status":"0"#status 0表示启用,1表示没启用
}
},
"auth":self.authID,
"id":1
}
2.5 获取监控项以及最新的监控数据
可以通过以下接口获取监控项的所有itemid、status(0为启用,1为禁用)、最新数据以及时间,监控项名称
{
"jsonrpc":"2.0",
"method":"item.get",
"params":{
"output": ["hostid",
"itemid",
"status",
"lastcolock",
"lastvalue",
"name" #输出hostid、itemid状态、名称、最近的值
],
"filter": {
"hostid":10105,
"status":"0"#status 0表示启用,1表示没启用
}
},
"auth":self.authID,
"id":1
}
2.6 过去主机最新的trigger报警
可以通过以下接口获取trigger的triggerid、报警描述和报警级别
{
"jsonrpc":"2.0",
"method":"trigger.get",
"params":{
"output": ["triggerid",
"description",#描述
"priority", #报警级别
],
"selectHosts":"",
"filter": {
"hostid":10105,#主机id
"status":"0",#status0表示启用,1表示没启用
"value":"1"#value0表示正常,1表示异常
},
"sortfield": "priority",#以哪个字段排序
"sortorder": "DESC"#倒序还是顺序
},
"auth":self.authID,
"id":1
}
2.7 建议
a) 从zabbix数据库查询数据特别慢,建议调用zabbix api来获取数据。