在上一篇博客中,我们完成的利用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的idprint(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的图形加上了!