Базовая конфигурация Nagios (для быстрого добавления новых машин)

Базовая конфигурация Nagios (для быстрого добавления новых машин)

Недавно я начал использовать Nagios для мониторинга около 25 серверов (в основном виртуальных, с некоторыми автономными). Большинство серверов (включая сам хост Nagios) работают под управлением Ubuntu 14.04 LTS, а некоторые — под управлением 12.04 LTS. Поэтому я подумал, что могу просто использовать NRPE и покончить с этим.

Настройка NRPE оказалась для меня довольно сложной. Например, для простой команды check_disk мне пришлось вручную указать, какой раздел проверять, исключив все остальные разделы/файловые системы, как показано ниже:

command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 57% -x /dev -x /run -x /run/lock -x /run/shm -x /run/user -x /sys/fs/cgroup

В противном случае мои пороговые значения предупреждения и критического состояния немедленно срабатывали на разделах sysfs, proc или других.

Затем я взглянул на базовый сервисный монитор, который хост Nagios выполняет на себе. Он указан в /usr/local/nagios/etc/localhost.cfg и содержит следующее (извините! Я не понимаю, почему он не форматируется должным образом!)

define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             PING
check_command           check_ping!100.0,20%!500.0,60%
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Root Partition
check_command           check_local_disk!20%!10%!/
    }




define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Users
check_command           check_local_users!20!50
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Total Processes
check_command           check_local_procs!250!400!RSZDT
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Load
check_command           check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Swap Usage
check_command           check_local_swap!20!10
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             SSH
check_command           check_ssh
notifications_enabled       0
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             HTTP
check_command           check_http
notifications_enabled       0
    }

В результате на панели управления появляется следующее:

потрясающий

Это ИДЕАЛЬНО для меня. Это именно то, что я хочу, чтобы отображалось на каждом добавляемом мной хосте. Вместо того, чтобы возиться с пользовательскими командами, как именно мне «скопировать» это на каждый хост через файл NRPE conf, чтобы я мог видеть все эти конкретные службы для каждого добавляемого мной хоста? Очевидно, что это уже здесь и уже функционирует на локальном хосте. Я с трудом представляю себе организацию, необходимую для того, чтобы это произошло.

Спасибо за любые советы.

решение1

Не так давно я написал действительно хороший скрипт автоустановщика NRPE, который, как я считаю, может вам помочь, если вы отредактируете его в соответствии со своими потребностями. Скрипт включает в себя множество встроенных проверок, которые добавляются в nrpe.cfgфайл каждого хоста. Это означает, что вы можете настроить проверки, которые вам нужны, и убедиться, что каждый хост, на котором запущен скрипт, также будет иметь их, это о стороне клиента.

Ссылка на сценарий:Здесь.

Что касается серверной части (Nagios), вы можете установить менеджер конфигурации Nagios, например NagioSQL, который поможет вам управлять вашими хостами и службами более удобным способом через графический интерфейс.

Более того, чтобы убедиться, что на всех ваших хостах выполняются указанные вами проверки, просто создайте группу служб, в которую войдут все службы (проверки), которые вы хотите отслеживать, а затем просто прикрепите эту группу служб к каждому хосту, который вы отслеживаете.

Позвольте мне рассказать вам, что я сделал в своей компании. Я хотел убедиться, что каждый сервер отслеживается с помощью проверки check_load, но поскольку у нас в компании нет базового оборудования, а это значит, что у каждого сервера разные характеристики, и они check_loadрассчитываются по ядрам/процессорам в машине, я добавил в модуль «Nagios_client» на нашем сервере Puppet, custom_factкоторый определяет, сколько процессоров имеется в машине, и соответствующим образом настраивает Nagios check_load.

Например, допустим, что server1 имеет 4 процессора, что означает, что загрузка 2,8 является идеальной (0,7 на процессор). Puppet facterопределяет количество процессоров, а затем редактирует сервер nrpe.cfgследующим образом:

command[check_load]=/usr/local/nagios/libexec/check_load -w 2.9,3.0,3.1 -c 4.0,5.0,6.0

Затем, например, в NagioSQL вы можете использовать "функцию импорта", которая позволяет вам импортировать *.cfgфайлы, которые будут загружены в Nagios как хосты и службы. Таким образом, вы можете создать один host.cfgфайл и с помощью скрипта дублировать его на каждом хосте, который вы хотите отслеживать, и просто изменить имя хоста/IP каждой машины, и это перенесет вас на еще один шаг к более автоматическим конфигурациям.

В моем случае, например, Puppet понимает, что он впервые запущен на машине, а затем создает соответствующий host.cfgфайл в Nagios.

Я считаю, что с Puppet + NagioSQL администрирование Nagios станет гораздо более простой задачей.

Что касается ваших трудностей с настройкой любых проверок... Вы всегда можете написать свой собственный скрипт и настроить Nagios для его запуска. Например, давайте возьмем вашу check_diskкоманду, это очень богатая команда, которая позволяет вам отображать все виды данных, которые вам не нужны и важны.

Итак, у меня была та же проблема с check_procs, еще одной очень богатой командой, которая дает вам все виды данных... которые мне не нужны, поэтому я написал простой скрипт проверки, который делает именно то, что мне нужно, и настроил его в Nagios. Пример:

#!/bin/bash
# This script checks for running processes for mt.js and adb-server.js
# Script by Itai Ganot 2015 .
process="$1"
appname=$(basename $0)
if [ -z "$1" ]; then
    echo "Please specify a process to check"
    exit 1
fi
ps -ef | grep "$process" | egrep -v "grep|$appname" &>/dev/null
if [ "$?" -eq "0" ] ; then
    stat="OK"
    exitcode="0"
    msg="Process $process is running"
else
    stat="Critical"
    exitcode="2"
    msg="There are currently no running processes of $process"
fi
pid=$(ps -ef | grep "$process" | egrep -v "grep|$appname" | awk '{print $2}')
echo "$stat: $msg Process PID: $pid"
exit $exitcode

Он дает мне меньше информации, чем настоящий, check_procsно дает именно ту, которая мне нужна.

Короче говоря, если check_diskу вас возникли трудности с настройкой вашей команды, то просто создайте свой собственный скрипт, в этом и заключается прелесть Nagios.

Надеюсь, я вам помог.

решение2

Вам понадобится программное обеспечение для управления конфигурацией, чтобы настроить и установить демон nrpe на каждом удаленном хосте, а также развернуть конфигурации и, в конечном итоге, ваши плагины.

Могу ли я предложитьАнсибльдля этой задачи.

https://github.com/bobmaerten/ansible-role-nagios-nrpe-server

Связанный контент