78 lines
2.5 KiB
Python
Executable File
78 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
import requests
|
||
import json
|
||
import time
|
||
|
||
# === CONFIGURATION ===
|
||
ZABBIX_URL = "http://10.0.0.101:8887/api_jsonrpc.php"
|
||
ZABBIX_TOKEN = "c785634354e760a6843055ba4581bc7b6cd6eb2ec75f7c2a79f251c1719933f7"
|
||
PROXY_GROUP_ID = "1" # your proxy group ID
|
||
GROUP_ID = "19" # host group for these hosts
|
||
NUM_HOSTS = 1000 # number of hosts to create
|
||
BATCH_SIZE = 100 # how many to create per call
|
||
|
||
HEADERS = {
|
||
"Content-Type": "application/json-rpc",
|
||
"Authorization": f"Bearer {ZABBIX_TOKEN}"
|
||
}
|
||
|
||
def zbx_request(method, params):
|
||
"""Send Zabbix API request using Bearer token authentication."""
|
||
payload = {
|
||
"jsonrpc": "2.0",
|
||
"method": method,
|
||
"params": params,
|
||
"id": int(time.time())
|
||
}
|
||
r = requests.post(ZABBIX_URL, headers=HEADERS, data=json.dumps(payload))
|
||
r.raise_for_status()
|
||
resp = r.json()
|
||
if "error" in resp:
|
||
raise Exception(f"Zabbix API error: {resp['error']}")
|
||
return resp
|
||
|
||
def create_hosts():
|
||
hosts = []
|
||
for i in range(1, NUM_HOSTS + 1):
|
||
host_name = f"dummy-host-{i:04d}"
|
||
host = {
|
||
"host": host_name,
|
||
"interfaces": [{
|
||
"type": 1, # Zabbix agent
|
||
"main": 1,
|
||
"useip": 1,
|
||
"ip": "127.0.0.1",
|
||
"dns": "",
|
||
"port": "10050"
|
||
}],
|
||
"groups": [{"groupid": GROUP_ID}],
|
||
"templates": [{"templateid": "10048"}], # assign template ID 10048
|
||
"monitored_by": 2, # 2 = proxy group
|
||
"proxy_groupid": PROXY_GROUP_ID, # your proxy group ID
|
||
"items": [{
|
||
"name": "Dummy metric",
|
||
"key_": "dummy.value",
|
||
"type": 2, # trapper
|
||
"value_type": 0, # numeric float
|
||
"delay": "60s"
|
||
}]
|
||
}
|
||
hosts.append(host)
|
||
|
||
for i in range(0, len(hosts), BATCH_SIZE):
|
||
batch = hosts[i:i + BATCH_SIZE]
|
||
print(f"Creating hosts {i+1}–{i+len(batch)}...")
|
||
try:
|
||
resp = zbx_request("host.create", batch)
|
||
created = len(resp.get("result", {}).get("hostids", []))
|
||
print(f"✅ Created {created} hosts.")
|
||
except Exception as e:
|
||
print(f"❌ Error in batch {i+1}–{i+len(batch)}: {e}")
|
||
time.sleep(1)
|
||
|
||
if __name__ == "__main__":
|
||
try:
|
||
create_hosts()
|
||
except Exception as e:
|
||
print(f"Fatal error: {e}")
|