站長資訊網
        最全最豐富的資訊網站

        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 = 'https://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批量添加主機:https://blog.51cto.com/506554897/2350269

        zabbix批量創建聚合圖形

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 三级国产精品| 无码人妻精品一区二区三区久久 | 99精品国产丝袜在线拍国语| 毛片a精品**国产| 亚洲国产精品久久久久久| 精品人妻人人做人人爽 | 91麻豆精品一二三区在线| 久久国产精品一国产精品金尊| 久久99精品久久久久久秒播| 亚洲精品综合一二三区在线| 国产福利精品一区二区| 亚洲av午夜成人片精品网站| 欧美精品人爱a欧美精品| 国产精品第1页| 99热成人精品免费久久| 亚洲精品在线观看视频| 久久精品国内一区二区三区| 国产成人精品免费视频大全麻豆| 久久精品国产亚洲AV麻豆网站| 亚洲欧美日韩国产精品一区二区| 久久99亚洲综合精品首页| 国产成人无码精品久久久免费 | 99国产精品久久| 91精品国产综合久久精品| 漂亮人妻被黑人久久精品| 婷婷五月深深久久精品| 一本一本久久aa综合精品| 人妻无码精品久久亚瑟影视| 久久精品国产色蜜蜜麻豆| 精品一区二区三区色花堂| 精品久久国产一区二区三区香蕉| 国产精品原创巨作?v网站| 国产精品成人精品久久久| 国产乱码伦精品一区二区三区麻豆| 国产成人无码精品久久久免费| 隔壁老王国产在线精品| 国产福利精品视频自拍| 国产精品你懂的在线播放| 黑人巨大精品欧美一区二区| 欧美激情精品久久久久久久| 久久亚洲精品无码观看不卡|