Nagios: различия между версиями
Rain (обсуждение | вклад) м (→Ссылки) |
Rain (обсуждение | вклад) |
||
(не показано 13 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Nagios - мощная система мониторинга и уведомлений о состоянии серверов и сетей. | |||
Рассмотрим установку, конфигурирование и принципы работы на базе системы, работающей под Debian GNU/Linux. | |||
== Установка == | |||
Для запуска Nagios на нашем сервере понадобится установить следующие пакеты: | |||
* nagios3 - подтянет остальные необходимые пакеты | |||
* nagios-images - логотипы систем и сервисов | |||
* nagios-plugins-basic - набор плагинов - мини-программ, выполняющихся для проверки того или иного параметра. Подтянется автоматически при установке пакета nagios3 | |||
Командуем: | |||
apt-get install nagios3 nagios-images | |||
и приступаем к настройке. В процессе установки будет задан вопрос о пароле администратора Nagios - пользователе nagiosadmin. | |||
Помимо основных пакетов, будет установлен также php и веб-сервер (при желании можно переопределить устанавливаемый веб-сервер, указав его явно. По умолчанию ставится Apache) | |||
После установки попасть в веб-интерфейс можно по адресу http://localhost/nagios3/. По умолчанию описана рабочая конфигурация только нескольких сервисов на локалхосте. | |||
== Настройка и принципы конфигурирования == | |||
Основной файл настроек - '''/etc/nagios3/nagios.cfg'''. В нем, помимо задания основных параметров, подключаются также и другие конфиги, раскиданные по подкаталогам. Для удобства работы будет полезно создать (и объявить в файле настроек) каталоги, где будут находиться конфиг-файлы наших хостов и собственных плагинов. Допишем где-нибудь в начале файла: | |||
cfg_dir=/etc/nagios3/hosts | |||
cfg_dir=/etc/nagios3/custom_plugins | |||
и создадим указанные каталоги: | |||
mkdir -pm 755 /etc/nagios3/hosts /etc/nagios3/custom_plugins | |||
Nagios обрабатывает только конфиги с расширением '''.cfg''' (поэтому, например, можно не обращать внимания на файлы .cfg-sample в некоторых системах). | |||
В Nagios есть несколько типов описаний, одни описания могут служить шаблонами для других. Рассмотрим описание какого-либо хоста. | |||
В созданном подкаталоге hosts/ создадим конфиг-файл с удобным для себя названием, позволяющим быстро определить, к какому хосту он относится. В файле описания хоста ожидается как минимум одна основная секция: | |||
<pre> | |||
define host{ | |||
use generic-host | |||
host_name FTP | |||
alias ftp.linuxoid.in | |||
display_name FTP Server | |||
address ftp.linuxoid.in | |||
} | |||
</pre> | |||
где: | |||
* '''use''' - отсылка на описание темплейта '''generic-host''' в '''/etc/nagios3/conf.d/generic-host_nagios2.cfg''' | |||
* '''host_name''' - имя хоста для использования далее по конфигу. Также используется для отображения в веб-интерфейсе. | |||
* '''alias''' - псевдоним хоста | |||
* '''display_name''' - имя для отображения в веб-интерфейсе (в будущем, на данный момент не работает). Иначе говоря, можно задать имя хоста = имени домена, а для отображения использовать понятное человеку слово | |||
* '''address''' - IP-адрес или домен, для которого будет делаться проверка | |||
'''generic-host''' - темплейт, описанный в файле '''/etc/nagios3/conf.d/generic-host_nagios2.cfg'''. Там для него описываются основные параметры, вроде включения уведомлений и периодов проверки. В свою очередь, в описании идут отсылки еще к нескольким шаблонам: | |||
* '''check_command''' - команда для проверки доступности хоста. | |||
* '''notification_period''' - шаблон расписания, которое описывается в файле '''/etc/nagios3/conf.d/timeperiods_nagios2.cfg''' | |||
* '''contact_groups''' - адрес группы получателей уведомлений; описывается в '''/etc/nagios3/conf.d/contacts_nagios2.cfg''', в свою очередь там есть 2 подраздела: | |||
** '''contactgroup''' - то, на что, собственно, и идет отсылка. В группе описываются участники, по умолчанию это root, для которого идет отсылка на: | |||
** '''contact''' - тут задается email для отправки уведомлений, переопределяются настройки периодов уведомлений и т.п., в том числе задается команда для выполнения при отправке уведомления о сервисах и хостах (о ней ниже). | |||
Далее в конфиге хоста описываются проверяемые сервисы, например: | |||
<pre> | |||
define service{ | |||
use generic-service | |||
host_name FTP | |||
service_description Disk Usage | |||
check_command ssh_all_disk!75!90 | |||
} | |||
</pre> | |||
где: | |||
* '''use''' - отсылка на шаблон описания сервиса. generic-service по умолчанию описывается в файле '''/etc/nagios3/conf.d/generic-service_nagios2.cfg''' | |||
* '''host_name''' - то, для чего будет делаться проверка сервиса - отсылка на описанный выше хост | |||
* '''service_description''' - описание сервиса - то, как оно будет выглядеть в веб-интерфейсе | |||
* '''check_command''' - отсылка на команду для проверки параметра. Восклицательными знаками разделяются передаваемые команде аргументы. | |||
'''generic-service''' и его описание в '''/etc/nagios3/conf.d/generic-service_nagios2.cfg''' переопределяет настройки уведомлений для конкретного сервиса. Т.е., например, один параметр (сервис) одного и того же хоста может мониториться только в рабочие дни с уведомлением группе людей, а другой - 24 часа в сутки с уведомлением админу. | |||
'''check_command''' - отсылка на описание команды, заданной в одном из конфигурационных файлов каталога с плагинами - в Debian это '''/etc/nagios-plugins/config/''', плюс, как условились выше, свои команды будем размещать в '''/etc/nagios3/custom_plugins''' | |||
В Debian команды плагинов разделены по отдельным группам: disk, load, mail и так далее. Рассмотрим упомянутую выше команду '''ssh_all_disk'''. Команда не входит в базовую поставку пакета с плагинами, поэтому была описана дополнительно в файле '''/etc/nagios3/custom_plugins/disk.cfg''': | |||
<pre> | |||
define command{ | |||
command_name ssh_all_disk | |||
command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e" | |||
} | |||
</pre> | |||
Описание крайне простое: | |||
* '''command_name''' задает имя команды - то, на что будет идти отсылка в других конфигах | |||
* '''command_line''' - выполняемая команда, которая должна вернуть OK (код выхода 0), WARNING (код выхода 1) или CRITICAL (код выхода 2), плюс опционально - результат. В данном случае одна команда вложена в другую - при проверке выполняется '''/usr/lib/nagios/plugins/check_by_ssh''', которая подключается по SSH на удаленный хост, указанный в переменной '''$HOSTADDRESS$''' (где идет отсылка на address в описании конкретного хоста) с пользователем, под которым работает nagios (по умолчанию nagios). Подключение происходит по ключам, так что предварительно надо позаботиться о создании нужного пользователя на удаленном хосте (useradd -rml nagios), создания и обмена с ним ключами. Далее на удаленном хосте выполняется команда, переданная в кавычках - '''/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e''' - т.е., выполняется команда для проверки диска (не забываем поставить на удаленном хосте nagios-plugins-basic), для которой первым аргументом передается значение для предупреждения, вторым - критическое значение заполненности диска. | |||
Помимо команд плагинов, Nagios также подключает файл '''/etc/nagios3/commands.cfg''', в котором описываются команды, выполняемые при создании уведомлений. | |||
=== Дополнительные параметры конфигурации === | |||
Помимо перечисленных выше основных параметров, можно задавать ряд дополнительных, предназначенных больше для удобства. | |||
* '''/etc/nagios3/conf.d/extinfo_nagios2.cfg''' описывает логотип, отображаемый возле хоста. В свою очередь там идет отсылка на описание '''debian-servers''', которое находится в '''hostgroups_nagios2.cfg''' | |||
* '''/etc/nagios3/conf.d/hostgroups_nagios2.cfg'''. Тут описываются группы хостов. В '''members''' через запятую перечисляются хосты - так, как они указаны в '''host_name''' в конфиге хоста. | |||
* '''/etc/nagios3/conf.d/services_nagios2.cfg''' - файл, делающий проверки основного сервиса для хоста, включенного в определенную группу в предыдущем файле. Например, для всех хостов, указанных как '''ssh-servers''' в группах хостов автоматически включится проверка работоспособности SSH | |||
* '''/etc/nagios3/conf.d/service_groups.cfg''' - здесь можно сгруппировать несколько хостов в одну группу, например: | |||
<pre> | |||
define servicegroup { | |||
servicegroup_name Hosting | |||
members FTP,FTP,Mail,Mail,MySQL,MySQL,Web Server,HTTP | |||
} | |||
</pre> | |||
где: | |||
* '''servicegroup_name''' - название группы, которое будет отображаться в веб-интерфейсе | |||
* '''members''' - пары "имя,сервис", где "имя" - название хоста, включенного в группу, "сервис" - сервис для проверки работоспособности хоста | |||
== Приложение 1 == | |||
Скрипт для мониторинга используемой памяти на Linux-системах. Это немного переделанный вариант [http://bezha.od.ua/nagios-memory-nrpe/ этого скрипта], позволяющий не использовать (не устанавливать) bc. | |||
Скрипт необходимо сохранить в '''/usr/lib/nagios/plugins/check_memory.sh'''. Кроме этого, нужно сделать описание команды, например, в '''/etc/nagios3/custom_plugins/memory.cfg''': | |||
<pre> | |||
# 'ssh_check_mem' command definition | |||
define command{ | |||
command_name ssh_check_mem | |||
command_line /usr/lib64/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib64/nagios/plugins/check_memory.sh -w '$ARG1$' -c '$ARG2$'" | |||
} | |||
</pre> | |||
После этого можно ссылаться на команду в конфигах: | |||
check_command ssh_check_mem!60!85 | |||
Скрипт: | |||
---- | |||
<source lang=bash> | |||
#!/bin/bash | |||
# | |||
# Script to check memory usage on Linux. Ignores memory used by disk cache. | |||
# | |||
print_help() { | |||
echo "Usage:" | |||
echo "[-w] Warning level as a percentage" | |||
echo "[-c] Critical level as a percentage" | |||
exit 0 | |||
} | |||
while test -n "$1"; do | |||
case "$1" in | |||
--help|-h) | |||
print_help | |||
exit 0 | |||
;; | |||
-w) | |||
warn_level=$2 | |||
shift | |||
;; | |||
-c) | |||
critical_level=$2 | |||
shift | |||
;; | |||
*) | |||
echo "Unknown Argument: $1" | |||
print_help | |||
exit 3 | |||
;; | |||
esac | |||
shift | |||
done | |||
if [ "$warn_level" == "" ]; then | |||
echo "No Warning Level Specified" | |||
print_help | |||
exit 3; | |||
fi | |||
if [ "$critical_level" == "" ]; then | |||
echo "No Critical Level Specified" | |||
print_help | |||
exit 3; | |||
fi | |||
free=`free -m | grep "buffers/cache" | awk '{print $4}'` | |||
used=` free -m | grep "buffers/cache" | awk '{print $3}'` | |||
total=$(($free+$used)) | |||
result=$(($used*100/$total)) | |||
if [ "$result" -lt "$warn_level" ]; then | |||
echo "Memory OK. $result% used." | |||
exit 0; | |||
elif [ "$result" -ge "$warn_level" ] && [ "$result" -le "$critical_level" ]; then | |||
echo "Memory WARNING. $result% used." | |||
exit 1; | |||
elif [ "$result" -gt "$critical_level" ]; then | |||
echo "Memory CRITICAL. $result% used." | |||
exit 2; | |||
fi | |||
</source> | |||
==Ссылки== | ==Ссылки== | ||
* Полезно при изучении: | |||
** http://linuxshare.ru/docs/net/nagios/nagios_osvaiv.html | |||
** http://ubuntologia.ru/nagios | |||
** http://openwiki.ru/wiki/Nagios | |||
** http://xgu.ru/wiki/Nagios | |||
* [http://www.daemony.ru/?p=673 Мониторинг параметров через ssh] | * [http://www.daemony.ru/?p=673 Мониторинг параметров через ssh] | ||
* [http://bezha.od.ua/nagios-memory-nrpe/ Скрипт для мониторинга памяти] ( | * [http://bezha.od.ua/nagios-memory-nrpe/ Скрипт для мониторинга памяти] (оригинал) | ||
* [http://nagios.sourceforge.net/docs/3_0/toc.html Официальная документация] | |||
[[Category:Мониторинг]] |
Текущая версия на 12:58, 29 июня 2012
Nagios - мощная система мониторинга и уведомлений о состоянии серверов и сетей.
Рассмотрим установку, конфигурирование и принципы работы на базе системы, работающей под Debian GNU/Linux.
Установка
Для запуска Nagios на нашем сервере понадобится установить следующие пакеты:
- nagios3 - подтянет остальные необходимые пакеты
- nagios-images - логотипы систем и сервисов
- nagios-plugins-basic - набор плагинов - мини-программ, выполняющихся для проверки того или иного параметра. Подтянется автоматически при установке пакета nagios3
Командуем:
apt-get install nagios3 nagios-images
и приступаем к настройке. В процессе установки будет задан вопрос о пароле администратора Nagios - пользователе nagiosadmin.
Помимо основных пакетов, будет установлен также php и веб-сервер (при желании можно переопределить устанавливаемый веб-сервер, указав его явно. По умолчанию ставится Apache)
После установки попасть в веб-интерфейс можно по адресу http://localhost/nagios3/. По умолчанию описана рабочая конфигурация только нескольких сервисов на локалхосте.
Настройка и принципы конфигурирования
Основной файл настроек - /etc/nagios3/nagios.cfg. В нем, помимо задания основных параметров, подключаются также и другие конфиги, раскиданные по подкаталогам. Для удобства работы будет полезно создать (и объявить в файле настроек) каталоги, где будут находиться конфиг-файлы наших хостов и собственных плагинов. Допишем где-нибудь в начале файла:
cfg_dir=/etc/nagios3/hosts cfg_dir=/etc/nagios3/custom_plugins
и создадим указанные каталоги:
mkdir -pm 755 /etc/nagios3/hosts /etc/nagios3/custom_plugins
Nagios обрабатывает только конфиги с расширением .cfg (поэтому, например, можно не обращать внимания на файлы .cfg-sample в некоторых системах).
В Nagios есть несколько типов описаний, одни описания могут служить шаблонами для других. Рассмотрим описание какого-либо хоста.
В созданном подкаталоге hosts/ создадим конфиг-файл с удобным для себя названием, позволяющим быстро определить, к какому хосту он относится. В файле описания хоста ожидается как минимум одна основная секция:
define host{ use generic-host host_name FTP alias ftp.linuxoid.in display_name FTP Server address ftp.linuxoid.in }
где:
- use - отсылка на описание темплейта generic-host в /etc/nagios3/conf.d/generic-host_nagios2.cfg
- host_name - имя хоста для использования далее по конфигу. Также используется для отображения в веб-интерфейсе.
- alias - псевдоним хоста
- display_name - имя для отображения в веб-интерфейсе (в будущем, на данный момент не работает). Иначе говоря, можно задать имя хоста = имени домена, а для отображения использовать понятное человеку слово
- address - IP-адрес или домен, для которого будет делаться проверка
generic-host - темплейт, описанный в файле /etc/nagios3/conf.d/generic-host_nagios2.cfg. Там для него описываются основные параметры, вроде включения уведомлений и периодов проверки. В свою очередь, в описании идут отсылки еще к нескольким шаблонам:
- check_command - команда для проверки доступности хоста.
- notification_period - шаблон расписания, которое описывается в файле /etc/nagios3/conf.d/timeperiods_nagios2.cfg
- contact_groups - адрес группы получателей уведомлений; описывается в /etc/nagios3/conf.d/contacts_nagios2.cfg, в свою очередь там есть 2 подраздела:
- contactgroup - то, на что, собственно, и идет отсылка. В группе описываются участники, по умолчанию это root, для которого идет отсылка на:
- contact - тут задается email для отправки уведомлений, переопределяются настройки периодов уведомлений и т.п., в том числе задается команда для выполнения при отправке уведомления о сервисах и хостах (о ней ниже).
Далее в конфиге хоста описываются проверяемые сервисы, например:
define service{ use generic-service host_name FTP service_description Disk Usage check_command ssh_all_disk!75!90 }
где:
- use - отсылка на шаблон описания сервиса. generic-service по умолчанию описывается в файле /etc/nagios3/conf.d/generic-service_nagios2.cfg
- host_name - то, для чего будет делаться проверка сервиса - отсылка на описанный выше хост
- service_description - описание сервиса - то, как оно будет выглядеть в веб-интерфейсе
- check_command - отсылка на команду для проверки параметра. Восклицательными знаками разделяются передаваемые команде аргументы.
generic-service и его описание в /etc/nagios3/conf.d/generic-service_nagios2.cfg переопределяет настройки уведомлений для конкретного сервиса. Т.е., например, один параметр (сервис) одного и того же хоста может мониториться только в рабочие дни с уведомлением группе людей, а другой - 24 часа в сутки с уведомлением админу.
check_command - отсылка на описание команды, заданной в одном из конфигурационных файлов каталога с плагинами - в Debian это /etc/nagios-plugins/config/, плюс, как условились выше, свои команды будем размещать в /etc/nagios3/custom_plugins
В Debian команды плагинов разделены по отдельным группам: disk, load, mail и так далее. Рассмотрим упомянутую выше команду ssh_all_disk. Команда не входит в базовую поставку пакета с плагинами, поэтому была описана дополнительно в файле /etc/nagios3/custom_plugins/disk.cfg:
define command{ command_name ssh_all_disk command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e" }
Описание крайне простое:
- command_name задает имя команды - то, на что будет идти отсылка в других конфигах
- command_line - выполняемая команда, которая должна вернуть OK (код выхода 0), WARNING (код выхода 1) или CRITICAL (код выхода 2), плюс опционально - результат. В данном случае одна команда вложена в другую - при проверке выполняется /usr/lib/nagios/plugins/check_by_ssh, которая подключается по SSH на удаленный хост, указанный в переменной $HOSTADDRESS$ (где идет отсылка на address в описании конкретного хоста) с пользователем, под которым работает nagios (по умолчанию nagios). Подключение происходит по ключам, так что предварительно надо позаботиться о создании нужного пользователя на удаленном хосте (useradd -rml nagios), создания и обмена с ним ключами. Далее на удаленном хосте выполняется команда, переданная в кавычках - /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e - т.е., выполняется команда для проверки диска (не забываем поставить на удаленном хосте nagios-plugins-basic), для которой первым аргументом передается значение для предупреждения, вторым - критическое значение заполненности диска.
Помимо команд плагинов, Nagios также подключает файл /etc/nagios3/commands.cfg, в котором описываются команды, выполняемые при создании уведомлений.
Дополнительные параметры конфигурации
Помимо перечисленных выше основных параметров, можно задавать ряд дополнительных, предназначенных больше для удобства.
- /etc/nagios3/conf.d/extinfo_nagios2.cfg описывает логотип, отображаемый возле хоста. В свою очередь там идет отсылка на описание debian-servers, которое находится в hostgroups_nagios2.cfg
- /etc/nagios3/conf.d/hostgroups_nagios2.cfg. Тут описываются группы хостов. В members через запятую перечисляются хосты - так, как они указаны в host_name в конфиге хоста.
- /etc/nagios3/conf.d/services_nagios2.cfg - файл, делающий проверки основного сервиса для хоста, включенного в определенную группу в предыдущем файле. Например, для всех хостов, указанных как ssh-servers в группах хостов автоматически включится проверка работоспособности SSH
- /etc/nagios3/conf.d/service_groups.cfg - здесь можно сгруппировать несколько хостов в одну группу, например:
define servicegroup { servicegroup_name Hosting members FTP,FTP,Mail,Mail,MySQL,MySQL,Web Server,HTTP }
где:
- servicegroup_name - название группы, которое будет отображаться в веб-интерфейсе
- members - пары "имя,сервис", где "имя" - название хоста, включенного в группу, "сервис" - сервис для проверки работоспособности хоста
Приложение 1
Скрипт для мониторинга используемой памяти на Linux-системах. Это немного переделанный вариант этого скрипта, позволяющий не использовать (не устанавливать) bc.
Скрипт необходимо сохранить в /usr/lib/nagios/plugins/check_memory.sh. Кроме этого, нужно сделать описание команды, например, в /etc/nagios3/custom_plugins/memory.cfg:
# 'ssh_check_mem' command definition define command{ command_name ssh_check_mem command_line /usr/lib64/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib64/nagios/plugins/check_memory.sh -w '$ARG1$' -c '$ARG2$'" }
После этого можно ссылаться на команду в конфигах:
check_command ssh_check_mem!60!85
Скрипт:
#!/bin/bash
#
# Script to check memory usage on Linux. Ignores memory used by disk cache.
#
print_help() {
echo "Usage:"
echo "[-w] Warning level as a percentage"
echo "[-c] Critical level as a percentage"
exit 0
}
while test -n "$1"; do
case "$1" in
--help|-h)
print_help
exit 0
;;
-w)
warn_level=$2
shift
;;
-c)
critical_level=$2
shift
;;
*)
echo "Unknown Argument: $1"
print_help
exit 3
;;
esac
shift
done
if [ "$warn_level" == "" ]; then
echo "No Warning Level Specified"
print_help
exit 3;
fi
if [ "$critical_level" == "" ]; then
echo "No Critical Level Specified"
print_help
exit 3;
fi
free=`free -m | grep "buffers/cache" | awk '{print $4}'`
used=` free -m | grep "buffers/cache" | awk '{print $3}'`
total=$(($free+$used))
result=$(($used*100/$total))
if [ "$result" -lt "$warn_level" ]; then
echo "Memory OK. $result% used."
exit 0;
elif [ "$result" -ge "$warn_level" ] && [ "$result" -le "$critical_level" ]; then
echo "Memory WARNING. $result% used."
exit 1;
elif [ "$result" -gt "$critical_level" ]; then
echo "Memory CRITICAL. $result% used."
exit 2;
fi