Ответ
В Zabbix данные на дашбордах отображаются в реальном времени, подтягиваясь из базы данных по результатам работы сборщиков данных (Zabbix Agent, SNMP, JMX, HTTP-чеки) и обработки триггеров.
Полный цикл данных:
- Сбор: Zabbix Server опрашивает хосты через агентов или активные чеки, получая значения метрик (CPU load, свободная память, ответ приложения).
- Обработка: Полученные значения (
items) сохраняются в БД (обычно TimescaleDB поверх PostgreSQL). На основе этих значений вычисляются и срабатывают триггеры (например,{Host:system.cpu.load.avg(5m)}>5). - Визуализация: Дашборд — это просто представление. Каждый виджет на дашборде (график, карта проблем, простой график) выполняет запрос к БД за историческими или актуальными данными, используя привязанные к нему элементы данных (
items) или триггеры.
Пример настройки виджета "График" через API:
# Создание виджета, отображающего загрузку CPU хоста
curl -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"method": "dashboard.create",
"params": {
"name": "Production Overview",
"widgets": [{
"type": "graph",
"name": "CPU Load",
"x": 0, "y": 0, "width": 12, "height": 6,
"fields": [
{"type": "INTEGER", "name": "itemid", "value": "12345"} # ID элемента данных "system.cpu.load"
]
}]
},
"auth": "YOUR_API_TOKEN",
"id": 1
}
' http://zabbix-server/api_jsonrpc.php
На практике я автоматизирую создание типовых дашбордов для новых сервисов через Terraform-провайдер Zabbix или Ansible, передавая в шаблон ID ключевых метрик приложения.