На всякий случай создаю более общую тему, нежли чем в прошлый раз (только по HTTP).
Вопрос: каков правильный синтаксис (для поля Data \ Parameter) для всех текущих запросов типа "ServiceCheck.X" ? С "HTTP" мы уже разобрались (https://www.netxms.org/forum/index.php/topic,406.0.html). А что насчёт:
ServiceCheck.POP3
ServiceCheck.SMTP
ServiceCheck.SSH
ServiceCheck.TELNET
...?
Вопрос опять же относится к случаю, когда всё указанное нужно мониторить с одной ноды (Сервер NXMS) на другой (удалённый сервер, без возможности установки агента).
Виктор, нельзя ли привести хотя бы по одному максимально функциональному примеру на каждый из случаев? А то в Документации (https://www.netxms.org/documentation/common_parameters.html) сей вопрос (ServiceCheck) вообще никак не освещён... =(
Спасибо.
Легенда:
*) Коды ошибок:
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
** тут бинарный протокол, я не буду его описывать.
** Отключаемся
Примерно так.