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


关于zabbix的API见,zabbixAPI

1item批量添加

我是根据我这边的具体情况来做的,本来想在模板里面添加item,但是看了看API不支持,只是支持在host里面添加,所以我先在一个host里面添加,然后在将item全部移动到模板里。

具体步骤就不说了,直接上代码:

为了快速完成,代码写的有点乱,也没怎么处理异常,算是第一版吧,有时间在优化  1 #!/usr/bin/env python

 2 #-*- coding: utf-8 -*-
 3 
 4 import json  5 import sys  6 import urllib2  7 import argparse  8 from urllib2 import URLError  9 
 10 reload(sys)  11 sys.setdefaultencoding('utf-8')  12 
 13 class zabbix_api:  14  def __init__(self):  15  #self.url  16         #self.url = 'http://zabbix.weimob.com/api_jsonrpc.php'
 17         self.url = 'http://xxxxxx/api_jsonrpc.php' #zabbix地址
 18         self.header = {"Content-Type":"application/json"}  19  def user_login(self):  20         data = json.dumps({  21                            "jsonrpc": "2.0",  22                            "method": "user.login",  23                            "params": {  24                                       "user": "admin", #账号  25                                       "password": "admin" #密码
 26  },  27                            "id": 0
 28  })  29 
 30         request = urllib2.Request(self.url, data)  31 
 32         for key in self.header:  33  request.add_header(key, self.header[key])  34 
 35         try:  36             result = urllib2.urlopen(request)  37         except URLError as e:  38             print "\033[041m 认证失败,请检查URL !\033[0m",e.code  39         except KeyError as e:  40             print "\033[041m 认证失败,请检查用户名密码 !\033[0m",e  41         else:  42             response = json.loads(result.read())  43  result.close()  44             #print response['result']  45             self.authID = response['result']  46             return self.authID  47     def host_get(self,hostName=''):  48         data=json.dumps({  49                 "jsonrpc": "2.0",  50                 "method": "host.get",  51                 "params": {  52                           "output": "extend",  53                           #"output": "selectInterfaces",  54                           #"filter":{"host":""}  55                           "filter":{"host":hostName}  56  },  57                 "auth": self.user_login(),  58                 "id": 1
 59  })  60         request = urllib2.Request(self.url,data)  61         for key in self.header:  62  request.add_header(key, self.header[key])  63 
 64         try:  65             result = urllib2.urlopen(request)  66         except URLError as e:  67             if hasattr(e, 'reason'):  68                 print 'We failed to reach a server.'
 69                 print 'Reason: ', e.reason  70             elif hasattr(e, 'code'):  71                 print 'The server could not fulfill the request.'
 72                 print 'Error code: ', e.code  73         else:  74             response = json.loads(result.read())  75  #print reqponse  76  result.close()  77 
 78 
 79             #print "主机数量: \033[31m%s\033[0m"%(len(response['result']))  80  #print response  81             #print response['result']  82             #print response['result']['templateid']  83             for host in response['result']:  84                 #print host['hostid']  85                 c=host['hostid']  86             return c  87 
 88 
 89  def host_interin(self,host_id):  90 
 91         data=json.dumps({  92                      "jsonrpc": "2.0",  93                      "method": "hostinterface.get",  94                      "params": {  95                           "output": "extend",  96                            #"hostids": "11270",  97                             "hostids": host_id,  98                            #"filter":{"host":hostip},  99 
100  }, 101                      "auth": self.user_login(), 102                         "id": 1
103  }) 104         request = urllib2.Request(self.url,data) 105         for key in self.header: 106  request.add_header(key, self.header[key]) 107 
108         try: 109             result = urllib2.urlopen(request) 110         except URLError as e: 111             if hasattr(e, 'reason'): 112                 print 'We failed to reach a server.'
113                 print 'Reason: ', e.reason 114             elif hasattr(e, 'code'): 115                 print 'The server could not fulfill the request.'
116                 print 'Error code: ', e.code 117         else: 118             response = json.loads(result.read()) 119  #print reqponse 120  result.close() 121  #print response 122             #print response['result'] 123             for host in response['result']: 124                 b=host['interfaceid'] 125         return b 126 
127  def create_item(self,hostid,interfaceid,key_name,key): 128  #def create_item(self): 129         data = json.dumps({ 130                            "jsonrpc": "2.0", 131                            "method": "item.create", 132                            "params":{ 133                                #"name": "pingsd", 134                                "name": key_name, 135                                #"key_": "pingsd_Ip", 136                                "key_":key, 137                                #"hostid": "11270", 138                                "hostid": hostid, 139                                #"interfaceid": "1206", 140                                "interfaceid": interfaceid, 141                                 #"templateid": "11668", 142                                 "type": 0, 143                                 "value_type": 0, 144                                "date_type": 0, 145                                "delay": 60, 146                                "history": 7, 147                                "trends": 90, 148                                "status": 0, 149                                "applications": [ 150                                    "18211"
151  ], 152  }, 153                            "auth": self.user_login(), 154                            "id":1
155  }) 156         request = urllib2.Request(self.url, data) 157         for key in self.header: 158  request.add_header(key, self.header[key]) 159 
160         try: 161             result = urllib2.urlopen(request) 162             response = json.loads(result.read()) 163  result.close() 164             print 'success'
165  print response 166             #for host in response['result']: 167  #print 168  except Exception,e: 169  print e 170  def get_application(self): 171         data=json.dumps({ 172             "jsonrpc": "2.0", 173              "method": "application.get", 174               "params": { 175               "output": "extend", 176               "hostids": "11270", 177               "sortfield": "name"
178  }, 179              "auth": self.user_login(), 180              "id": 1
181  }) 182 
183         request = urllib2.Request(self.url,data) 184         for key in self.header: 185  request.add_header(key, self.header[key]) 186 
187         try: 188             result = urllib2.urlopen(request) 189         except URLError as e: 190             if hasattr(e, 'reason'): 191                 print 'We failed to reach a server.'
192                 print 'Reason: ', e.reason 193             elif hasattr(e, 'code'): 194                 print 'The server could not fulfill the request.'
195                 print 'Error code: ', e.code 196         else: 197             response = json.loads(result.read()) 198  #print reqponse 199  result.close() 200  print response 201             for host in response['result']: 202                 print host['applicationid'] 203                 print host['name'] 204  def graph_create(self,ping_id,loss_id,ping_name): 205         data = json.dumps({ 206                        "jsonrpc": "2.0", 207                         "method": "graph.create", 208                        "params": { 209                         "name": ping_name, 210                         "width": 900, 211                         "height": 200, 212                        "gitems": [ 213  { 214                           "itemid": ping_id, 215                            "color": "00AA00", 216                            "sortorder": "0"
217  }, 218  { 219                         "itemid": loss_id, 220                         "color": "3333FF", 221                          "sortorder": "1"
222  } 223  ] 224  }, 225                    "auth": self.user_login(), 226                   "id": 1
227  }) 228         request = urllib2.Request(self.url, data) 229         for key in self.header: 230  request.add_header(key, self.header[key]) 231 
232         try: 233             result = urllib2.urlopen(request) 234             response = json.loads(result.read()) 235  result.close() 236             print 'success'
237  print response 238  except Exception,e: 239  print e 240  def get_item_id(self,hostid): 241         data=json.dumps({ 242 
243                       "jsonrpc": "2.0", 244                        "method": "item.get", 245                        "params": { 246                           "output": "extend", 247                           "hostids": hostid, 248                      #"search": { 249                      #"key_": "system"
250  # }, 251                       "sortfield": "name"
252  }, 253                        "auth": self.user_login(), 254                          "id": 1, 255  }) 256 
257         request = urllib2.Request(self.url,data) 258         for key in self.header: 259  request.add_header(key, self.header[key]) 260 
261         try: 262             result = urllib2.urlopen(request) 263         except URLError as e: 264             if hasattr(e, 'reason'): 265                 print 'We failed to reach a server.'
266                 print 'Reason: ', e.reason 267             elif hasattr(e, 'code'): 268                 print 'The server could not fulfill the request.'
269                 print 'Error code: ', e.code 270         else: 271             response = json.loads(result.read()) 272  #print reqponse 273  result.close() 274  print response 275             for host in response['result']: 276                 print host['itemid'],host['name'] 277 
278  #print 279 
280 
281 obj = zabbix_api() 282 #ret=obj.host_get('txgzvpc2') 283 #print ret 284 #obj.get_item_id(ret)
300 print "===================创建graph========================="
301 with open("ping_or") as f: 302     ping_id1=[(r.rstrip("\r\n")) for r in f.readlines()] 303 with open("loss_or") as f: 304     loss_id1=[(r.rstrip("\r\n")) for r in f.readlines()] 305 with open('file1') as f: 306     ip=[(r.rstrip("\r\n")) for r in f.readlines()] 307 for i in range(len(ping_id1)): 308  print ping_id1[i],loss_id1[i],ip[i] 309  obj.graph_create(ping_id1[i],loss_id1[i],ip[i]) 310 print "=====================创建graph=============================="
311 #说明:file里面是graph的名字。ping_or,losss_or分别是itemid
312 #for key in hosfile: 313 
314 # print key 315  # print ip 316  #obj.graph_create(key,hosfile[key]) 317 
318 #ret1=obj.host_interin(ret) 319 #print ret1 320 #obj.get_application() 321 #obj.create_item() 322 
323 ''' 324 file1=sys.argv[1] 325 file2=sys.argv[2] 326 file3=sys.argv[3] 327 
328 ip=open(file1,'r').readline().strip('\r\n') 329 ping_id1=open(file2,'r').readline().strip('\r\n') 330 loss_id1=open(file3,'r').readline().strip('\r\n') 331 ret=obj.host_get('txgzvpc25') 332 print ret 333 ret1=obj.host_interin(ret) 334 print ret1 335 ''' 336 ''' 337 print "==============添加item======================================="
338 if __name__ == '__main__': 339     obj = zabbix_api() 340     ret=obj.host_get('alivpx11-88') #主机的hostname 341  print ret 342     ret1=obj.host_interin(ret) 343  print ret1 344     with open ('file','rb') as f: #file里面是key和那个名字,我这里为了方便,让他们一样了 345             for i in f.readlines(): 346                 obj.create_item(ret,ret1,i.strip('\r\n'),i.strip('\r\n')) 347 
348 print "==============添加item======================================="
349 ''' 350 
351 
352 
353 
354 
355 
356 
357 
358 
359 
360 ''' 361 
362 
363 
364 
365 
366 
367 
368 
369 
370 
371 
372 
373 
374 
375 
376 
377 
378  def graph_create(self): 379         data = json.dumps({ 380                        "jsonrpc": "2.0", 381                         "method": "graph.create", 382                        "params": { 383                         "name": "MySQL bandwidth", 384                         "width": 900, 385                         "height": 200, 386                        "gitems": [ 387  { 388                           "itemid": "22828", 389                            "color": "00AA00", 390                            "sortorder": "0"
391  }, 392  { 393                         "itemid": "22829", 394                         "color": "3333FF", 395                          "sortorder": "1"
396  } 397  ] 398  }, 399                    "auth": "038e1d7b1735c6a5436ee9eae095879e", 400                   "id": 1
401  }) 402         request = urllib2.Request(self.url, data) 403         for key in self.header: 404  request.add_header(key, self.header[key]) 405 
406         try: 407             result = urllib2.urlopen(request) 408             response = json.loads(result.read()) 409  result.close() 410             print 'success'
411  except Exception,e: 412  print e 413 ''' 414 ''' 415 if __name__ == '__main__': 416 
417     obj = zabbix_api() 418 #ret=obj.create_item() 419 #print ret 420     ret=obj.host_get('txgzvpc1-1') 421 print ret 422 #obj.host_interin('x.x.x.x') 423 ''' 424 ''' 425  def get_template_id(self): 426         data=json.dumps({ 427             "jsonrpc": "2.0", 428              "method": "template.get", 429               "params": { 430              "output": "extend", 431              "filter": { 432               "host": [ 433                 "ceshitemplate", 434  ] 435  } 436  }, 437              "auth": self.user_login(), 438              "id": 1
439  }) 440 
441         request = urllib2.Request(self.url,data) 442         for key in self.header: 443  request.add_header(key, self.header[key]) 444 
445         try: 446             result = urllib2.urlopen(request) 447         except URLError as e: 448             if hasattr(e, 'reason'): 449                 print 'We failed to reach a server.'
450                 print 'Reason: ', e.reason 451             elif hasattr(e, 'code'): 452                 print 'The server could not fulfill the request.'
453                 print 'Error code: ', e.code 454         else: 455             response = json.loads(result.read()) 456  #print reqponse 457  result.close() 458  print response 459             for host in response['result']: 460                 print host['templateid'] 461 
462  def get_application(self): 463         data=json.dumps({ 464             "jsonrpc": "2.0", 465              "method": "application.get", 466               "params": { 467               "output": "extend", 468               "hostids": "11270", 469               "sortfield": "name"
470  }, 471              "auth": self.user_login(), 472              "id": 1
473  }) 474 
475         request = urllib2.Request(self.url,data) 476         for key in self.header: 477  request.add_header(key, self.header[key]) 478 
479         try: 480             result = urllib2.urlopen(request) 481         except URLError as e: 482             if hasattr(e, 'reason'): 483                 print 'We failed to reach a server.'
484                 print 'Reason: ', e.reason 485             elif hasattr(e, 'code'): 486                 print 'The server could not fulfill the request.'
487                 print 'Error code: ', e.code 488         else: 489             response = json.loads(result.read()) 490  #print reqponse 491  result.close() 492  print response 493             for host in response['result']: 494                 print host['applicationid'] 495                 print host['name'] 496 ''' 497 #obj.host_interin('x.x.x.x') 498 #obj.get_template_id() 499 #obj.get_application() 500 
501
285 '''
286 hosfile=dict()
287 with open("ping_or") as f: 288 ping_id1=[(r.rstrip("\r\n")) for r in f.readlines()] 289 print ping_id1 290 291 with open("loss_or") as f: 292 loss_id1=[(r.rstrip("\r\n")) for r in f.readlines()] 293 print loss_id1 294 for i in range(len(ping_id1)): 295 hosfile[ping_id1[i]]=loss_id1[i] 296 297 print hosfile 298 '''
502 50

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM