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

Хосты за proxy «мертвы», а zabbix_get с proxy на WS-042 жив — чините канал proxy↔server, не агент. Сверьте: ProxyMode (0 active / 1 passive) с типом proxy в UI, Hostname proxy = имени в Administration → Proxies, PSK identity/ключ, TCP 10051 на 10.0.20.50 (active proxy исходит сам; passive — server стучится на порт proxy). Не удаляйте объект proxy в UI «и создайте заново» — потеряете привязку хостов. Агент: недоступен. Active агентов: active checks.

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

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

  • Administration → Proxies: Last seen минуты/часы назад;
  • все хосты с Monitored by this proxy пустые;
  • локально на proxy SQLite/MySQL растёт;
  • прямой хост на сервере жив.

Отличия:

ФактСлой
Один WS-042 пуст, сосед за тем же proxy живагент этого хоста
Все хосты proxy пусты, Last seen свежийочередь сервера / config
Last seen протухканал/PSK/mode/имя
Server downserver

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

  1. Active vs passive перепутаны: в UI Active, в конфиге ProxyMode=1.
  2. Hostname= proxy не совпал (регистр, FQDN).
  3. PSK: другой identity чем в UI, файл не читает пользователь zabbix.
  4. Firewall: исходящий 10051 с proxy запрещён; или входящий на ListenPort proxy для passive.
  5. Server= указывает не 10.0.20.50 / не zabbix.example.
  6. Локальная БД proxy (SQLite lock, диск full).
  7. Редко: два процесса proxy, старый pid держит сокет; часы сильно разъехались для TLS.

Диагностика

1. Процесс и лог proxy

systemctl status zabbix-proxy --no-pager
sudo tail -n 100 /var/log/zabbix/zabbix_proxy.log
sudo grep -E '^(Server|Hostname|ProxyMode|Listen|TLS|DB)' /etc/zabbix/zabbix_proxy.conf

Ищите Unable to connect to the server, PSK, mismatch, cannot send.

2. Mode и порт

Active proxy (ProxyMode=0): исходящий TCP на 10.0.20.50:10051.

nc -vz 10.0.20.50 10051

Passive proxy (ProxyMode=1): на proxy слушает ListenPort (часто 10051), server с 10.0.20.50 коннектится сюда. Тогда проверяйте с сервера nc -vz PROXY_IP 10051.

Не открывайте оба мира без нужды. В UI тип proxy = конфиг.

3. Имя и PSK

Administration → Proxies: имя = Hostname файла. Encryption PSK, identity как у агентов по смыслу, но свой ключ proxy, не psk-ws042 от хоста WS-042 (тот ключ — для агента). Путаница ключей — типичный handshake fail.

4. Конфиг сервера

Server должен знать proxy. После создания: zabbix_server -R config_cache_reload.

sudo zabbix_server -R config_cache_reload

5. Локальная БД proxy

df -h /var/lib/zabbix
ls -l /var/lib/zabbix/*.sqlite 2>/dev/null

Disk full на proxy = буфер не пишется, Last seen может ещё «дышать» редко. Смотрите лог.

Решение

Сценарий A. Неверный mode

Выровняйте UI и ProxyMode. Рестарт proxy. Firewall под выбранный режим, не «открыть всё».

Сценарий B. Имя

Hostname=ZBX-PROXY-01 везде одинаково. Не IP в Hostname.

Сценарий C. PSK/TLS

Файлы ключа права zabbix, identity без пробела. В UI proxy Encryption = PSK. Сначала без смены имени.

Сценарий D. Сеть

Разрешить конкретный 10051 между proxy и 10.0.20.50. NAT: для active обычно проще (исходящий). Для passive нужен DNAT на ListenPort.

Сценарий E. Версии

Пакет proxy = линия server. Не держите proxy 7.0 против server 6.0.

Сценарий F. Агенты смотрят не туда

На WS-042: Server= / ServerActive= = IP proxy, не обязательно 10.0.20.50. Иначе агент шлёт на server, который его не опрашивает, а proxy ждёт. См. active checks и агент.

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

Proxies: Last seen секунды–минуты. Latest data WS-042 свежие. Лог proxy без reconnect-спама. Очередь на server не копит только этот proxy. С proxy:

zabbix_get -s 10.0.20.42 -p 10050 -k agent.ping \
  --tls-connect psk --tls-psk-identity psk-ws042 \
  --tls-psk-file /etc/zabbix/psk-ws042.psk

get успех + UI успех = полный путь.

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

  • Last seen жив, данных нет: фильтр хостов, maintenance, очередь сервера.
  • После смены IP server забыли Server= на всех proxy.
  • Часовой пояс не ломает PSK; сильный clock skew может ломать сертификаты, не PSK.
  • SQLite corrupt — restore proxy DB из копии, не rm вслепую без инструкции версии.

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

  • Мониторинг Last seen proxy с сервера (trapper/internal).
  • Одинаковый minor на proxy-ферме.
  • Документ: какой proxy active/passive, какие ACL.
  • PSK proxy в vault, ротация с процедурой.

Филиальная классика: на агенте WS-042 оставили ServerActive=10.0.20.50, а в UI хост «Monitored by proxy». Агент стучится на сервер, сервер не считает этот хост своим для выдачи checks, proxy ждёт агента у себя. Симптом: Last seen proxy свежий, Latest data WS-042 пустые. Лечение: и Server, и ServerActive агента смотрят на IP proxy.

Обратная ошибка: файрвол филиала пускает только исходящий 10051 на zabbix.example, а proxy пассивный и ListenPort с сервера не маршрутизируется. Тогда меняют mode или делают DNAT, а не перевыпускают PSK третий раз.

После апгрейда server до 7.0 LTS не оставляйте proxy на 6.0 «на потом». Несовместимость часто всплывает странными ошибками active checks, а не честным отказом старта. Пакет proxy планируйте в том же изменении, что server.

FAQ

Active proxy лучше passive?

За NAT филиала — active проще (исходящий 10051). Passive удобен, когда server обязан инициировать коннект. Не мораль, топология.

Нужен ли 10050 на proxy снаружи?

10050 — агент. На хосте proxy он нужен, если мониторите сам proxy агентом. Канал proxy-server — 10051.

Можно ли один PSK на всех proxy?

Плохая практика: компрометация одного — все. Отдельные identity.

Proxy на Windows?

Бывает. Алгоритм тот же: лог, mode, порт, имя. Пути конфига другие, команды Get-Service.

Offline филиал на сутки — что будет?

Active proxy копит в локальной БД (лимиты конфига). После канала — догон. Не чистите SQLite «чтобы завелось».

Стоит ли ставить агенты сразу на server в обход proxy?

Только если сеть позволяет и вы сознательно не хотите буфер. Смешение части хостов ломает ACL-ожидания.