Я недавно начал использовать 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 файл так, чтобы я видел все эти определенные сервисы для каждого хоста, который я добавляю? Ясно, что это уже здесь и уже функционирует на localhost. Я изо всех сил пытаюсь перенестись, моя голова вокруг организации должна была заставить это произойти.
Спасибо за любого и весь совет.
Не так давно я написал действительно хороший сценарий автоматической установки 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.
Надеюсь, я вам помог.
Вам нужна какая-то конфигурация управляющее программное обеспечение для настройки и установки демона nrpe на каждом удаленном хосте, а также для развертывания конфигураций и, в конечном итоге, ваших плагинов.
Могу я предложить Ansible для этой задачи.
https://github.com / bobmaerten / ansible-role-nagios-nrpe-server