change: added host creation and removal scripts to test the loaded server
This commit is contained in:
68
zabbix-tests/host-cleanup.py
Executable file
68
zabbix-tests/host-cleanup.py
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/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"
|
||||
GROUP_ID = "19"
|
||||
BATCH_SIZE = 100
|
||||
HOST_PATTERN = "dummy-host-"
|
||||
|
||||
HEADERS = {
|
||||
"Content-Type": "application/json-rpc",
|
||||
"Authorization": f"Bearer {ZABBIX_TOKEN}"
|
||||
}
|
||||
|
||||
def zbx_request(method, params):
|
||||
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"API error: {resp['error']}")
|
||||
return resp
|
||||
|
||||
def cleanup_hosts():
|
||||
# Get all hosts in the group
|
||||
resp = zbx_request("host.get", {
|
||||
"groupids": [GROUP_ID],
|
||||
"output": ["hostid", "host"]
|
||||
})
|
||||
|
||||
# Filter hosts that contain the dummy pattern
|
||||
hosts = [h for h in resp.get("result", []) if HOST_PATTERN in h["host"]]
|
||||
|
||||
if not hosts:
|
||||
print("No dummy hosts found")
|
||||
return
|
||||
|
||||
print(f"Deleting {len(hosts)} hosts")
|
||||
|
||||
# Delete in batches
|
||||
host_ids = [h["hostid"] for h in hosts]
|
||||
total_deleted = 0
|
||||
|
||||
for i in range(0, len(host_ids), BATCH_SIZE):
|
||||
batch = host_ids[i:i + BATCH_SIZE]
|
||||
try:
|
||||
resp = zbx_request("host.delete", batch)
|
||||
deleted = len(resp.get("result", {}).get("hostids", []))
|
||||
total_deleted += deleted
|
||||
print(f"Deleted batch {i//BATCH_SIZE + 1}: {deleted} hosts")
|
||||
except Exception as e:
|
||||
print(f"Error in batch {i//BATCH_SIZE + 1}: {e}")
|
||||
|
||||
if i + BATCH_SIZE < len(host_ids):
|
||||
time.sleep(0.5)
|
||||
|
||||
print(f"Total deleted: {total_deleted}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
cleanup_hosts()
|
||||
77
zabbix-tests/host-creator.py
Executable file
77
zabbix-tests/host-creator.py
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/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}")
|
||||
Reference in New Issue
Block a user