Проверка доступности порта в 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 с другой точки и основание.
Источники
- Zabbix documentation, current. URL: https://www.zabbix.com/documentation/current — item keys net.tcp.port / simple checks.


















