利用python3 调用zabbix接口完成批量加聚合图形(screens)

Posted zfyolo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用python3 调用zabbix接口完成批量加聚合图形(screens)相关的知识,希望对你有一定的参考价值。

在上一篇博客中,我们完成的利用python3 调用zabbix接口批量增加主机,增加主机的item,增加主机的图形!

接下来我们完成批量增加主机的screen

首先我们要增加screen需要哪些参数呢?官方的解释如下:

{
    "jsonrpc": "2.0",
    "method": "screen.create",
    "params": {
        "name": "Graphs",
        "hsize": 3,
        "vsize": 2,
        "screenitems": [
            {
                "resourcetype": 0,
                "resourceid": "612",
                "rowspan": 0,
                "colspan": 0,
                
            }
        ]
    },
    "auth": "038e1d7b1735c6a5436ee9eae095879e",
    "id": 1
}

  这里面的参数大致意思如下:

  hsize:水平尺寸  可以简单的理解为 这个聚合图形最多可以有多少行

  vsize:垂直尺寸   同理,这个聚合图形最多可以有多少列

  resourcetye :图形的类型  0 代表graph  1 简单graph 2 文本 。。。。

  resourceid :ID of the screen that the item belongs to. 也就是说需要加入的图形它的ID是说少

  rowspan:屏幕项目将跨越的行数。

  colspan:屏幕项目将跨越的列数。  意思就是图形占多少行多少列  这里 默认为0就行  不需要太大

  x:

  y:  这里的x y代表的是图形的坐标 0 0 就是第一行第一列  0 1 第一行第二列 依次类推(这里需要依靠前面设置的hsize,vsize不能超过了),我在测试的时候这里面体比较大,想要把多个监控放在一行:解决办法是x相同y不同

  auth : 认证信息

  id : 识别方法

了解了方法之后我们发现想要添加聚合图形,我们得 auth  以及  resourceid  这两个重要参数!所以我们第一步就是去找到这两个参数!!

    def __init__(self):
        self.url = http://192.168.230.164/zabbix/api_jsonrpc.php
        self.headers = {Content-Type: application/json}
        auth = {
            "jsonrpc": "2.0",
            "method": "user.login",
            "params": {
                "user": "Admin", ###验证
                "password":"zfno11"
            },
            "id": 1,
            "auth":None,
        }
        response = requests.post(self.url, data=json.dumps(auth), headers=self.headers)
        print(response.text)
        authid = json.loads(response.text)[result]  ### auth的id
        print(authid)

上面的方法得到了authid

然后获取resourceid  也就是图形的ID

 def get_graid(self,authid):
        neirong={
                "jsonrpc": "2.0",
                "method": "graph.get",
                "params": {
                    "output": "extend",
                    "hostids": 10255,
                    "sortfield": "name"
                },
                "auth": authid,
                "id": 1
        }
        response1 = requests.post(self.url, data=json.dumps(neirong), headers=self.headers)print(response1.text)

这里面需要填写我们的hostid  hostid的获取方法在上一章里面已经提到了,这里直接用就行了。

然后我们:

 def create_screen(self,authid):
        neirong={
                "jsonrpc": "2.0",
                "method": "screen.create",
                "params": {
                    "name": "Graphs12",
                    "hsize": 2,
                    "vsize": 2,
                    "screenitems": [
                        {
                            "resourcetype": 0,
                            "resourceid": "790",
                            "rowspan": 2,
                            "colspan": 2,
                            "x" : 0,
                            "y" : 0
                        },
                        {
                            "resourcetype": 0,
                            "resourceid": "793",
                            "x" :1,
                            "y" :0
                        }
                    ]
                },
                "auth": authid,
                "id": 1
            }
        response1 = requests.post(self.url, data=json.dumps(neirong), headers=self.headers)
        print(response1)
        print(response1.text)
        print("OK")

通过这样就可以把screen的图形加上了!

 

 

 

 

  

    

 

以上是关于利用python3 调用zabbix接口完成批量加聚合图形(screens)的主要内容,如果未能解决你的问题,请参考以下文章

python3调用zabbix api接口对自动发现添加的主机修改主机名

Python调用Zabbix API接口批量修改(禁用/启用)触发器trigger

zabbix利用api批量添加item,并且批量配置添加graph

Zabbix 调用API 批量添加主机等

调用zabbix API实现批量管理主机及个监控项

python3.6 批量创建 多台阿里云ECS主机 示例