zabbix api监控php,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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值