Проверка статуса портов.

Started by httpd, November 21, 2013, 04:21:55 PM

Previous topic - Next topic

httpd

Добрый день, подскажите пожалуйста - не вполне понятно как и можно ли отслеживать определенный порт, например smtp на удаленном сервере. Добавляю ноду, создаю сервис (Create network service) выбираю тип smtp, ставлю порт 25, надо ли что то писать в реквест-респонз? откуда можно взять эту информацию? в итоге сервис создается и висит со статусом ОК и все. Что я делаю не так?
Спасибо.

Victor Kirhenshtein

Для SMTP надо прописывать тестовый майл в request. Если надо просто проверять, что TCP порт открыт, то можно ставить тип сервиса Custom. Ну и собственно статус NORMAL говорит о том, что сервис доступен. Если он будет недоступен, то статус поменяется, и будет сгенерировано соответствующее событие (SYS_SERVICE_DOWN).

httpd

Тип сервиса custom это при создании сервиса? Просто точно таким же макаром добавляю например ssh порт 22 для exchange-сервера, на котором он явно закрыт и все равно получаю статус ОК, может я не там смотрю статус?

Victor Kirhenshtein

Да, как-то странно. Можете скриншот прислать?

httpd

Может я что то не так делаю конечно...

Victor Kirhenshtein

Нет, это не то - ето статус порогоцых значений, которых скорее всего просто нет. Статус сервиса можнио посмотреть на закладке "Overview" в "Object Details", когда сервис выбран в дереве. Значением статуса для нормально работающего сервиса будет 0 (это NORMAL). Статус 5 означает UNKNOWN - скорее всего не загружен субагент portcheck на агенте, работающем на самом сервере мониторинга.

httpd

Да, статус unknown. portcheck это SubAgent = portcheck.nsm в nxagentd.conf? там эта строка есть. можно ли его проверить?

httpd

Каким образом можно мониторить работу определенных сервисов? можно ли свободно выбирать эти типы сервисов и каким образом это можно настроить? Гайд читал, такой информации там не нашел. Хочется узнать и понять функционал.
Спасибо.

kozlov_ao

Работу сетевых сервисов потестить можно так: https://www.netxms.org/forum/oe-oo/moto-omo-servicecheck/msg2356/#msg2356
Работу локальных сервисов (служб, демонов) при помощи System.ServiceState(*)

httpd

Спасибо, я попробую и отпишусь.

httpd

Каким образом с помощью ServiceCheck.Custom можно проверить доступность произвольного порта на ноде? я добавляю DCI в ноду и получаю ошибку. какой тип надо выбирать если на ноде НЕ установлен агент?

kozlov_ao

На проверяемом узле агент не нужен. Агент необходим только на проверяющей ноде, т.е. на той, с которой будет вестись проверка.
В ServiceCheck.Custom в качестве параметров вводи адрес и порт через запятую. Например: 10.10.1.6,80.

Смысл следующий: Проверяющая нода (с агентом) долбиться на любой указанный хост, на нужный порт и делает анализ. Если ОК-то ОК, если нет - косяк.

httpd

Ура, все получилось, статус конкретного порта он детектит. А как для конкретной ноды задать мониторинг конкретной службы - например есть нода сервер exchange на котором надо мониторить состояние smtp-сервиса и отображать состояние.

kozlov_ao

Я бы мониторил 172,0,0,1 с помощью ServiceCheck.SMTP + мониторил состояние самих сервисов Exchange при помощи System.ServiceState.
Выстрелом в голову стал бы скрипт тестовой отправки почты.

httpd

Ну netxms стоит не на сервере Exchange, поэтому состояние служб надо мониторить через сеть.
Для использования System.ServiceState нужен агент же? а если на Exchange не стоит он?