【python怎么读】Python和Zabbix API实现监控主机的增删改功能

更新时间:2020-01-11    来源:python    手机版     字体:

【www.bbyears.com--python】

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方法修改。

本文来源:http://www.bbyears.com/jiaocheng/84404.html

热门标签

更多>>

本类排行