通过zabbix自带api进行批量添加主机
我们需要监控一台服务器的时候,当客户端装好zabbix-agent端并正确配置以后,需要在zabbix-server的web gui界面进行添加zabbix-agent操作,填写host_name,访问名,ip地址,端口还有模板等信息
这样操作比较方便,但当我们需要添加的主机有上百台甚至千台时效率就比较低了,一般有如下解决方案:
1.通过自动发现,自动注册主机
2.通过zabbix_api的方式进行批量操作
今天我们使用第二种方式进行操作,定制性较强,不容易出错
主要是通过读取excel主机列表信息,发送post请求操作zabbix的api进行主机自动添加
环境:
zabbix版本: zabbix3.0.4
python版本:python2.7
api参考文档
# https://www.zabbix.com/documentation/3.0/manual/api
host列表信息如下
批量添加主机的zabbix_api代码:
#coding:utf-8
import json
import urllib2
from urllib2 import URLError
import sys
import xlrd
class ZabbixTools:
def __init__(self):
self.url = 'http://192.168.3.200/zabbix/api_jsonrpc.php'
self.header = {"Content-Type":"application/json"}
# 登陆验证
def user_login(self):
data = json.dumps({
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 0
})
request = urllib2.Request(self.url, data)
for key in self.header:
request.add_header(key, self.header[key])
try:
result = urllib2.urlopen(request)
except URLError as e:
print "Auth Failed, please Check your name and password:", e.code
else:
response = json.loads(result.read())
result.close()
self.authID = response['result']
return self.authID
# 获取主机
def host_get(self,hostName):
data = json.dumps({
"jsonrpc":"2.0",
"method":"host.get",