@@ -1,12 +1,12 @@
|
||||
FROM python:2.7
|
||||
FROM python:3.12-slim-bullseye
|
||||
|
||||
ENV ZBX_API_URL=http://zabbix-web:8080
|
||||
ENV ZBX_API_USER="Admin"
|
||||
ENV ZBX_API_PASSWORD="zabbix"
|
||||
ENV ZBX_CONFIG="zbx_export_hosts.xml"
|
||||
ENV ZBX_CONFIG="zbx_export_hosts.json"
|
||||
ENV ZBX_BOOTSTRAP_SCRIPT="bootstrap_config.py"
|
||||
|
||||
RUN pip install pyzabbix
|
||||
RUN pip install zabbix_utils
|
||||
|
||||
ADD ./bootstrap_config.py /bootstrap_config.py
|
||||
ADD ${ZBX_CONFIG} /${ZBX_CONFIG}
|
||||
|
||||
@@ -1,27 +1,20 @@
|
||||
import os
|
||||
from time import sleep
|
||||
from pyzabbix import ZabbixAPI, ZabbixAPIException
|
||||
from zabbix_utils import ZabbixAPI
|
||||
|
||||
zabbix_url = os.environ['ZBX_API_URL']
|
||||
zabbix_user = os.environ['ZBX_API_USER']
|
||||
zabbix_password = os.environ['ZBX_API_PASSWORD']
|
||||
print(zabbix_url, zabbix_user, zabbix_password)
|
||||
|
||||
zapi = ZabbixAPI(zabbix_url, timeout=5)
|
||||
zapi = ZabbixAPI(zabbix_url)
|
||||
|
||||
for i in range(10):
|
||||
print("Trying to connected to Zabbix API %s" % zabbix_url)
|
||||
try:
|
||||
zapi.login(zabbix_user, zabbix_password)
|
||||
zapi.login(user=zabbix_user, password=zabbix_password)
|
||||
print("Connected to Zabbix API Version %s" % zapi.api_version())
|
||||
break
|
||||
except ZabbixAPIException as e:
|
||||
print e
|
||||
sleep(5)
|
||||
except:
|
||||
print("Waiting")
|
||||
sleep(5)
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
config_path = os.environ['ZBX_CONFIG']
|
||||
import_rules = {
|
||||
@@ -70,11 +63,13 @@ with open(config_path, 'r') as f:
|
||||
config = f.read()
|
||||
|
||||
try:
|
||||
# https://github.com/lukecyca/pyzabbix/issues/62
|
||||
import_result = zapi.confimport("xml", config, import_rules)
|
||||
print(import_result)
|
||||
except ZabbixAPIException as e:
|
||||
print e
|
||||
import_result = zapi.configuration.import_(source=config, format="json", rules=import_rules)
|
||||
if import_result == True:
|
||||
print("Zabbix config imported successfully")
|
||||
else:
|
||||
print("Failed to import Zabbix config")
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
for h in zapi.host.get(output="extend"):
|
||||
print(h['name'])
|
||||
|
||||
427
devenv/zabbix70/bootstrap/zbx_export_hosts.json
Normal file
427
devenv/zabbix70/bootstrap/zbx_export_hosts.json
Normal file
@@ -0,0 +1,427 @@
|
||||
{
|
||||
"zabbix_export": {
|
||||
"version": "7.0",
|
||||
"host_groups": [
|
||||
{
|
||||
"uuid": "2e427c268ac1468b9add94b65e2d6c14",
|
||||
"name": "Backend"
|
||||
},
|
||||
{
|
||||
"uuid": "d97ba66b283544339628b71975a6e68d",
|
||||
"name": "Frontend"
|
||||
},
|
||||
{
|
||||
"uuid": "dc579cd7a1a34222933f24f52a68bcd8",
|
||||
"name": "Linux servers"
|
||||
},
|
||||
{
|
||||
"uuid": "6f6799aa69e844b4b3918f779f2abf08",
|
||||
"name": "Zabbix servers"
|
||||
}
|
||||
],
|
||||
"hosts": [
|
||||
{
|
||||
"host": "backend01",
|
||||
"name": "backend01",
|
||||
"templates": [
|
||||
{
|
||||
"name": "Template ZAS Agent"
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Backend"
|
||||
},
|
||||
{
|
||||
"name": "Linux servers"
|
||||
}
|
||||
],
|
||||
"interfaces": [
|
||||
{
|
||||
"useip": "NO",
|
||||
"dns": "zas_backend_01",
|
||||
"interface_ref": "if1"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
{
|
||||
"tag": "backend"
|
||||
},
|
||||
{
|
||||
"tag": "service",
|
||||
"value": "backend"
|
||||
}
|
||||
],
|
||||
"inventory_mode": "DISABLED"
|
||||
},
|
||||
{
|
||||
"host": "backend02",
|
||||
"name": "backend02",
|
||||
"templates": [
|
||||
{
|
||||
"name": "Template ZAS Agent"
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Backend"
|
||||
},
|
||||
{
|
||||
"name": "Linux servers"
|
||||
}
|
||||
],
|
||||
"interfaces": [
|
||||
{
|
||||
"useip": "NO",
|
||||
"dns": "zas_backend_02",
|
||||
"interface_ref": "if1"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
{
|
||||
"tag": "backend"
|
||||
},
|
||||
{
|
||||
"tag": "service",
|
||||
"value": "backend"
|
||||
}
|
||||
],
|
||||
"inventory_mode": "DISABLED"
|
||||
},
|
||||
{
|
||||
"host": "frontend01",
|
||||
"name": "frontend01",
|
||||
"templates": [
|
||||
{
|
||||
"name": "Template ZAS Agent"
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Frontend"
|
||||
},
|
||||
{
|
||||
"name": "Linux servers"
|
||||
}
|
||||
],
|
||||
"interfaces": [
|
||||
{
|
||||
"useip": "NO",
|
||||
"dns": "zas_frontend_01",
|
||||
"interface_ref": "if1"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
{
|
||||
"tag": "frontend"
|
||||
},
|
||||
{
|
||||
"tag": "service",
|
||||
"value": "frontend"
|
||||
}
|
||||
],
|
||||
"inventory_mode": "DISABLED"
|
||||
},
|
||||
{
|
||||
"host": "frontend02",
|
||||
"name": "frontend02",
|
||||
"templates": [
|
||||
{
|
||||
"name": "Template ZAS Agent"
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Frontend"
|
||||
},
|
||||
{
|
||||
"name": "Linux servers"
|
||||
}
|
||||
],
|
||||
"interfaces": [
|
||||
{
|
||||
"useip": "NO",
|
||||
"dns": "zas_frontend_02",
|
||||
"interface_ref": "if1"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
{
|
||||
"tag": "frontend"
|
||||
},
|
||||
{
|
||||
"tag": "service",
|
||||
"value": "frontend"
|
||||
}
|
||||
],
|
||||
"inventory_mode": "DISABLED"
|
||||
},
|
||||
{
|
||||
"host": "Zabbix server",
|
||||
"name": "Zabbix server",
|
||||
"templates": [
|
||||
{
|
||||
"name": "Linux by Zabbix agent"
|
||||
},
|
||||
{
|
||||
"name": "Zabbix server health"
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Zabbix servers"
|
||||
}
|
||||
],
|
||||
"interfaces": [
|
||||
{
|
||||
"useip": "NO",
|
||||
"dns": "zabbix-agent",
|
||||
"interface_ref": "if1"
|
||||
}
|
||||
],
|
||||
"inventory_mode": "DISABLED"
|
||||
}
|
||||
],
|
||||
"template_groups": [
|
||||
{
|
||||
"uuid": "7df96b18c230490a9a0a9e2307226338",
|
||||
"name": "Templates"
|
||||
}
|
||||
],
|
||||
"templates": [
|
||||
{
|
||||
"uuid": "2d7a65bb369c48199361913b223b1695",
|
||||
"template": "Template ZAS Agent",
|
||||
"name": "Template ZAS Agent",
|
||||
"templates": [
|
||||
{
|
||||
"name": "Zabbix agent"
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Templates"
|
||||
}
|
||||
],
|
||||
"items": [
|
||||
{
|
||||
"uuid": "e79d4215ec014b74923b905bb8f82410",
|
||||
"name": "Incoming network traffic on eth0",
|
||||
"key": "net.if.in[eth0]",
|
||||
"history": "1d",
|
||||
"units": "bps",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "Network interfaces"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"uuid": "18b377dae9fe48d093c16ee7a7c93320",
|
||||
"name": "Outgoing network traffic on eth0",
|
||||
"key": "net.if.out[eth0]",
|
||||
"history": "1d",
|
||||
"units": "bps",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "Network interfaces"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"uuid": "2479e055e91c476f9be93b5f363cfa2f",
|
||||
"name": "Processor load (1 min average per core)",
|
||||
"key": "system.cpu.load[percpu,avg1]",
|
||||
"history": "1d",
|
||||
"value_type": "FLOAT",
|
||||
"description": "The processor load is calculated as system CPU load divided by number of CPU cores.",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "CPU"
|
||||
},
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "Performance"
|
||||
}
|
||||
],
|
||||
"triggers": [
|
||||
{
|
||||
"uuid": "60e5484b60ca4061b21bd23f8364bd6e",
|
||||
"expression": "last(/Template ZAS Agent/system.cpu.load[percpu,avg1])>2",
|
||||
"name": "Processor load is too high on {HOST.NAME}",
|
||||
"priority": "WARNING",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "app",
|
||||
"value": "performance"
|
||||
},
|
||||
{
|
||||
"tag": "type",
|
||||
"value": "cpu"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"uuid": "f0dd4221793c49889cf2789806afa597",
|
||||
"name": "Processor load (15 min average per core)",
|
||||
"key": "system.cpu.load[percpu,avg15]",
|
||||
"history": "1d",
|
||||
"value_type": "FLOAT",
|
||||
"description": "The processor load is calculated as system CPU load divided by number of CPU cores.",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "CPU"
|
||||
},
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "Performance"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"uuid": "9a8b4a1f173b4f209723d820dc2e054a",
|
||||
"name": "CPU $2 time",
|
||||
"key": "system.cpu.util[,iowait]",
|
||||
"history": "1d",
|
||||
"value_type": "FLOAT",
|
||||
"units": "%",
|
||||
"description": "Amount of time the CPU has been waiting for I/O to complete.",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "CPU"
|
||||
},
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "Performance"
|
||||
}
|
||||
],
|
||||
"triggers": [
|
||||
{
|
||||
"uuid": "ceb468b9eb434fa6bd4c8a5d7507fd87",
|
||||
"expression": "avg(/Template ZAS Agent/system.cpu.util[,iowait],5m)>20",
|
||||
"name": "Disk I/O is overloaded on {HOST.NAME}",
|
||||
"priority": "WARNING",
|
||||
"description": "OS spends significant time waiting for I/O (input/output) operations. It could be indicator of performance issues with storage system.",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "disk"
|
||||
},
|
||||
{
|
||||
"tag": "type",
|
||||
"value": "disk"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"uuid": "e6d19d47cf60452ead1e791da2d5c0dc",
|
||||
"name": "CPU $2 time",
|
||||
"key": "system.cpu.util[,system]",
|
||||
"history": "1d",
|
||||
"value_type": "FLOAT",
|
||||
"units": "%",
|
||||
"description": "The time the CPU has spent running the kernel and its processes.",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "CPU"
|
||||
},
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "Performance"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"uuid": "2d81fbc139774306959712a627c99b9a",
|
||||
"name": "CPU $2 time",
|
||||
"key": "system.cpu.util[,user]",
|
||||
"history": "1d",
|
||||
"value_type": "FLOAT",
|
||||
"units": "%",
|
||||
"description": "The time the CPU has spent running users' processes that are not niced.",
|
||||
"tags": [
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "CPU"
|
||||
},
|
||||
{
|
||||
"tag": "Application",
|
||||
"value": "Performance"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"graphs": [
|
||||
{
|
||||
"uuid": "7aac0ec0c0e04b7a8bb6472d1faa7a09",
|
||||
"name": "CPU load",
|
||||
"ymin_type_1": "FIXED",
|
||||
"graph_items": [
|
||||
{
|
||||
"color": "009900",
|
||||
"item": {
|
||||
"host": "Template ZAS Agent",
|
||||
"key": "system.cpu.load[percpu,avg1]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"sortorder": "2",
|
||||
"color": "990000",
|
||||
"item": {
|
||||
"host": "Template ZAS Agent",
|
||||
"key": "system.cpu.load[percpu,avg15]"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"uuid": "f25064d88b964a678fac7ea6095b238a",
|
||||
"name": "CPU utilization",
|
||||
"show_triggers": "NO",
|
||||
"type": "STACKED",
|
||||
"ymin_type_1": "FIXED",
|
||||
"ymax_type_1": "FIXED",
|
||||
"graph_items": [
|
||||
{
|
||||
"sortorder": "4",
|
||||
"drawtype": "FILLED_REGION",
|
||||
"color": "999900",
|
||||
"item": {
|
||||
"host": "Template ZAS Agent",
|
||||
"key": "system.cpu.util[,iowait]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"sortorder": "5",
|
||||
"drawtype": "FILLED_REGION",
|
||||
"color": "990000",
|
||||
"item": {
|
||||
"host": "Template ZAS Agent",
|
||||
"key": "system.cpu.util[,system]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"sortorder": "6",
|
||||
"drawtype": "FILLED_REGION",
|
||||
"color": "000099",
|
||||
"item": {
|
||||
"host": "Template ZAS Agent",
|
||||
"key": "system.cpu.util[,user]"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user