Zabbix api脚本

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()
时间: 2024-10-11 06:14:40

Zabbix api脚本的相关文章

16.使用zabbix api创建screen

zabbix的screen功能可以把graph聚合起来,统一进行展示, 我们的需求是把同一个主机组的同一个item聚合起来,比如一个screen显示同一个组的所有主机的内存使用率,达到类似ganglia的效果, 由于服务器较多,所以我们调用zabbix api来进行创建. 参考地址如下:谢谢各位大牛 https://www.zabbix.org/wiki/Python_script_to_create_Screen_from_all_Items/Graphs_of_a_host http://c

zabbix api

一般架设好server以后都会通过web front 来添加host啊, 模版什么的,这就带来一个效率的问题,比如说我要一时间添加100台host 进去,这个时候有个api ,然后通过脚本来调用就爽了,zabbix的作者们早已想到了这点,api 1.8 这个版本以后就发布了.网上有比较好的教程,我这里就不写了.可以参考我很敬佩的一个人 itnihao的博文: http://itnihao.blog.51cto.com/1741976/1343524 python还是非常好用的,调用api 什么的

ZABBIX API简介及使用

API简介 Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时.很难想象管理数千台服务器而没有自动化是多么的困难.Zabbix API为批量操作.第三方软件集成以及其他作用提供可编程接口. Zabbix API是在1.8版本中开始引进并且已经被广泛应用.所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上.Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作.它允许你通过JSON RPC协议来创建.更新和获

用zabbix生成awstats图表以及通过Python调zabbix API自动化操作

awstats作为一款日志分析软件,功能不错,但是界面过于简单,也没有图表功能,这里我采取了一种变通的方法,将awstats的分析结果(pv.hits(文件数).bandwidth.visits(独立ip))添加到zabbix,并通过zabbix生成趋势图表. 在前两篇文章中,我们队awstats的使用及其工作方式进行了简明扼要的介绍:awstats对每个站点进行分析之后,会生成一个"awstats012016.txt"格式的"数据库"文件:awstats的展示页面

通过Zabbix API 添加host

脚本内容: #!/usr/bin/python #-*- coding:utf8 -*- import json,sys,argparse from zabbix_api import ZabbixAPI server = "http://172.16.206.128/zabbix" username = "Admin" password = "zabbix" zapi = ZabbixAPI(server=server, path="

zabbix通过脚本发短信

zabbix通过脚本发短信 原理 和zabbix发邮件是一样的,都是在action里面配置,发短信的方式是通过调用短信公司的api来完成,当然网上有不少利用139邮箱来发的,这个其实算调用email的一种,这里复述的是调用script的方法. step 编写发短信的脚本.加上可执行权限. administration-> medis types 里面create ,类型选script,填上你的脚本名称. 在server的配置文件里面指定AlertScriptsPath .注意这个目录能被zabb

python调用zabbix api接口实时展示数据

近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  获取单个组下的所有主机 4.  获取某个主机下的所有监控项 5.  获取某个监控项的历史数据 6.  获取某个监控项的最新数据 计划最后展示框架如下内容(这只是值方面,其它的会再加): 主机组1 ----主机名1---监控项1----当前值 ---监控项2----当前值 ----主机名2----监控

zabbix API基本使用方法介绍

前言: 以下内容根据zabbix 3.2官方文档总结:https://www.zabbix.com/documentation/3.2/manual/api 此文档只是简单的介绍API的基本使用,关于一些完整功能或高级功能将在后续的博文中展现 调用Zabbix api使用的是HTTP的POST请求方式 其中请求的头部为: {"Content-Type": "application/json-rpc"} 请求的URL为: http://zabbix.aek.com/a

利用Zabbix API创建主机宏

#!/usr/bin/python #coding:utf-8 from zabbix_api import ZabbixAPI import json server="http://172.16.206.130/zabbix" username="Admin" password="zabbix" zapi = ZabbixAPI(server=server,path="",log_level=0) zapi.login(us