Как данные с мониторинга попадают на дашборды в Zabbix?

«Как данные с мониторинга попадают на дашборды в Zabbix?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Zabbix данные на дашбордах отображаются в реальном времени, подтягиваясь из базы данных по результатам работы сборщиков данных (Zabbix Agent, SNMP, JMX, HTTP-чеки) и обработки триггеров.

Полный цикл данных:

  1. Сбор: Zabbix Server опрашивает хосты через агентов или активные чеки, получая значения метрик (CPU load, свободная память, ответ приложения).
  2. Обработка: Полученные значения (items) сохраняются в БД (обычно TimescaleDB поверх PostgreSQL). На основе этих значений вычисляются и срабатывают триггеры (например, {Host:system.cpu.load.avg(5m)}>5).
  3. Визуализация: Дашборд — это просто представление. Каждый виджет на дашборде (график, карта проблем, простой график) выполняет запрос к БД за историческими или актуальными данными, используя привязанные к нему элементы данных (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 ключевых метрик приложения.