Мониторинг уведомлений Nagios с помощью Alerta в Ubuntu 16.04

Alerta – это веб-приложение, которое объединяет и дублирует уведомления систем мониторинга. Alerta интегрируется с разными инструментами мониторинга (например, с Nagios, Zabbix, Sensu, InfluxData Kapacitor).

Данный мануал поможет установить Alerta и настроить приложение для сбора уведомлений Nagios, популярной открытой системы мониторинга.

Требования

На сервер 1 нужно установить:

На сервер 2 установите:

1:Установка брокера событий

Расширить функциональность Nagios можно с помощью модулей Nagios Event Broker (NEB). NEB – механизм интеграции событий Nagios, а модули NEB – это общие библиотеки, которые позволяют интегрировать другие службы с Nagios. На этом этапе нужно установить Nagios to Alerta Gateway.

Войдите на сервер 1 как пользователь с расширенными привилегиями.

Модуль Nagios to Alerta Gateway не предоставляет предварительно сконфигурированных системных пакетов, поэтому вам придется собрать их из исходного кода. Для этого нужно установить дополнительные инструменты и файлы разработки. Вам также понадобится Git, чтобы вы могли извлечь исходный код GitHub.

sudo apt-get install -y git curl gcc make libcurl4-openssl-dev

После установки зависимостей клонируйте исходный код из репозитория GitHub:

git clone https://github.com/alerta/nagios-alerta.git

Откройте каталог nagios-alerts:

cd nagios-alerta

Скомпилируйте модуль nagios-alerta с помощью make:

make nagios4
cd ./src && make nagios4
make[1]: Entering directory '/home/8host/nagios-alerta/src'
gcc -fPIC -g -O2 -DHAVE_CONFIG_H -I../include -I../include/nagios4 -lcurl -o alerta-neb.o alerta-neb.c -shared  -lcurl
make[1]: Leaving directory '/home/8host/nagios-alerta/src'

Если ваш вывод отличается, убедитесь, что все зависимости установлены.

Затем запустите установку:

sudo make install

Вывод команды сообщит, что модуль был установлен в /usr/lib/nagios:

cd ./src && make install
make[1]: Entering directory '/home/8host/nagios-alerta/src'
[ -d /usr/lib/nagios ] || mkdir /usr/lib/nagios
install -m 0644 alerta-neb.o /usr/lib/nagios
make[1]: Leaving directory '/home/8host/nagios-alerta/src'

2: Настройка модуля Nagios-Alerta

Теперь нужно настроить Nagios для отправки уведомлений в Alerta.

Включите брокер в конфигурационном файле Nagios.

sudo vi /usr/local/nagios/etc/nagios.cfg

Найдите раздел, в котором находятся директивы broker_module:

...
# EVENT BROKER MODULE(S)
# This directive is used to specify an event broker module that should
# by loaded by Nagios at startup.  Use multiple directives if you want
# to load more than one module.  Arguments that should be passed to
# the module at startup are separated from the module path by a space.
#
[...]
#broker_module=/somewhere/module1.o
#broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
...

Чтобы настроить модуль для Alerta, нужно предоставить два обязательных аргумента:

  • URL: адрес, по которому можно взаимодействовать с Alerta API.
  • key: ключ API, который позволяет проходить аутентификацию и отслеживать события.

Все подробности вы можете найти в разделе 3 и 4 мануала Мониторинг оповещений Zabbix с помощью Alerta в Ubuntu 16.04.

Чтобы настроить интеграцию с Alerta, добавьте в конфигурационный файл строку:

...
broker_module=/usr/lib/nagios/alerta-neb.o http://your_alerta_server_ip/api key=ALERTA_API_KEY
...

Здесь можно использовать несколько опциональных аргументов:

  • env: определяет имя среды. По умолчанию среда называется Production.
  • hard_only: направляет результаты только в Hard state. Больше об этом можно узнать в документации Nagios. Чтобы включить этот режим, установите значение 1.
  • debug: чтобы включить режим отладки, установите значение 1.

С учетом дополнительных опций строка выглядит так:

...
broker_module=/usr/lib/nagios/alerta-neb.o http://your_alerta_server_ip/api key=ALERTA_API_KEY env=Production hard_only=1 debug=1
...

Сохраните и закройте файл.

Чтобы уведомления определялись по имени среды и названию сервиса, вы можете установить переменные _Environment и _Service.

Примечание: Больше об этом можно узнать в документации Nagios.

Откройте конфигурационный файл объекта Nagios по умолчанию, который вы найдете в каталоге /usr/local/nagios/etc/objects/:

sudo vi /usr/local/nagios/etc/objects/localhost.cfg

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

...
define host{
use                     linux-server            ; Name of host template to use
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name               localhost
alias                   localhost
address                 127.0.0.1
}
...

Добавьте в конец блока переменные _Environment и _Service:

...
host_name               localhost
alias                   localhost
address                 127.0.0.1
_Environment            Production

_Service                Nagios

}
...

Теперь отметьте все события, связанные с нехваткой места в системном разделе, как System. Найдите раздел файла, который определяет, как проверить свободное пространство:

...
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%!/
}
...

Свяжите его с сервисом System:

...
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%!/
_Service                        System
}
...

Сохраните и закройте файл.

Перезапустите Nagios, чтобы обновить настройки:

sudo systemctl restart nagios.service

Проверьте лог сервиса, чтобы убедиться, что он запустился правильно:

tail /usr/local/nagios/var/nagios.log

Команда должна вернуть:

...
[1505804481] [alerta] Initialising Nagios-Alerta Gateway module, v3.5.0
[1505804481] [alerta] debug is on
[1505804481] [alerta] states=Hard (only)
[1505804481] [alerta] Forward service checks, host checks and downtime to http://your_alerta_server_ip/api
[1505804481] Event broker module '/usr/lib/nagios/alerta-neb.o' initialized successfully.
[1505804481] Successfully launched command file worker with pid 25416

Теперь Nagios будет отправлять уведомления, как только система или сервис выйдет из строя. Давайте сгенерируем тестовое событие.

3: Проверка настройки

Попробуйте сгенерировать тестовое предупреждение, чтобы убедиться, что приложения могут взаимодействовать. По умолчанию Nagios отслеживает объем свободного места на сервере. Создайте большой файл, чтобы заставить Nagios отправить предупреждение об использовании файловой системы.

Сначала определите, сколько свободного места у вас на сервере Nagios:

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  3.1G   16G   17% /

В данном случае на сервере свободно 16 Г.

Используйте команду fallocate, чтобы создать файл, который занимает более 80% свободного места на диске – этого должно быть достаточно для запуска предупреждения Nagios:

fallocate -l 14G /tmp/temp.img

В течение нескольких минут Nagios выведет предупреждение о количестве свободного места на диске и отправит уведомление в Alerta. Вы увидите это уведомление в информационной панели Alerta.

После этого можно удалить временный файл и восстановить дисковое пространство.

rm -f /tmp/temp.img

Через минуту Nagios отправит сообщение о восстановлении. После этого предупреждение исчезнет с главной панели управления Alerta, но вы сможете просмотреть все закрытые события во вкладке Closed.

Кликните по строке события, чтобы просмотреть более подробную информацию.

Заключение

В этом мануале вы узнали, как настроить Nagios для отправки уведомлений на другой сервер приложению Alerta.

Alerta – удобное приложение для отслеживания оповещений нескольких систем. Если разные части вашей инфраструктуры используют разные системы мониторинга (например, Nagios и Zabbix), вы можете объединить уведомления обеих систем в в рамках панели Alerta.

Tags: , ,