Проверка доступности порта в Zabbix

0
11287
Обложка статьи: Проверка доступности порта в Zabbix

Инструкция входит в цикл про Zabbix. Общая картина: мониторинг Linux и Windows в Zabbix, справочник ключей: ключи агента.

Нужно знать, слушает ли порт с точки зрения Zabbix. Это item, не замена проверки снаружи и не замена ss на хосте — см. открытые порты.

1. Ключ агента или простой check

С хоста, где стоит агент:

net.tcp.port[<ip>,port]
net.tcp.service[http,,80]

Пустой IP — localhost агента. Пример:

net.tcp.port[,22]
net.tcp.port[192.0.2.10,443]

Проверка с сервера:

zabbix_get -s 192.0.2.20 -k net.tcp.port[,22]

Ожидание: 1 если порт принимает, 0 если нет. Это вид с машины агента, не с интернета.

Простой check с сервера Zabbix (без агента на цели) — тип Simple check, тот же ключ. Тогда виден путь сервер → цель.

2. Триггер

В шаблонах часто уже есть «Service is down». Свой: last-значение 0 дольше N минут. Не опрашивайте порт раз в 5 секунд без нужды — см. тюнинг очереди.

Порт открыт и сервис работает — не одно и то же

net.tcp.port проверяет только, что TCP-соединение устанавливается. Приложение за портом может зависнуть и всё равно принимать соединения. Для содержательной проверки используйте:

  • net.tcp.service[http,,80], net.tcp.service[ssh,,22]: ключ выполняет простой обмен по протоколу и убеждается, что отвечает именно этот сервис.
  • Веб-сценарий (Web scenario) для сайта: проверяет код ответа и наличие строки на странице.
  • web.certificate.get[example.com,443] (Zabbix 5.0+): срок действия сертификата, чтобы узнать об окончании за недели, а не в день отказа. Поддержка и поля зависят от версии, смотрите документацию.

UDP

У UDP нет соединения, поэтому «порт открыт» проверить нельзя. Для отдельных протоколов есть net.udp.service[ntp,,123]. Для DNS, syslog и других используйте проверку ответа на запрос, а не наличие порта.

С какой стороны смотреть

Вид проверки Что показывает
Ключ агента на самом узле (net.tcp.listen[22]) Процесс слушает порт, не зависит от firewall
Simple check с сервера Zabbix Порт доступен с сервера мониторинга через сеть и firewall
Simple check с прокси в другой сети Порт доступен из того сегмента, где живут пользователи

Если «слушает» есть, а «доступен» нет — смотрите firewall: nftables и firewalld.

Типичные ошибки

  • Таймаут: пакеты отбрасывает firewall (drop). Отказ в соединении: адрес доступен, но порт не слушают.
  • Слишком частая проверка десятков портов создаёт нагрузку на очередь опроса.
  • Триггер срабатывает на единичный сбой: требуйте несколько неудач подряд, например три последних значения.

Как проверить

ss -lntup | grep ':22'
zabbix_get -s 192.0.2.20 -k net.tcp.port[,22]

Если sshd слушает, item = 1. Остановили службу — 0 и сработал триггер. Для картины «видно с улицы» нужен check с другой точки и основание.

Источники

Комментарии закрыты.