Связка с мониторингом двусторонняя и состоит из двух независимых частей:
arms.zabbix) через
REST API. Он же, заведя узел в Zabbix,
записывает его hostid обратно в инвентаризацию — в
external_links объекта
под ключом Zabbix.hostid.zabbix: панель
с базовыми метриками узла, активными проблемами (сработавшими
триггерами) и ссылкой на узел в веб-интерфейсе Zabbix. Панель только
читает, в Zabbix ничего не меняет.В шапке — состояние узла и число активных проблем, дальше аптайм, загрузка CPU и памяти, заполнение файловых систем и список самих проблем. Проблемы отключённых триггеров не показываются — как и в веб-интерфейсе Zabbix (API их отдаёт, панель отфильтровывает).
Состояние узла:
| Признак | Что значит |
|---|---|
| доступен | узел отвечает на проверки |
| недоступен | Zabbix не получает ответ (проверки падают) |
| доступность неизвестна | проверок доступности ещё не было |
| мониторинг выключен | узел отключён в Zabbix, данные не собираются |
Доступность берётся из интерфейсов узла (пассивные проверки) и из признака активного агента (Zabbix 6.4+). Явная недоступность любого канала важнее доступности остальных.
Справа в шапке — три ссылки-иконки в Zabbix: дашборд узла,
последние данные и проблемы (появляются, если в конфиге задан
web).
Под шапкой указано время последнего замера («данные: 3 минуты назад», точное время — во всплывающей подсказке). Так видно, живые это цифры или снятые с машины, которую выключили неделю назад: сами метрики в этом случае показываются, но с пометкой «данные устарели».
Порог — 10 минут (штатные шаблоны снимают метрики раз в минуту),
меняется параметром staleAfter (секунды) в конфиге провайдера. Если
подходящие item’ы у узла есть, но значений нет вовсе, панель пишет
«данные не поступали более суток» — глубже суток история не
запрашивается.
Метрики берутся по ключам item’ов, а не по имени шаблона: у штатных шаблонов «… by Zabbix agent» ключи Windows и Linux совпадают, поэтому ОС различать не требуется:
| Показатель | Ключ item’а |
|---|---|
| Аптайм | system.uptime |
| CPU | system.cpu.util (у старых шаблонов system.cpu.util[,idle] — пересчитывается в загрузку) |
| Память | vm.memory.utilization, либо vm.memory.size[pused] / vm.memory.size[pavailable]; если готового процента в шаблоне нет — считается из байтов (vm.memory.size[total] + [used] или [available]) |
| Диски | vfs.fs.size[<ФС>,pused] или vfs.fs.dependent.size[<ФС>,pused] (варианты с pfree пересчитываются) |
Если у узла таких item’ов нет (нестандартный шаблон, SNMP-мониторинг), показатель просто не выводится — проблемы и ссылка на узел остаются. Разобраться, почему показателя нет, помогает
php yii zabbix/items <hostid>
— он покажет ключи узла, распознан ли каждый из них и есть ли по нему
свежее значение (нет истории = item есть, но данных за сутки нет).
Файловых систем показывается не больше восьми. Отключить блок метрик
целиком: 'metrics' => false в конфиге провайдера.
Токену нужны права не только на узлы, но и на чтение истории значений — иначе метрик не будет.
Провайдер zabbix добавляется в params-local.php (пример конфига и
описание опций — в Подключаемых интеграциях).
Нужны адрес api_jsonrpc.php и API-токен сервисного пользователя Zabbix
с правом чтения нужных узлов; пользователи инвентаризации в Zabbix не
логинятся.
Проверить настройку с сервера:
php yii zabbix/ping
Если включён и провайдер zabbix-sync (вердикт «попадёт ли узел в
мониторинг»), две отдельные карточки можно объединить: флаг
'embedded' => true в конфиге провайдера zabbix прячет его карточку,
а её содержимое рисуется внутри «Постановки на мониторинг» под бейджем
вердикта. Живой блок Zabbix при этом показывается только когда узел на
мониторинге либо реально заведён в Zabbix (есть привязка hostid — в
том числе заведённый вручную): у узлов, которым в мониторинге быть не
положено, остаётся один бейдж — без дублирующего «узел не найден в
Zabbix». Недоступность одной из двух внешних систем не прячет вторую
половину панели.
Панель ищет узел по hostid из external_links объекта:
{"Zabbix.hostid":"218430"}
Обычно это поле заполняет скрипт синхронизации; при разовой проверке его можно записать вручную. Если привязки нет, панель делает разовый поиск узла по FQDN (для ОС) либо имени/инвентарному номеру (для оборудования) — только для отображения, в базу инвентаризации ничего не пишется.
Узнать hostid и проверить, что именно увидит карточка:
php yii zabbix/find <имя-узла>
php yii zabbix/object comps 42