Назад | Перейти на главную страницу

Nagios: мониторинг службы http на другом порту

Я хочу контролировать службы через 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 для получения дополнительных опций / информации.