zabbix作为老牌监控系统,在很多公司都有在用,zabbix的开箱即用以及丰富的二次拓展功能使得zabbix成为公司监控系统的首选。
今天我们介绍一种基于zabbix api的功能拓展
zabbix版本:4.0
python版本:2.7
zabbix的python模块:pyzabbix
zabbix作为基础监控数据来源,可以提供很多信息,比如我们可以根据zabbix的监控数据执行某些动作,例如,当api服务器组负载过高时,自动增加几台服务器。其中很多操作需要涉及到zabbix的api调用,单靠zabbix本身的动作,不能完成复杂的任务。
我们就看看如何在python中调用zabbix api
示例程序
# auther by zls
# _*_coding:utf-8_*_
from pyzabbix import ZabbixAPI
#zabbix用户名
zabbix_user = "Admin"
#zabbix密码
zabbix_password = "zabbix"
#zabbix地址
zabbix_url = "http://127.0.0.1/zabbix"
#初始化
zapi = ZabbixAPI(zabbix_url)
zapi.login(zabbix_user, zabbix_password)
#获取主机信息
print(zapi.host.get(filter={"host":["Zabbix server"]}))复制
上面的例子,可以获取zabbixserver的主机信息:
[{u'available': u'1', u'tls_connect': u'1', u'maintenance_type': u'0', u'ipmi_errors_from': u'0', u'ipmi_username': u'', u'snmp_disable_until': u'0', u'ipmi_authtype': u'-1', u'ipmi_disable_until': u'0', u'lastaccess': u'0', u'snmp_error': u'', u'tls_psk': u'', u'ipmi_privilege': u'2', u'jmx_error': u'', u'jmx_available': u'0', u'maintenanceid': u'0', u'snmp_available': u'0', u'proxy_address': u'', u'tls_psk_identity': u'', u'status': u'0', u'description': u'', u'tls_accept': u'1', u'auto_compress': u'1', u'host': u'Zabbix server', u'disable_until': u'0', u'ipmi_password': u'', u'templateid': u'0', u'tls_issuer': u'', u'ipmi_available': u'0', u'maintenance_status': u'0', u'snmp_errors_from': u'0', u'ipmi_error': u'', u'proxy_hostid': u'0', u'hostid': u'10084', u'name': u'zabbix-server', u'jmx_errors_from': u'0', u'jmx_disable_until': u'0', u'flags': u'0', u'error': u'', u'maintenance_from': u'0', u'tls_subject': u'', u'errors_from': u'0'}]
语法解析
1,首先初始化并登陆zapi
2,所有可用api见zabbix官方文档:https://www.zabbix.com/documentation/current/manual/api
3,使用方式:zapi.<zabbix api>,例如:zapi.host.get()对应到api文档中就是https://www.zabbix.com/documentation/current/manual/api/reference/host/get
其他模块一次类推
4,pyzabbix模块的开源地址:https://github.com/lukecyca/pyzabbix