Zabbix 快速创建screen

  1. #!/usr/bin/env python
  2. import urllib2
  3. import json
  4. import argparse
  5. def authenticate(url, username, password):
  6. values ={‘jsonrpc‘:‘2.0‘,
  7. ‘method‘:‘user.login‘,
  8. ‘params‘:{
  9. ‘user‘: username,
  10. ‘password‘: password
  11. },
  12. ‘id‘:‘0‘
  13. }
  14. data = json.dumps(values)
  15. req = urllib2.Request(url, data,{‘Content-Type‘:‘application/json-rpc‘})
  16. response = urllib2.urlopen(req, data)
  17. output = json.loads(response.read())
  18. try:
  19. message = output[‘result‘]
  20. except:
  21. message = output[‘error‘][‘data‘]
  22. print message
  23. quit()
  24. return output[‘result‘]
  25. def getGraph(hostname, url, auth, graphtype, dynamic, columns):
  26. if(graphtype ==0):
  27. selecttype =[‘graphid‘]
  28. select =‘selectGraphs‘
  29. if(graphtype ==1):
  30. selecttype =[‘itemid‘,‘value_type‘]
  31. select =‘selectItems‘
  32. values ={‘jsonrpc‘:‘2.0‘,
  33. ‘method‘:‘host.get‘,
  34. ‘params‘:{
  35. select: selecttype,
  36. ‘output‘:[‘hostid‘,‘host‘],
  37. ‘searchByAny‘:1,
  38. ‘filter‘:{
  39. ‘host‘: hostname
  40. }
  41. },
  42. ‘auth‘: auth,
  43. ‘id‘:‘2‘
  44. }
  45. data = json.dumps(values)
  46. req = urllib2.Request(url, data,{‘Content-Type‘:‘application/json-rpc‘})
  47. response = urllib2.urlopen(req, data)
  48. host_get = response.read()
  49. output = json.loads(host_get)
  50. # print json.dumps(output)
  51. graphs =[]
  52. if(graphtype ==0):
  53. for i in output[‘result‘][0][‘graphs‘]:
  54. graphs.append(i[‘graphid‘])
  55. if(graphtype ==1):
  56. for i in output[‘result‘][0][‘items‘]:
  57. if int(i[‘value_type‘])in(0,3):
  58. graphs.append(i[‘itemid‘])
  59. graph_list =[]
  60. x =0
  61. y =0
  62. for graph in graphs:
  63. graph_list.append({
  64. "resourcetype": graphtype,
  65. "resourceid": graph,
  66. "width":"500",
  67. "height":"100",
  68. "x": str(x),
  69. "y": str(y),
  70. "colspan":"1",
  71. "rowspan":"1",
  72. "elements":"0",
  73. "valign":"0",
  74. "halign":"0",
  75. "style":"0",
  76. "url":"",
  77. "dynamic": str(dynamic)
  78. })
  79. x +=1
  80. if x == columns:
  81. x =0
  82. y +=1
  83. return graph_list
  84. def screenCreate(url, auth, screen_name, graphids, columns):
  85. # print graphids
  86. if len(graphids)% columns ==0:
  87. vsize = len(graphids)/ columns
  88. else:
  89. vsize =(len(graphids)/ columns)+1
  90. values ={"jsonrpc":"2.0",
  91. "method":"screen.create",
  92. "params":[{
  93. "name": screen_name,
  94. "hsize": columns,
  95. "vsize": vsize,
  96. "screenitems":[]
  97. }],
  98. "auth": auth,
  99. "id":2
  100. }
  101. for i in graphids:
  102. values[‘params‘][0][‘screenitems‘].append(i)
  103. data = json.dumps(values)
  104. req = urllib2.Request(url, data,{‘Content-Type‘:‘application/json-rpc‘})
  105. response = urllib2.urlopen(req, data)
  106. host_get = response.read()
  107. output = json.loads(host_get)
  108. try:
  109. message = output[‘result‘]
  110. except:
  111. message = output[‘error‘][‘data‘]
  112. print json.dumps(message)
  113. def main():
  114. url =‘http://10.1.173.215/zabbix/api_jsonrpc.php‘
  115. username ="Admin"
  116. password ="zabbix"
  117. parser = argparse.ArgumentParser(description=‘Create Zabbix screen from all of a host Items or Graphs.‘)
  118. parser.add_argument(‘hostname‘, metavar=‘H‘, type=str,
  119. help=‘Zabbix Host to create screen from‘)
  120. parser.add_argument(‘screenname‘, metavar=‘N‘, type=str,
  121. help=‘Screen name in Zabbix. Put quotes around it if you want spaces in the name.‘)
  122. parser.add_argument(‘-c‘, dest=‘columns‘, type=int, default=3,
  123. help=‘number of columns in the screen (default: 3)‘)
  124. parser.add_argument(‘-d‘, dest=‘dynamic‘, action=‘store_true‘,
  125. help=‘enable for dynamic screen items (default: disabled)‘)
  126. parser.add_argument(‘-t‘, dest=‘screentype‘, action=‘store_true‘,
  127. help=‘set to 1 if you want item simple graphs created (default: 0, regular graphs)‘)
  128. args = parser.parse_args()
  129. hostname = args.hostname
  130. screen_name = args.screenname
  131. columns = args.columns
  132. dynamic =(1if args.dynamic else0)
  133. screentype =(1if args.screentype else0)
  134. auth = authenticate(url, username, password)
  135. graphids = getGraph(hostname, url, auth, screentype, dynamic, columns)
  136. print"Screen Name: "+ screen_name
  137. print"Total Number of Graphs: "+ str(len(graphids))
  138. screenCreate(url, auth, screen_name, graphids, columns)
  139. if __name__ ==‘__main__‘:
  140. main()

Usage:

  1. [[email protected] ~]#./Auto_add_screens.py ‘10.1.185.114‘‘10.1.185.114‘
  2. ScreenName:10.1.185.114
  3. TotalNumber of Graphs:14
  4. {"screenids":["26"]}

来自为知笔记(Wiz)

时间: 2025-01-16 10:09:51

Zabbix 快速创建screen的相关文章

zabbix官方创建screen脚本

下面是创建screen的脚本,可以把一个主机的所有graphs放在一个screen里查看. #!/usr/bin/env python import urllib2 import json import argparse     def authenticate(url, username, password):     values = {'jsonrpc': '2.0',               'method': 'user.login',               'params'

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快速部署

Zabbix快速部署: 官方安装说明: https://www.zabbix.com/documentation/2.4/manual/installation/install_from_packages#red_hat_enterprise_linux_centos 源码包安装:http://it1693.blog.51cto.com/2342744/1609794 设置yum源 Zabbix 2.4 for RHEL6: # rpm -ivh http://repo.zabbix.com/z

通过beego快速创建一个Restful风格API项目及API文档自动化(转)

通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界面. 一.创建数据库及数据表(MySQL) #db--jeedev -- ---------------------------- -- Table structure for `app` -- ---------------------------- DROP TABLE IF EXISTS `a

微信公众号可快速创建“门店小程序” 不用开发

“门店小程序”是啥?“门店小程序”是小程序的一项新能力.无需开发,商户就可在微信公众号后台快速创建“门店小程序”.这个小程序类似一张“店铺名片”,可以展示线下门店名称.简介.营业时间.联系方式.地理位置和图片等门店信息,并支持在公众号自定义菜单.图文消息和模板消息等场景中使用. 它长这样: (左侧为“门店小程序”示意图,将来商户可根据需要为门店小程序快速配置卡券.支付功能) “门店小程序”和你们平时用到的小程序不同点在于: 页面标准化——便于用户识别:指向性明确——是一个“门店”:创建简单——公

Android开发的初学者快速创建一个项目

因为gwf的原因,大陆连不上google所以AndroidSDK是无法更新的 而且设置代理也不一定能解决问题 如果是初学者想快速的了解安卓开发,可以在国内的内网下载整合包 下载地址:http://rj.baidu.com/soft/detail/23485.html?ald 快速创建一个安卓项目------hello world! 1.file--Android application project 3.设置项目名称,app名称,app唯一标识.项目适用于安卓版本 4.图标,界面,项目位置,及

快速创建一个express工程框架

分四步: 1.全局安装express npm install -g express 2.全局安装express-generator npm install -g express-generator (此时可以测试一下,输入express - -help) 3.进入到·工程父目录 cd [工程父目录名] 4.快速创建工程结构 express -t [模板引擎名:ejs/jade] [工程名] 版权声明:本文为博主原创文章,未经博主允许不得转载.

《快速创建网站》2.1 在Azure上创建网站及网站运行机制

现在让我们开始一天的建站之旅. 本文是<快速创建网站>系列的第2篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 1. 网站管理平台WordPress和云计算平台Azure简介2.1 在Azure上创建网站及网站运行机制2.2 域名绑定操作和Azure负载均衡机制2.3 WordPress 初始化和网站管理功能3.1 WordPress 数据导入3.2 WordPress 多站点支持和Azure在线代码编辑器3.3 WordPress 多语言支持 Multi

《快速创建网站》1. 网站管理平台WordPress &amp; 微软Azure 云计算简介

网站并不神秘,过节了,在家闲的没事的,自己建个网站玩玩吧.每段视频不超过15分钟,地铁/公交/睡前/醒来看一段,几天之后变身建站专家,找老板加薪去! 在普通人眼里,创建网站是专业开发人员和IT工程师才能完成的任务,而在IT业高度发达的今天,特别是各种网站管理平台和云计算的成熟,这已经变成了一件非常简单的事情.你也许不懂如何编写代码,不懂什么是服务器,域名或者网络:借助一些正确的工具,你也可以做到. <快速创建网站>系列博客(视频)就是在这样的背景下诞生的,作为一名在软件行业工作了10年的程序猿