利用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