У меня есть кластер из N узлов, который содержит некоторую распределенную информацию. Запрос, который я хочу отслеживать с помощью nagios
имеет смысл выполнять только на одном узле кластера (любом). Но я не хочу перегружать один конкретный узел, поэтому я хочу nagios
выбирать каждый раз случайный узел из списка узлов.
Итак, я ожидал увидеть что-то вроде:
define service{
service_description Recent document time for the cluster
hostgroup_name random
...
}
где random
hostgroup как-то определяет случайный узел из предопределенного списка узлов кластера.
Можно ли это сделать с помощью nagios3? Какие-либо предложения?
Не могли бы вы настроить DNS для выдачи вам случайного хоста с определенным именем?
Вы также можете написать индивидуальный сервисный чек.
Если вам ДЕЙСТВИТЕЛЬНО нужна эта функция в nagios ...взломать источник
Я не верю, что это возможно сделать изначально через nagios. Но это можно сделать с помощью специального сценария проверки, реализованного на выбранном вами языке. Просто пусть сценарий проверки выбирает случайный (или циклический и т. Д.) Узел при каждом запуске.
Насколько мне известно, если вы используете собственный плагин, который вы написали, должно быть довольно тривиально добавить параметр, который случайным образом извлекается из нескольких переданных хостов, и тестировать только один из них.
Вы упомянули, что существует N узлов, я не думаю, что все они находятся за каким-то VIP, который указывает только на один узел и перемещается в другой ящик по мере необходимости?
Было бы полезно немного подробнее описать настройку, если мы не сможем ничего найти, я буду рад помочь вам придумать что-нибудь, даже если это индивидуально.
Еще одно решение для этого - запустить проверку на каждом сервере узла и компенсировать время с помощью планировщика задач / cron, а затем получить результаты проверки в центральном месте. Вы можете попросить Nagios проверить результаты в этом файле соответственно.
Таким образом, вам не нужно будет ничего менять в Nagios при добавлении нового узла, и это может быть просто частью настройки вашего узла.
Это не самое чистое решение, но оно может помочь вам с этим справиться.
У меня есть оболочка check_nrpe, которая делает это. Я создаю хост-объект с целью «имя», установленным на что-то вроде «RANDOM-001» (также поддерживает «RNDRBN-001»). Когда оболочка check_nrpe видит это, она использует конечные цифры, чтобы выбрать из списка Perl имена хостов серверов для отправки проверки. Затем просто добавьте это как имя хоста в описание проверки службы. Более поздняя версия оболочки получает имена хостов из файла Nagios hostgroups.cfg.