文档章节

Zabbix api脚本

Jlan
 Jlan
发布于 2015/09/11 18:17
字数 615
阅读 292
收藏 7
import json, urllib2, sys, time

zabbix认证登录
class zabbixtools:
   def __init__(self):
       self.url = "http://127.0.0.1/zabbix/api_jsonrpc.php"
       self.header = {"Content-Type": "application/json"}
       self.authID = self.user_login()
   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()
           authID = response['result']
           print 'Auth Successed!   AuthID is:',authID
           return authID
           
zabbix获取组列表
   def hostgroup_get(self):
       data = json.dumps(
       {
           "jsonrpc":"2.0",
           "method":"hostgroup.get",
           "params":{
               "output":["groupid","name"],
               },
           "auth":self.authID, 
           "id":1,
       })
       # create request object
       request = urllib2.Request(self.url,data)
       for key in self.header:
           request.add_header(key,self.header[key])
       # get host list
       try:
           result = urllib2.urlopen(request)
           #print result
       except URLError as e:
           if hasattr(e, 'reason'):
               print 'We failed to reach a server.'
               print 'Reason: ', e.reason
           elif hasattr(e, 'code'):
               print 'The server could not fulfill the request.'
               print 'Error code: ', e.code
       else:
           #print "heh"
           response = json.loads(result.read())
           #print response
           result.close()
           print "Number Of HostGroup: ", len(response['result'])
           #print response
           for group in response['result']:
               print "Group ID:",group['groupid'],"\tGroupName:",group['name']
               
zabbix获取主机列表
   def host_get(self):
       data = json.dumps(
       {
           "jsonrpc":"2.0",
           "method":"host.get",
           "params":{
               "output":["hostid","name"],
               #"output":["extend"],
               "filter":{"host":""}
               #"groupids":groupid
               },
           "auth":self.authID,
           "id":1,
       })
       # create request object
       request = urllib2.Request(self.url,data)
       for key in self.header:
           request.add_header(key,self.header[key])
       # get host list
       try:
           result = urllib2.urlopen(request)
       except URLError as e:
           if hasattr(e, 'reason'):
               print 'We failed to reach a server.'
               print 'Reason: ', e.reason
           elif hasattr(e, 'code'):
               print 'The server could not fulfill the request.'
               print 'Error code: ', e.code
       else:
           response = json.loads(result.read())
           result.close()
           print "Number Of Hosts: ", len(response['result'])
           for host in response['result']:
               print host
               #print "Host ID:",host['hostid'],"Host Name:",host['name']
zabbix获取监控项列表
   def itemsid_get(self, hostid):
       data = json.dumps(
       {
       "jsonrpc":"2.0",
       "method":"item.get",
       "params":{
           "output":["itemids","key_"],
           #"output":"extend",
           "hostids":hostid,
       },
       "auth":self.authID,
       "id":1,
       })
       # create request object
       request = urllib2.Request(self.url,data)
       for key in self.header:
           request.add_header(key,self.header[key])
           # get host list
       try:
           result = urllib2.urlopen(request)
       except URLError as e:
           if hasattr(e, 'reason'):
               print 'We failed to reach a server.'
               print 'Reason: ', e.reason
           elif hasattr(e, 'code'):
               print 'The server could not fulfill the request.'
               print 'Error code: ', e.code
       else:
           response = json.loads(result.read())
           result.close()
           print "Number Of Item: ", len(response['result'])
           for item in response['result']:
               print item
               #print "Host ID:",host['hostid'],"HostName:",host['name']
zabbix获取监控项例示数据列表
   def history_item_get(self, itemid):
       data = json.dumps(
       {
           "jsonrpc":"2.0",
           "method":"history.get",
           "params":{
               "output":"extend",
               "history":3,
               "itemids":itemid,
               "limit":5
           },
           "auth":self.authID,
           "id":1,
       })
       # create request object
       request = urllib2.Request(self.url,data)
       for key in self.header:
           request.add_header(key,self.header[key])
       # get host list
       try:
           result = urllib2.urlopen(request)
       except URLError as e:
           if hasattr(e, 'reason'):
               print 'We failed to reach a server.'
               print 'Reason: ', e.reason
           elif hasattr(e, 'code'):
               print 'The server could not fulfill the request.'
               print 'Error code: ', e.code
       else:
           response = json.loads(result.read())
           print response['result']
           print type(response['result'])
           result.close()
           print "Number Of history_data: ", len(response['result'])
           data1={}
           data2=[]
           for host in response['result']:                
               value=int(host['value'])/1024/1024
               time1=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(int(host['clock'])))
               data1['time']=time1
               data1['value']=value
               data2.append(data1)
               print "value:",value,"\t","time:",time1
               #print "Host ID:",host['hostid'],"HostName:",host['name']
           print data2
           
           
def main():
   test = zabbixtools()
   test.hostgroup_get()
   test.host_get()
   test.itemsid_get("10084")
   test.history_item_get("23699")
   
   
if __name__ == "__main__":
   main()

© 著作权归作者所有

Jlan
粉丝 2
博文 45
码字总数 17474
作品 0
浦东
私信 提问
zabbix API 的介绍与应用

利用zabbix的API功能可以方便地通过其他程序调用zabbix,从而实现灵活的扩展Zabbix方式。 一、zabbixAPI简介 Zabbix的API具有重要的功能,为第三方调用zabbix、批量操作提供可编程接口,从而轻...

xingliguang
2016/10/27
0
0
Zabbix集成监控阿里云RDS模板分享

作者:希望金融-火星小刘 Zabbix是广泛使用的开源监控系统,同时阿里云RDS在国内的用户量也很大。因为阿里RDS的封闭性无法通过Zabbix标准的Mysql监控模板来进行数据库的监控,只能通过阿里云监...

火星小刘
2017/09/30
0
0
第一次尝试用python实现zabbix主机的批量添加批量删除及模板导入脚本

Python3入门练手尝试篇 API参考: zabbix API 4.0版本:https://www.zabbix.com/documentation/4.0/zh/manual/api #!/bin/python3import xlrd,os,json,requests,sys 参考zabbix API 4.0版本:ht......

平头哥-Enjoystudy
06/27
250
0
通过Zabbix API 添加host

脚本内容: 脚本内容解释: 要使用本脚本,需要安装zabbix-api模块 脚本思路: 通过zabbix API添加host,需要知道以下信息: hostname:主机名(不是可见名) ip:主机IP group_id:host所属...

余二五
2017/11/16
0
0
Zabbix微信企业订阅号报警设置

Zabbix微信企业订阅号报警设置 官方提供了较全的api,使用个人订阅号测试时,发现很多接口没有权限,无法获取订阅者openid,导致无法发送消息,然后要来了公司的企业订阅号来进行报警。 微信...

杨云1028
2015/08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CQRS与AXON

CQRS 看了蛮多文章,只会CRUD,却不懂CQRS,CQRS是遵循DDD思想而产生的一种模式,Command and Query Responsibility Segregation 命令与查询隔离。查询就直接通过正常的模式service调dao层。...

无极之岚
13分钟前
2
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
28分钟前
32
2
500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
8
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部