Python和Zabbix API实现监控主机的增删改功能
Zabbix api可以很方便的管理监控项,功能强大,非常适合二次开发。本文主要实现的功能是django资产管理的更新能够同步到Zabbix监控平台,统一平台功能,保证数据一致性。
Zabbix API
Zabbix API中主要用到host.create,host.delete,host.update,host.get和hostinterface.update方法。下面已create为例做下简单使用说明。
{ "jsonrpc": "2.0", "method": "host.create", "params": { "host": "Linux server", "interfaces": [ { "type": 1, "main": 1, "useip": 1, "ip": "192.168.3.1", "dns": "", "port": "10050" } ], "groups": [ { "groupid": "50" } ], "templates": [ { "templateid": "20045" } ], "inventory": { "macaddress_a": "01234", "macaddress_b": "56768" } }, "auth": "038e1d7b1735c6a5436ee9eae095879e", "id": 1 }
参数
jsonrpc:默认2.0,不用修改
method:指定api的方法
params:请求的参数。其中host是主机名称,即zabbix页面上显示的名字。interfaces是主机的真实信息,包括类型、ip地址和端口等。groups主机添加时加入的组,这个必须指定。templates表示添加主机时使用的zabbix模板id,可选,建议添加常用模板id号 。inventory资产管理,这个我没有添加。
auth:登陆后的sessionid号
id:操作的id号,这个具体什么作用没有深入研究。请求id是什么号,返回时显示什么号。
创建成功后返回内容如下:
{ "jsonrpc": "2.0", "result": { "hostids": [ "107819" ] }, "id": 1 }
python调用
了解zabbix的api后,用python实现还是比较简单,输入参数,发起请求,返回结果。
用户登陆退出代码类似如下:
def login(): url = settings.ZABBIX_URL+"/api_jsonrpc.php" data = json.dumps( { "jsonrpc": "2.0", "method": "user.login", "params": { "user": settings.ZABBIX_USERNAME, "password": settings.ZABBIX_PASSWORD }, "id": 0 }) result = requestUrl(url, data) return result def logout(sessionid): url = settings.ZABBIX_URL+"/api_jsonrpc.php" data=json.dumps( { "jsonrpc": "2.0", "method": "user.logout", "params": [], "id": 1, "auth": sessionid } ) return requestUrl(url, data)
创建主机的代码类似如下:
def genHost(sessionid,ip,groupids): url = settings.ZABBIX_URL+"/api_jsonrpc.php" groups_list=[] for groupid in groupids: groups_list.append({"groupid":groupid}) params_dict={ "host": ip, "interfaces": [ { "type": 1, "main": 1, "useip": 1, "ip": ip, "dns": "", "port": "10050" } ], "groups": groups_list, "templates": [ { "templateid": "10114" } ], } data=json.dumps( { "jsonrpc": "2.0", "method": "host.create", "params": params_dict, "auth": sessionid, "id" : 3 }) return requestUrl(url, data)
更新IP的时候写的比较麻烦,需要先分别获取hostid和hostinterfaceid,然后再分别调用host.update和hostinterfa.update方法修改。
zabbix api全部代码可以从这个地址下载:zabbixAPI.py
参考连接:
https://www.zabbix.com/documentation/2.4/manual/api/reference/host
现在只有1个回复
Comment (1)
Trackbacks (0)
-
还没有Trackbacks
这个可以有~~