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

Пользовательские переменные Nagios для наследования объектов

В нашей настройке Nagios мы используем шаблоны и наследование объектов для сервисов и хостов.

#Le Hosts
define host{
    use            linux-nrpe,linux-dc3,linux-cassandra
    host_name      tigris
    alias          tigris
    address        192.168.4.72
    }

define host{
    use            linux-nrpe,linux-dc3,linux-cassandra
    host_name      euphrates
    alias          euphrates
    address        192.168.4.177
    }

#Le Templates
define host{
    name           linux-nrpe
    use            all-hosts
    hostgroups     linux-nrpe
    contact_groups rhands,usergroup1,opcomms
    register       0
}

#Le Services
define service{
    hostgroup_name      linux-nrpe
    use                 high-priority-service,graphed-service
    service_description Load
    check_command       check_by_nrpe!check_load!5,5,6!9,9,9
    contact_groups      rhands,usergroup1,opcomms
    }
[...etc...]

Проблема с этой настройкой - все серверы в linux-nrpe групповые триггеры предупреждают, когда их уровни нагрузки достигают того, что определено в службе, но наши рабочие лошадки могут работать 24/7 при нагрузке 20, но наши серверы БД вполне благополучно сидят на ~ 1, если что-то не пойдет не так, поэтому мы обнаруживаем, что система отправляет слишком много предупреждений или необходимость игнорировать / не предупреждать о вещах. Определение отдельных определений сервисов для каждого сервера (многих из них) займет много времени, нам бы очень хотелось сделать что-то вроде

define host{
    name           linux-nrpe
    use            all-hosts
    hostgroups     linux-nrpe
    contact_groups rhands,usergroup1,opcomms
    register       0
    perf_load      2,2,3 5,5,6
    perf_mem       95% 97%
    [...more...]
    }

define service{
    hostgroup_name      linux-nrpe
    use                 high-priority-service,graphed-service
    service_description    Load
    check_command       check_by_nrpe!check_load!$perf_mem$
    contact_groups      rhands,usergroup1,opcomms
    }

Я просмотрел документы и ничего не увидел, если я что-то не упускаю. Любые идеи?

У нас есть очень похожее решение, работающее здесь, в нашем Nagios Monitoring. Пользовательские переменные хоста / службы должны начинаться с подчеркивания в определении, а в ссылке вы должны добавить _HOST или _SERVICE в качестве префикса и все прописные буквы в качестве имени.

Поэтому пользовательские переменные perf_load и perf_mem должны быть определены как

define host {
    [..]
    _perf_load      2,2,3 5,5,6
    _perf_mem       95% 97%
    [..]
}

и упоминается как

define service {
    [..]
    check_command   check_by_nrpe!check_load!$_HOSTPERF_LOAD$
    [..]
}

Фрагмент текущей конфигурации нашего Nagios:

define host {
       host_name               target
       alias                   target
       address                 target
       use                     tmpl_host
       _gprs_address           192.168.0.1
}
[...]
define service {
        host_name               target
        service_description     GPRS ping
        use                     tmpl_service_ping
        check_command           check_fping-by-ssh!-H 1.2.3.4 -S $_HOSTGPRS_ADDRESS$ -n 7 -t 1000 -w 1000 -c 2000
        event_handler           check_restart-GPRS-PPP
        notes_url               https://wiki.
        contact_groups          admin_allday
}

Вы найдете более подробную информацию в Nagios Документация.

Для справки, в Icinga такая же работа.

Вы также можете определить пороги в конфигурации NRPE на самих хостах. Это непрактично, если у вас более нескольких десятков хостов, если у вас нет какого-либо управления конфигурацией (что-то вроде марионетки или даже просто git / hg / svn / something) и использования 'includes' в nrpe.cfg.

Однако предложение Lairsdragon намного лучше. Единственное, что я хотел бы добавить:

Может быть полезно называть переменные настраиваемых объектов двумя ведущими символами подчеркивания ($ __ FOO), чтобы их можно было называть как «$ _HOST_FOO».