· 5 years ago · Dec 15, 2020, 10:26 AM
1#!/usr/bin/python
2
3from pyzabbix import ZabbixAPI
4from datetime import datetime
5
6zapi = ZabbixAPI("http://10.0.0.8/zabbix")
7zapi.login("Admin", "zabbix")
8print "Connected to Zabbix API Version %s" % zapi.api_version()
9
10hostname_to_add_rules = '10.0.0.10'
11db_name = 'test2'
12ldd_name_postfix = '_test2'
13
14host_obj = zapi.host.get(filter={"host": hostname_to_add_rules})
15host_id = host_obj[0]["hostid"]
16
17zapi.host.update( hostid = host_id, macros = [{"macro" : "{$PG_DB2}", "value" : db_name}] )
18## zapi.host.update (hostid = host_id, status = 1)
19## print host_id
20
21ldd_collection = zapi.discoveryrule.get(filter={"name": 'Discover PostgreSQL Tables', "hostid": host_id}) + \
22zapi.discoveryrule.get(filter={"name": 'Discover PostgreSQL Indexes', "hostid": host_id})
23for ldd_obj in ldd_collection:
24 key_to_add = ldd_obj["key_"]
25 key_to_add = key_to_add.replace ('{$PG_DB}','{$PG_DB2}')
26 name_to_add = ldd_obj["name"] + ldd_name_postfix
27 ##### debug
28 ## key_to_add = key_to_add.replace ('{$PG_DB2}', '{$PG_DB2}' + str(datetime.now()))
29 ## name_to_add = ldd_obj["name"] + ldd_name_postfix + str(datetime.now())
30 ##### debug
31 ldd_obj_to_add = zapi.discoveryrule.create( \
32 name = name_to_add, \
33 key_ = key_to_add, \
34 hostid = host_id, \
35 type = ldd_obj["type"], \
36 interfaceid = ldd_obj["interfaceid"], \
37 delay = ldd_obj["delay"], \
38 authtype = ldd_obj["authtype"], \
39 lifetime = ldd_obj["lifetime"], \
40 params = ldd_obj["params"], \
41 status = ldd_obj["status"], \
42 description=" NB(!) This rule was created automatically as a copy of '" + ldd_obj["name"] + "' rule"
43 )
44 print "Discovery rule '" + name_to_add + "' created!"
45
46 ldd_obj_new = zapi.discoveryrule.get(filter={"name": name_to_add}, hostid = host_id)
47 item_prototype_collection = zapi.itemprototype.get(hostid = host_id, discoveryids = ldd_obj["itemid"])
48 for item_pr_obj in item_prototype_collection:
49 key_to_add = item_pr_obj["key_"]
50 key_to_add = key_to_add.replace ('{#DATABASE}','{$PG_DB2}')
51 item_pr_obj_to_add = zapi.itemprototype.create( \
52 name = item_pr_obj["name"], \
53 key_ = key_to_add, \
54 hostid = item_pr_obj["hostid"], \
55 delay = item_pr_obj["delay"], \
56 type = item_pr_obj["type"], \
57 interfaceid = item_pr_obj["interfaceid"],\
58 value_type = item_pr_obj["value_type"], \
59 ruleid = ldd_obj_new[0]["itemid"], \
60 authtype = item_pr_obj["authtype"], \
61 data_type = item_pr_obj["data_type"], \
62 delay_flex = item_pr_obj["delay_flex"], \
63 delta = item_pr_obj["delta"], \
64 formula = item_pr_obj["formula"], \
65 history = item_pr_obj["history"], \
66 logtimefmt = item_pr_obj["logtimefmt"], \
67 multiplier = item_pr_obj["multiplier"], \
68 params = item_pr_obj["params"], \
69 status = item_pr_obj["status"], \
70 trends = item_pr_obj["trends"], \
71 units = item_pr_obj["units"] \
72 )
73 print "Items prototype '" + key_to_add +"' created!"
74