Короткий ответ

LLD должен находить диски и NIC, которые вы чините в 3 ночи, а не veth, docker0, tmpfs и unmounted ISO. Ставьте фильтры на discovery rule (regexp по {#FSNAME}, {#IFNAME}), отсекайте типы FS, задайте lifetime потерянных ресурсов днями, не «хранить вечно». Ручное Delete 400 item раз в неделю — признак отсутствия фильтра. Мусор раздувает базу, очередь и шум. Серые прототипы: unsupported.

Хост WS-042, сервер 10.0.20.50, UI zabbix.example.

Симптомы и как отличить

Типичная картина:

  • Configuration → Hosts → WS-042 → Items: сотни vfs.fs.size[…] на /run, /var/lib/docker;
  • Problems: Interface docker0 down;
  • NVPS скакнул после link template;
  • discovery rule status unsupported (тогда наоборот — мусора нет и нужного тоже нет).

Отличия:

КартинаНе «фильтр»
Один ключ серыйunsupported
Шум порогов на реальном eth0алерты
Нет нужного дискафильтр слишком узкий / агент не видит FS

Возможные причины

  1. Шаблон «Linux by Zabbix agent» без override фильтров на контейнерном хосте.
  2. Windows: LLD томов USB/CD, которые приезжают на backup-ночь.
  3. Lifetime lost resources = 30d при ежедневных временных интерфейсах — item копятся.
  4. Overrides прототипов не заданы, каждый discovered получает history 90d.
  5. Несколько LLD на одно и то же (два шаблона сетевых интерфейсов).
  6. Редко: кастомный LLD userparameter отдаёт всю lsblk без фильтра.

Диагностика

1. Сколько item на хосте

UI: Items count на WS-042. Сравните с эталоном «чистой» VM. >200 на файловом сервере без SAN — подозрительно, если нет сотен шаров.

2. Test discovery

Discovery rule → Test (агент должен быть доступен с poller/proxy):

zabbix_get -s 10.0.20.42 -p 10050 -k vfs.fs.discovery \
  --tls-connect psk --tls-psk-identity psk-ws042 \
  --tls-psk-file /etc/zabbix/psk-ws042.psk

Ключ discovery может быть vfs.fs.discovery / vfs.fs.get в зависимости от шаблона 6.0 vs 7.0 — берите ключ из rule, не из памяти. JSON покажет все FS, которые Zabbix увидит до фильтра UI.

Windows:

zabbix_get -s 10.0.20.42 -p 10050 -k vfs.fs.discovery \
  --tls-connect psk --tls-psk-identity psk-ws042 \
  --tls-psk-file /etc/zabbix/psk-ws042.psk

3. Lifetime в rule

Поля вроде «Keep lost resources period» / disable lost (название в UI 6.0 vs 7.0 чуть отличается — смотрите форму rule). Если 30d и docker плодит id каждый деплой — математика очевидна.

4. Дубли шаблонов

Templates на хосте: два network LLD. Вы увидите два item на один {#IFNAME}.

Решение

Сценарий A. Фильтры FS (Linux)

На discovery rule: Include {#FSTYPE} matches ext4|xfs|btrfs (под ваши данные). Exclude {#FSNAME} matches ^(/run|/sys|/dev|/proc|/var/lib/docker|/snap). Для контейнерных хостов — ещё жёстче. Эталон мониторинга Linux: как мониторить Linux.

Не копируйте regexp с Windows-хоста.

Сценарий B. Интерфейсы

Exclude {#IFNAME}: lo|docker|veth|br-|cni|cali|flannel. Для Windows: не алертить disconnected VPN NIC, если это норма.

Admin down ≠ Disaster. Триггер-прототип: статус oper vs admin.

Сценарий C. Lifetime

Для эфемерных объектов: 1h–1d, не 30d. Для дисков сервера: дни–неделя, чтобы не мигали item при кратком unmount. Выберите осознанно.

Сценарий D. History на прототипах

Прототип item: history 7d, не 90d. Иначе каждый docker mount убьёт диск БД.

Сценарий E. Уже напложенное

После фильтра новые не появятся. Старые lost доживают lifetime — не обязательно Delete all вручную, если lifetime короткий. Если уже десятки тысяч — сузьте lifetime, дождитесь housekeeper, не кликайте 5000 confirm в UI без нужды.

config_cache_reload после смены шаблона:

sudo zabbix_server -R config_cache_reload

Как проверить, что проблема устранена

Test discovery: в Preview после фильтров только нужные FS/NIC. Items count на WS-042 стабилен неделю. NVPS не скачет после деплоя контейнеров. Problems без veth. Новые реальные диски всё ещё появляются (проверьте добавлением тестового mount на стенде, не на проде).

Если не помогло

  • Фильтр на {#FSNAME} не работает: макрос в JSON другой ({#FSNAME} vs {#DIR}). Смотрите raw.
  • Agent 2 vfs.fs.get vs старый discovery — разные макросы, не смешивайте overrides.
  • Прототипы из вложенного template не те, что вы правите (overrides на уровне шаблона-родителя).

Профилактика

  • Чеклист приёмки шаблона: Test LLD на Linux, Windows, docker-host отдельно.
  • Алерт «items per host > N».
  • Не линковать «максимальный» шаблон на Kubernetes worker без override.
  • Документировать regexp в описании template.

Docker и Kubernetes worker без override фильтров — главный взрыв NVPS. Каждый pause-контейнер и overlay FS порождает vfs.fs и net.if. Через сутки кажется, что «Zabbix не тянет», хотя тянуть нечего. Стенд: одна нода с docker, Test discovery, regexp, только потом production.

Windows WS-042 с часто монтируемым USB и ISO даёт тома на весь lifetime. Исключите iso9660, udf и съёмные. Иначе ночной диск бэкапа станет дневным Warning «мало места на F:».

Два шаблона сети — официальный и старый кастом — удваивают item. Перед link смотрите имена уже существующих discovery rule. Unlink с опцией оставить элементы плодит сирот: lifetime их не уберёт, нужен осознанный cleanup.

После фильтра подождите один discovery interval и посмотрите Items count на WS-042, не сразу. Старые lost ещё живут lifetime. Сократите lifetime, если счётчик не падает неделю. Не Delete host.

FAQ

Можно ли LLD отключить и завести item вручную?

Для 3 дисков — да. Для фермы — нет. Фильтр масштабируется, ручной item нет.

Почему фильтр «не тот язык» regexp?

В LLD Zabbix — POSIX/PCRE в зависимости от настройки regexp (глобальные регулярки). Тестируйте в UI Test, не только в grep.

Discovery unsupported

Сначала почините ключ агента, потом фильтры. Unsupported rule не создаёт мусор и не создаёт нужное.

7.0 vfs.fs.get ломает старые фильтры?

Макросы могли измениться с шаблоном. После апгрейда шаблонов — Test. Не апгрейдьте template в бою без стенда.

Нужно ли фильтровать SMART-диски?

Если LLD видит USB-флешку админа — да, exclude. Иначе шум температуры флешки. См. SMART-статью раздела.

Удалить хост и создать снова?

Нет. Потеряете историю нужных ключей. Чините rule.