Мониторинг с помощью ServiceCheck.Х

Started by Anth0ny, September 29, 2008, 12:56:31 PM

Previous topic - Next topic

Anth0ny

На всякий случай создаю более общую тему, нежли чем в прошлый раз (только по HTTP).

Вопрос: каков правильный синтаксис (для поля Data \ Parameter) для всех текущих запросов типа "ServiceCheck.X" ? С "HTTP" мы уже разобрались. А что насчёт:

ServiceCheck.POP3
ServiceCheck.SMTP
ServiceCheck.SSH
ServiceCheck.TELNET

...?

Вопрос опять же относится к случаю, когда всё указанное нужно мониторить с одной ноды (Сервер NXMS) на другой (удалённый сервер, без возможности установки агента).

Виктор, нельзя ли привести хотя бы по одному максимально функциональному примеру на каждый из случаев? А то в Документации (https://www.netxms.org/documentation/common_parameters.html) сей вопрос (ServiceCheck) вообще никак не освещён... =(

Спасибо.

Alex Kirhenshtein

Легенда:

*) Коды ошибок:
PC_ERR_NONE         = 0 - всё хорошо
PC_ERR_BAD_PARAMS   = 1 - кривые параметры запроса, на данный момент так отвечает только HTTP - если regexp неправильный
PC_ERR_CONNECT      = 2 - не смогли подключится к host:port
PC_ERR_HANDSHAKE    = 3 - ответ проверяемого сервера не совпал с ожидаемым


*) "->" - отсылаем данные на проверяемый хост
*) "<-" - получаем данные от проверяемого хоста




На данный момент port checker subagent поддерживает 6 DCI:

ServiceCheck.POP3

Пытаемся залогинится на указанный POP3 сервер.

Принимает 3 параметра: host, login, password.
(только что обнаружил, что через DCI нельзя проверять произвольный порт - только через service object)

Пример: ServiceCheck.POP3(mail.netxms.org,testuser,testpassword)

Как проходит проверка:
** Подключаемся на mail.netxms.org:110
<- +OK
-> USER testuser
<- +OK
-> PASS testpassword
<- +OK
** Отключаемся


ServiceCheck.SMTP

Пытаемся отослать email через указанный SMTP на указанные email.

Принимает 2 параметра: host, адрес_куда_посылаем_письмо.

Пример: ServiceCheck.SMTP(mail.netxms.org,[email protected])

Как проходит проверка:
** Подключаемся на mail.netxms.org:25
<- 220-mail server banner line 1
<- 220-mail server banner line 2
<- 220 mail server banner line 3
-> HELO netxms-portcheck
<- 250 ...
-> MAIL FROM noreply@netxms-portcheck
<- 250 ...
-> RCPT TO: [email protected]
<- 250 ...
-> DATA
<- 354 ...
-> From: <noreply@netxms-portcheck>
-> To: [email protected]
-> Subject: NetXMS test mail
-> Date: ...
->
-> NetXMS test mail
-> .
<- 250 ...
-> QUIT
<- 221 ...
** Отключаемся


Имя "netxms-portcheck" используется если вызов gethostname() вернул ошибку, иначе - имя хоста на котором работает агент.


ServiceCheck.SSH

Пытаемся проверить наличие SSH демона

Принимает 2 параметра: host, port.

Пример: ServiceCheck.SSH(www.netxms.org,22)

Порт по умолчанию: 22

Как проходит проверка:
** Подключаемся на mail.netxms.org:22
<- SSH-major.minor-...
-> SSH-major.minor-NetXMS
** Отключаемся


Major и minor - версия протокола которую поддерживает ssh сервер. Такой handshake нужен чтоб sshd не ругался в логи.


ServiceCheck.HTTP

Проверяем результат http запроса на соответствие regexp-у.

Развернутое описание есть тут: https://www.netxms.org/forum/index.php/topic,406.0.html

Принимает 5 параметров: host, port, URI, host_header, regexp

Пример 1: ServiceCheck.HTTP(www.netxms.org,80,/,www.netxms.org,^HTTP/1\.[01] 200.*)

Порт по умолчанию: 80
regexp по умолчанию: "^HTTP/1.[01] 200 .*" (т.е. проверка на то, что страница найдена на сервере)

Пример 2 (идентичен примеру 1): ServiceCheck.HTTP(www.netxms.org,,/,www.netxms.org)

Как проходит проверка:
** Подключаемся на www.netxms.org:80
-> GET / HTTP/1.1
-> Connection: close
-> Host: www.netxms.org
->
<- HTTP/1.1 200 OK
<- Content-type: ...
<- ...
** Отключаемся
** Сравниваем полученные данные с regexp-ом



ServiceCheck.Custom

На данный момент проверяет только возможность подключения к удаленному хосту (т.е. с другой стороны порт слушают и принимают соединения).

Принимает два параметра: host, port

Пример: ServiceCheck.Custom(www.netxms.org,3306) - проверяем наличие mysql на www.netxms.org

Как проходит проверка:
** Подключаемся на www.netxms.org:3306
** Отключаемся



ServiceCheck.Telnet

Проверяет наличие telnet сервера на host:port и правильность handshake-а.

Принимает два параметра: host, port

Порт по умолчанию: 23

Пример: ServiceCheck.Telnet(www.netxms.org,23)
Пример: ServiceCheck.Telnet(www.netxms.org)

Как проходит проверка:
** Подключаемся на www.netxms.org:23
** тут бинарный протокол, я не буду его описывать.
** Отключаемся

   



Примерно так.

Anth0ny