利用Zabbix API 获取各个分组下的服务器列表以及详细信息
现在越来越多的公司选择使用开源软件Zabbix来做服务器业务监控,其高逼格的用户管理是个亮点,所以可以通过调用它的接口将权限管理应用到很多地方,比如说堡垒机权限。以下是用python简单写了个小脚本,通过定义分组名便可以得到分组下的服务器信息。#coding=utf-8
__author__ = 'Perling'
from urllib import urlencode
import urllib2
import json
def post(post_data):
api_url = 'http://monitor.zabbix.com/api_jsonrpc.php' #api url
req = urllib2.Request(api_url,json.dumps(post_data))
req.add_header("Content-Type","application/json")
resp = urllib2.urlopen(req)
re = json.loads(resp.read())
return re
def get_sessionid():
login_post_data = {"jsonrpc": "2.0",
"method": "user.login",
"params": {"user": "admin",
"password": "pass"
},
"id": "1",
}
re = post(login_post_data)
if re.has_key("result"):
return re["result"]
else:
return re
exit(1,"login_error")
def hostget():
hostget_post_json = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend",
"filter": {
"name": [
"Zabbix servers",##要获取主机列表的分组名称
]
},
"selectHosts": ['hostid','host'],
},
"auth": get_sessionid(),
"id": 1
}
return post(hostget_post_json)
print hostget()
selectHosts字段是定义 选中分组下边的主机的信息显示选项 具体包括下边的内容
PropertyTypeDescriptionhostidstring(readonly) ID of the host.host
(required)stringTechnical name of the host.availableinteger(readonly) Availability of Zabbix agent.
Possible values are:
0 - (default) unknown;
1 - available;
2 - unavailable.disable_untiltimestamp(readonly) The next polling time of an unavailable Zabbix agent.errorstring(readonly) Error text if Zabbix agent is unavailable.errors_fromtimestamp(readonly) Time when Zabbix agent became unavailable.flagsinteger(readonly) Origin of the host.
Possible values:
0 - a plain host;
4 - a discovered host.ipmi_authtypeintegerIPMI authentication algorithm.
Possible values are:
-1 - (default) default;
0 - none;
1 - MD2;
2 - MD5
4 - straight;
5 - OEM;
6 - RMCP+.ipmi_availableinteger(readonly) Availability of IPMI agent.
Possible values are:
0 - (default) unknown;
1 - available;
2 - unavailable.ipmi_disable_untiltimestamp(readonly) The next polling time of an unavailable IPMI agent.ipmi_errorstring(readonly) Error text if IPMI agent is unavailable.ipmi_errors_fromtimestamp(readonly) Time when IPMI agent became unavailable.ipmi_passwordstringIPMI password.ipmi_privilegeintegerIPMI privilege level.
Possible values are:
1 - callback;
2 - (default) user;
3 - operator;
4 - admin;
5 - OEM.ipmi_usernamestringIPMI username.jmx_availableinteger(readonly) Availability of JMX agent.
Possible values are:
0 - (default) unknown;
1 - available;
2 - unavailable.jmx_disable_untiltimestamp(readonly) The next polling time of an unavailable JMX agent.jmx_errorstring(readonly) Error text if JMX agent is unavailable.jmx_errors_fromtimestamp(readonly) Time when JMX agent became unavailable.maintenance_fromtimestamp(readonly) Starting time of the effective maintenance.maintenance_statusinteger(readonly) Effective maintenance status.
Possible values are:
0 - (default) no maintenance;
1 - maintenance in effect.maintenance_typeinteger(readonly) Effective maintenance type.
Possible values are:
0 - (default) maintenance with data collection;
1 - maintenance without data collection.maintenanceidstring(readonly) ID of the maintenance that is currently in effect on the host.namestringVisible name of the host.
Default: host property value.proxy_hostidstringID of the proxy that is used to monitor the host.snmp_availableinteger(readonly) Availability of SNMP agent.
Possible values are:
0 - (default) unknown;
1 - available;
2 - unavailable.snmp_disable_untiltimestamp(readonly) The next polling time of an unavailable SNMP agent.snmp_errorstring(readonly) Error text if SNMP agent is unavailable.snmp_errors_fromtimestamp(readonly) Time when SNMP agent became unavailable.statusintegerStatus and function of the host.
Possible values are:
0 - (default) monitored host;
1 - unmonitored host.
页:
[1]