Я в настоящее время экспериментирую с определением ряда сервисов ко всем хостам в группе узлов, это хорошо работает.
Моя проблема - то, что я затем хочу смочь переопределить эти сервисные определения, которые были включены в хост от группы узлов. Для ситуаций, например, где один конкретный Сервер Linux должен иметь, это - порог проверки PING, повышенный от значения по умолчанию.
Так, например, я хотел бы иметь хост в linux-server
группа узлов, которая наследовала несколько сервисов (SSH, Диск, PING, и т.д.), но для определенных сервисов я хочу переопределить с их собственными уникальными значениями, определить сервис, характерный для того хоста, с пользовательскими значениями.
Например, Определите хост в linux-server
с пользовательским PING
сервисное определение:
define host {
use n1-host
host_name server-01
hostgroups linux-server
alias Test Linux Server
parents my-gateway,upstream-gateway
address server01.test.com
}
define service {
use generic-service
host_name server-01
service_description PING
check_command check_ping!100.0,5%!400.0,15%
}
К сожалению, прямо сейчас, даже при том, что соответствие описания имени хоста и сервиса тот из уровня группы проверкой PING, только одним обслуживанием PING перечислено для server-01
и это - уровень группы проверка PING, не уровень хоста один.
Это, действительно кажется, регистрируется на некотором уровне, поскольку в моем Nagios регистрируется I, видьте:
16 июля 19:12:27 localhost nagios: Предупреждение: Дублирующееся определение нашло для сервиса 'PING' на хост 'сервер 01'
Но в конечном счете, не работает, как будто я проверяю "данные о производительности" сервисных результатов проверки, я вижу там, что порог, включенный в данные, является порогом проверки группы, не проверки хоста.
Мое понимание, однако, то, что изменение было внесено вокруг версии 3.2.0
позволить сервисам уровня хоста иметь приоритет по сервисам уровня группы узлов. Я в настоящее время работаю 3.4.1
, таким образом, я думал бы, что это должно работать.
Некоторые ссылки, которые приводят меня верить этой функции, должны уже быть реализованы:
Кроме того, я проверил свою копию xdata/xodtemplate.c
файл от 3.4.1 исходных кодов, и сразу действительно кажется, что в "пропуске перечисляют", что проверки уровня хоста предназначены для имения приоритет по проверкам группы узлов. Хотя по общему признанию, мой анализ примитивен.
Я знаю, что может быть возможно исключить определенные хосты из группы, но это не будет работать на меня, поскольку группа узлов может иметь многочисленные услуги в ней, и я не захочу иметь все те сервисы, удаленные из хоста.
Я также нахожу, что это неинтуитивный для ведения списка исключений отделяется туда, где сам хост на самом деле определяется. Например, совет был дан в одной из вышеупомянутых ссылок (вторая), чтобы сделать следующее:
В сервисе определение добавляют строку под "hostgroup_name": "host_name! zlinux_hostname"
Это исключит хост zlinux из сервисной проверки.
Мне это не идеальное решение, поскольку мы могли закончить тем, что имели необходимость сделать много исключений, и это кажется, что было бы трудно поддержать.
Если у кого-либо есть совет относительно понимания о том, как получить эту работу, я был бы очень признателен за его!
В настоящее время я определяю свой уровень группы сервис PING как так:
define hostgroup {
hostgroup_name linux-server
name Linux Servers
}
define service {
use generic-service
hostgroup_name linux-server
service_description PING
check_command check_ping!100.0,2%!400.0,10%
}
Вы можете использовать «Макросы настраиваемых переменных» ( http://nagios.sourceforge.net/docs/3_0/macros.html )
В определении службы проверки связи используйте, например:
check_command check_ping!200.0,20%!$_HOSTVAR_SERVICE_PING_CRITICAL_RTA$,40%
В шаблоне хоста установите значение по умолчанию:
_VAR_SERVICE_PING_CRITICAL_RTA 500
В определении хоста, которое должно явно использовать набор значений разницы, например
_VAR_SERVICE_PING_CRITICAL_RTA 1500
.
Я знаю, что это старый пост, но я наткнулся на этот вопрос, когда искал что-то еще. Я не особо разбираюсь в nagios, но мне это нравится.
Любая проверка, которую вы помещаете в группу хостов, будет применяться к любому хосту в этой группе хостов (что вы уже знали). Если вы создадите такую же проверку в хосте cfg, тогда он переопределит проверку группы хостов.
Как бы то ни было, я делаю это следующим образом:
1. Настройте cfg-файл группы хостов с проверками в нем. Вот моя основная проверка места на диске C:
define service{
use generic-service
hostgroup_name windows-servers
service_description C: Drive Space
notification_period workhours
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
2. Однако один сервер работает с гораздо меньшим объемом свободного места, чем обычно. Итак, в host cfg у меня есть:
define service{
use generic-service
host_name ServerName
service_description C: Drive Space
check_command check_nt!USEDDISKSPACE!-l c -w 95 -c 99
notification_period workhours
}
Теперь проверка службы будет предупреждать вас о 80% и 90% для всех хостов в группе хостов, за исключением хоста, для которого вы добавили проверку, со значениями изменений в нем.
Такое расположение позволяет мне добавлять только настраиваемые службы и проверки служб, которые не являются нормой в определении хоста.
Я не уверен, широко ли это используется, но это статья поразила меня, когда дело дошло до настройки файлов конфигурации. Я уже устал редактировать эти огромные текстовые файлы, и это упростило задачу.
В любом случае, я надеюсь, что это поможет.