Я хочу контролировать службы через http, работающие на нескольких портах, кроме 80. Службы работают на портах 8083, 8086 и некоторых других портах. Я создал файл server.cfg следующим образом:
define host {
use linux-server
host_name cfbase-prod
alias cfbase-prod
address x.x.x.x
contacts admin
}
define service {
use generic-service
host_name cfbase-prod
service_description HTTP
check_command check_http
contacts admin
check_interval 1
}
Но он не работает в моей консоли nagios, он по-прежнему отображается как http на порту 80, что не так. Может кто-нибудь помочь.
Вы можете указать номер порта непосредственно в команде, но вы должны будете создать одну команду для каждого проверенного порта.
Или вы можете создать настраиваемую переменную для хранения номера порта с вашим примером:
define host {
use linux-server
host_name cfbase-prod
alias cfbase-prod
address x.x.x.x
contacts admin
}
define service {
use generic-service
host_name cfbase-prod
service_description HTTP
check_command check_http
contacts admin
check_interval 1
_port_number 8083
}
И по вашей команде вы можете унаследовать эту переменную следующим образом:
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ -p $_SERVICEport_number$ $ARG1$
}
Вы должны добавить _service
для услуги или _host
чтобы хост использовал вашу переменную в команде. источник :
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/customobjectvars.html
Когда я смотрю на check_http и $ ARG, все должно быть на месте, так почему бы просто не использовать:
check_http!-p 8888
запросить зонд. По крайней мере, мой короткий тест с nagios4 у меня сработал.
Вам следует определить новую команду, возможно, с именем check_http_port
который принимает порт как $ARG1$
.
define command {
command_name check_http_port
command_line $USER1$/check_http -I $HOSTADDRESS$ -p $ARG1$ <other options you use>
}
А затем используйте это в своем определении службы, как check_http_port!8083
.
Видеть check_http --help
для получения дополнительных опций / информации.