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

Базовая конфигурация 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, чтобы я видел все эти конкретные службы для каждого добавляемого хоста? Понятно, что это уже здесь и уже работает на локальном хосте. Я изо всех сил пытаюсь понять, какая организация нужна, чтобы это произошло.

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

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

Ссылка на скрипт: Вот.

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

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

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

Так, например, предположим, что server1 имеет 4 процессора, что означает, что загрузка 2,8 является идеальной (0,7 на процессор). Марионетка через 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.

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

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

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

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