您的位置:首页 > 编程语言 > Python开发

利用Zabbix API 获取各个分组下的服务器列表以及详细信息

2015-11-16 17:44 746 查看
现在越来越多的公司选择使用开源软件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字段是定义 选中分组下边的主机的信息显示选项 具体包括下边的内容

PropertyTypeDescription
hostidstring(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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息