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

Python 结合 Zabbix API实现监控主机的增删改功能

2017-01-24 15:26 1026 查看
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方法修改。

参考连接:

https://www.zabbix.com/documentation/2.4/manual/api/reference/host
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: