zabbix批量创建聚合图形

#!/usr/bin/python
#coding:utf-8

import urllib2
import json
import argparse
import xlrd

def authenticate(url, username, password):
values = {‘jsonrpc‘: ‘2.0‘,
‘method‘: ‘user.login‘,
‘params‘: {
‘user‘: username,
‘password‘: password
},
‘id‘: ‘0‘
}

data = json.dumps(values)
req = urllib2.Request(url, data, {‘Content-Type‘: ‘application/json-rpc‘})
response = urllib2.urlopen(req, data)
output = json.loads(response.read())

try:
message = output[‘result‘]
except:
message = output[‘error‘][‘data‘]
print message
quit()

return output[‘result‘]

def getGraph(hostname, url, auth, graphtype, dynamic, columns):
if (graphtype == 0):
selecttype = [‘graphid‘]
select = ‘selectGraphs‘
if (graphtype == 1):
selecttype = [‘itemid‘, ‘value_type‘]
select = ‘selectItems‘

values = {‘jsonrpc‘: ‘2.0‘,
‘method‘: ‘host.get‘,
‘params‘: {
select: selecttype,
‘output‘: [‘hostid‘, ‘host‘],
‘searchByAny‘: 1,
‘filter‘: {
‘host‘: hostname
}
},
‘auth‘: auth,
‘id‘: ‘2‘
}

data = json.dumps(values)
req = urllib2.Request(url, data, {‘Content-Type‘: ‘application/json-rpc‘})
response = urllib2.urlopen(req, data)
host_get = response.read()

output = json.loads(host_get)
# print json.dumps(output)

graphs = []
if (graphtype == 0):
for i in output[‘result‘][0][‘graphs‘]:
graphs.append(i[‘graphid‘])

if (graphtype == 1):
for i in output[‘result‘][0][‘items‘]:
if int(i[‘value_type‘]) in (0, 3):
graphs.append(i[‘itemid‘])

graph_list = []
x = 0
y = 0

for graph in graphs:
graph_list.append({
"resourcetype": graphtype,
"resourceid": graph,
"width": "320",
"height": "100",
"x": str(x),
"y": str(y),
"colspan": "1",
"rowspan": "1",
"elements": "0",
"valign": "0",
"halign": "0",
"style": "0",
"url": "",
"dynamic": str(dynamic)
})
x += 1
if x == columns:
x = 0
y += 1

return graph_list

def screenCreate(url, auth, screen_name, graphids, columns):
# print graphids
if len(graphids) % columns == 0:
vsize = len(graphids) / columns
else:
vsize = (len(graphids) / columns) + 1 # vsize代表行数,它的值必须在1-100 之间。

values = {"jsonrpc": "2.0",
"method": "screen.create",
"params": [{
"name": screen_name,
"hsize": columns,
"vsize": vsize,
"screenitems": []
}],
"auth": auth,
"id": 2
}

for i in graphids:
values[‘params‘][0][‘screenitems‘].append(i)

data = json.dumps(values)
req = urllib2.Request(url, data, {‘Content-Type‘: ‘application/json-rpc‘})
response = urllib2.urlopen(req, data)
host_get = response.read()

output = json.loads(host_get)

try:
message = output[‘result‘]
except:
message = output[‘error‘][‘data‘]

print json.dumps(message)

def main(input_hostname, input_hostgroup):
url = ‘http://10.6.32.110/zabbix/api_jsonrpc.php‘
username = "admin"
password = "hc360tc123"

hostname = input_hostname
screen_name = input_hostgroup
columns = 4 #聚合图形的列数,这里可以修改。和vsize配合使用,
dynamic = 0
screentype = 0

auth = authenticate(url, username, password)
graphids = getGraph(hostname, url, auth, screentype, dynamic, columns)

print "Screen Name: " + screen_name
print "Total Number of Graphs: " + str(len(graphids))

screenCreate(url, auth, screen_name, graphids, columns)

if __name__ == ‘__main__‘:
workbook = xlrd.open_workbook(‘add-host-2.xlsx‘) #Excel名
for row in xrange(workbook.sheets()[0].nrows):
hostname = workbook.sheets()[0].cell(row, 0).value
hostgroup = workbook.sheets()[0].cell(row, 1).value

main(hostname, hostgroup)

# columns和vsize如何配合使用。
# columns代表形成聚合图形的列数。
# vsize代表形成聚合图形的行数,而zabbix限制行数在 1-100之间。
# vsize = 每个主机的图片数量 / columns
# 例如:使用columns = 2 ;主机的图片数量为400 ;vsize= 400/2=200 ;
# 当vsize大于100 ,执行脚本会报错。 那么就需要将columns 改成 4 ,vsize = 400/4=100

脚本运行:
表格格式参考 zabbix批量添加主机:http://blog.51cto.com/506554897/2350269

原文地址:http://blog.51cto.com/506554897/2350491

时间: 2024-10-08 22:03:02

zabbix批量创建聚合图形的相关文章

使用python脚本创建zabbix screen(聚合图形)。

原文章:http://11072687.blog.51cto.com/11062687/1739870 最近发现一篇文章<使用zabbix api创建screen>,然后下载脚本进行测式,发现二个问题: 1. 不支持3.x版本. 2. 添加的screen的主机名称不是按顺序排列,不方便查询. 便自己修改了一下,让支持zabbix3.x版本,并输出的screen(聚合图形)按机器名称排列. #!/bin/env python import json import urllib2 import a

分布式监控系统Zabbix-批量添加聚合图形

之前部署了Zabbix(3.4.4版本)监控环境,由于主机比较多,分的主机组也比较多,添加聚合图形比较麻烦,故采用python脚本进行批量添加聚合图形.脚本下载地址:https://pan.baidu.com/s/1bpApIPp  (密码:wpts)脚本操作如下: [[email protected] ~]# cd /opt/ [[email protected] opt]# ls create_Disk_space_usage_screen.py create_screen.py =====

zabbix-3.0.18关联模板、配置聚合图形和幻灯片展示

一.关联模板 二.创建图形1.创建正常类别图形 2.预览图形 三.创建聚合图形 1.创建聚合图形名称 2.构造图形 四.幻灯片展示1.创建幻灯片图形2.展示效果 原文地址:http://blog.51cto.com/437549/2132212

zabbix专题:第七章 添加图像Graphs,添加聚合图形Screens

zabbix专题:第七章 添加图像Graphs,添加展示屏Screens 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 本节目录大纲 添加图像Graphs 添加聚合图形Screens 添加图像Graphs 如果我们想显示多个信息到一个图表上,那必须使用zabbix自定义图表功能,比如,我 们最常用的网卡流量监控,一张流量图上会包含进/出的流量信息.一个图表的数据可以来源一台主机,也可以来源于多台主机 创

青蛙学Linux&mdash;Zabbix Web使用之模板⑤图形、聚合图形和Web场景

1.模板中图形的配置 Zabbix可以将收集到的监控项数据绘制成图形为我们进行展示.这里通过查看模板Template OS Linux中的图形来进行介绍. 在Template OS Linux模板中点击图形,进入图形配置页面: 在这里可以对现有的图形进行修改,也可以点击"创建图形"按钮新建一个图形.这里通过查看CPU jumps的图形配置来进行介绍.点击"CPU jumps"链接,进入CPU jumps图形配置页面: 这里可以设置图形的宽度和高度.图形的样式.出图的

在VMware Workstation中批量创建上千台虚拟机(上)

VMware Workstation 是我们经常使用的虚拟机软件,其功能强大,性能较好.大多数用户都会在"图形界面"中创建虚拟机.修改虚拟机配置.添加虚拟机参数,或者使用"克隆"功能创建多个虚拟机,这些都无需介绍. 但是你有没有想过 ● 将 VMware Workstation 创建的虚拟机,供网络中其他用户使用呢? ● 如果你想使用模板,创建几十.上百甚至上千个虚拟机,怎样才能做到呢? 本节通过两个具体的案例介绍这些应用. [说明] 这是"使用VMwar

zabbix 批量web url监控

通过zabbix批量监控 web url,脚本借鉴其他博友的,测试完全ok.自定义的key需要一台服务器部署,这边是放在zabbix_server端. 监控脚本如下: # cat web_site_code_status.sh  #!/bin/bash  # function:monitor tcp connect status from zabbix    source /etc/bashrc >/dev/null 2>&1  source /etc/profile  >/de

在centos6.7上安装kvm,批量创建虚拟机

实验环境:dell r710 linux系统使用centos6.7 内存32G,硬盘800G 服务器主机:172.18.204.1 kickstart文件主机:172.18.11.115 ]# modprobe kvm ]# lsmod |grep kvm 显示如下即可继续: 验证:如下文件存在即可 ]# ls /dev/kvm 关闭selinux: ]# vim /etc/sysconfig/selinux selinux=dsabled ]# service NetworkManager s

在VMware Workstation中批量创建上千台虚拟机(下)

2 快速克隆100台Workstation虚拟机方法 在上一节的内容中,无论是创建"完全克隆"的虚拟机还是"克隆链接"的虚拟机,都是在VMware Workstation的图形界面中以向导的方式创建的,每次创建一个虚拟机都需要多个步骤才能完成.在创建的虚拟机数量有限的情况下,使用图形界面创建虚拟机还可以接受,如果需要批量创建多台虚拟机,例如创建几十台.上百台甚至上千台虚拟机时,反复的操作会让人"崩溃".本文介绍采用VMware 提供的命令行工具v