Базовая конфигурация 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
    }

Который приводит к этому на панели инструментов:

awesome

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

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

2
задан 28 February 2015 в 01:56
2 ответа

Не так давно я написал действительно хороший сценарий автоматической установки 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 на процессор). 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
ответ дан 3 December 2019 в 10:44

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

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

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

1
ответ дан 3 December 2019 в 10:44

Теги

Похожие вопросы