Мониторинг сервера и сервисов при помощи Icinga в Ubuntu 14.04

Published by Leave your thoughts

Icinga – это популярная открытая система мониторинга, которая проверяет хосты и сервисы и сообщает администратору их состояние. Icinga является ответвлением Nagios, потому они совместимы и имеют много общего.

Данное руководство поможет установить Icinga, а также выполнить базовую настройку этой системы. При помощи веб-интерфейса Icinga можно мониторить сетевые сервисы и ресурсы хоста. Также в руководстве используется NRPE (Nagios Remote Plugin Executor), который будет установлен на удалённую систему в качестве агента для отслеживания локальных ресурсов (использования дискового пространства, количества зарегистрированных пользователей и т.п.).

Требования

Для выполнения руководства понадобится:

Установка Icinga

Сначала нужно установить пакет Icinga. В качестве СУБД в руководстве используется MySQL; Icinga также поддерживает PostgreSQL, SQLite и Oracle.

Запустите следующую команду, чтобы добавить PPA системы Icinga в пакетный менеджер:

sudo add-apt-repository ppa:formorer/icinga

Обновите базу пакетов apt:

sudo apt update

Установите Icinga и MySQL:

sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client

Во время установки Icinga задаст ряд вопросов:

  • MySQL Configuration: Введите новый пароль root-пользователя MySQL.
  • PostFix Configuration: Сначала выберите Internet Site. Затем введите FQDN (например, example.com).
  • Configuring icinga-cgi: Введите пароль для пользователя icingaadmin (учётная запись для доступа к системе Icinga).
  • Configuring icinga-common: Введите No, чтобы разрешить использование внешних команд.
  • Configuring icinga-idoutils: Введите Yes, чтобы автоматически создать БД для icinga-idoutils при помощи dbconfig-common. Выберите тип базы данных mysql. Введите root-пароль MySQL. Выберите пароль для пользователя БД icinga-idoutils.

Установка Icinga успешно завершена. Но прежде чем запускать систему, нужно настроить её.

Примечание: Во время установки также были установлены серверы Apache и Postfix.

Добавьте пользователя Apache по имени www-data в группу nagios.

sudo usermod -a -G nagios www-data

Включите демон ido2db, чтобы он запускался во время загрузки системы. Этот демон хранит события и настройки базы данных Icinga. Отредактируйте стандартные настройки Icinga.

sudo vi /etc/default/icinga

Измените значение строки IDO2DB на yes:

IDO2DB=yes

Сохраните и закройте файл. Теперь запустите сервис ido2db:

sudo service ido2db start

Включите модуль idomod, скопировав образец файла idoutils.cfg в активные конфигурации Icinga.

sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg

Теперь система Icinga готова к запуску:

sudo service icinga restart

Пользовательский интерфейс Icinga Проверьте, работает ли пользовательский интерфейс Icinga. Для этого откройте ссылку http://yourhost/icinga и введите пароль icingaadmin, выбранный во время установки Icinga.

На данный момент система Icinga мониторит один хост (localhost, сервер, на котором хранится текущая установка Icinga) и семь сервисов:

1UP   0/0/0DOWN  0/0/0UNREACHABLE   0 PENDING   0/1 TOTAL
7OK   0/0/0WARNING  0/0/0 CRITICAL 0/0/0/UNKNOWN 0 PENDING 0/7 TOTAL

Верхний ряд вывода сообщает, что единственный отслеживаемый хост запущен (UP), а нижний ряд – что все 7 сервисов работают.

Если состояние локального хоста DOWN, попробуйте сменить привилегии команды ping. Следующая команда разрешает пользователю nagios запускать ping.

sudo chmod u+s `which ping`

Способы мониторинга при помощи Icinga

Существует два основных способа мониторить хосты и сервисы при помощи Icinga:

  1. Отслеживание общедоступных сервисов (такие сервисы доступны в локальной сети или через Интернет): как правило, это HTTP, почта, SSH ICMP ping. Этот метод подходит для систем, в которых нельзя установить агент, а также для мониторинга сетевых интерфейсов.
  2. Мониторинг при помощи агента, установленного на удалённый хост; агент собирает и отправляет данные Icinga. Для реализации этого метода  можно установить NRPE в качестве такого агента. Это позволит Icinga отслеживать использование дискового пространства, запущенные процессы и другие данные системы, которые не позволяет получить первый метод.

Метод 1: Мониторинг общедоступных сервисов

Первый метод просто отслеживает сервисы. Такая настройка выполняется на сервере Icinga. Для примера рассмотрим, как можно отслеживать работу открытого интерфейса веб-сервера.

Создайте файл с именем хоста (вместо yourhost укажите имя своего хоста):

sudo vi /etc/icinga/objects/yourhost.cfg

Затем добавьте следующий код, заменив host_name именем своего хоста, alias – описанием хоста, address – внешним IP-адресом.

define host {
use                     generic-host
host_name               web-1
alias                   A Web Server
address                 107.170.xxx.xxx
}
define service {
use                     generic-service
host_name               web-1
service_description     HTTP
check_command           check_http
}

Сохраните и закройте файл. Перезапустите Icinga, чтобы обновить настройки:

sudo service icinga reload

Метод 2: Мониторинг при помощи агента

Как говорилось ранее, в данном руководстве в качестве агента Icinga на удалённой системе будет использоваться NRPE.

NRPE нужно установить на все серверы, которые будут отслеживаться при помощи Icinga, а сервер Icinga должен быть настроен для поддержки данных каждого хоста.

Установка NRPE на удалённый хост

Обновите базу пакетов системы на сервере, который нужно отслеживать:

sudo apt update

Установите NRPE и Nagios Plugins:

sudo apt install nagios-plugins nagios-nrpe-server

Узнайте имя файловой системы root (она будет отслеживаться):

df -h /

Потом имя файловой системы нужно будет указать в настройках NRPE для отслеживания дискового пространства. Откройте и отредактируйте nrpe.cfg:

sudo vi /etc/nagios/nrpe.cfg

Конфигурационный файл NRPE очень длинный и содержит много комментариев. В нём нужно найти и отредактировать несколько строк:

  • server_address: укажите внутренний IP-адрес удалённого сервера.
  • allowed_hosts: укажите внутренний IP-адрес сервера Icinga.
  • command[check_hda1]: укажите имя root файловой системы (/dev/hda1).

Вышеупомянутые строки в результате должны выглядеть примерно так (подставьте соответствующие значения):

server_address=client_private_IP

allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda

Обратите внимание: файл содержит несколько других команд, которые будут запускаться, если настроить сервер Icinga для их поддержки. Также стоит обратить внимание на то, что NRPE прослушивает порт 5666 (server_port=5666). Если этот порт  блокируется брандмауэром, откройте его на сервере Icinga.

Сохраните и закройте файл. Перезапустите NRPE:

sudo service nagios-nrpe-server restart

Установив и настроив NRPE на всех хостах, которые нужно отслеживать, добавьте эти хосты в настройки сервера Icinga.

Добавление хостов в настройки Icinga

Перейдите на сервер Icinga и создайте в каталоге /etc/icinga/objects новый конфигурационный файл для каждого хоста, который будет отслеживаться.

Примечание: Замените yourhost именем своего хоста.

sudo vi /etc/icinga/objects/yourhost.cfg

Добавьте в файл следующий код, заменив host_name именем удалённого хоста (в данном примере используется wordpress-1), alias – описанием хоста, значение address – IP-адресом удалённого хоста.

define host {
use                     generic-host
host_name               wordpress-1
alias                   My first wordpress server
address                 10.128.xxx.xxx
}

Добавьте такой блок кода для каждого сервиса, который нужно отслеживать. Обратите внимание: check_command определяет, что именно будет отслеживаться (в том числе состояние). Вот некоторые примеры кода, который можно  добавить в конфигурационный файл:

Ping:
define service {
use                             generic-service
host_name                       wordpress-1
service_description             PING
check_command                   check_ping!100.0,20%!500.0,60%
}

SSH (значение 0 для notifications_enabled отключает предупреждения сервиса):

define service {
use                             generic-service
host_name                       wordpress-1
service_description             SSH
check_command                   check_ssh
notifications_enabled           0
}

Нагрузка:

define service {
use                             generic-service
host_name                       wordpress-1
service_description             Current Load
check_command                   check_load!5.0!4.0!3.0!10.0!6.0!4.0
}

Текущие пользователи:

define service {
use                             generic-service
host_name                       wordpress-1
service_description             Current Users
check_command                   check_users!20!50
}

Дисковое пространство:

define service {
use                             generic-service
host_name                       wordpress-1
service_description             Disk Space
check_command                   check_all_disks!20%!10%
}

Примечание: Строка use generic-service наследует значения шаблона сервиса по имени generic-service.

Сохраните и закройте файл. Перезапустите настройки Icinga.

sudo service icinga reload

Пользовательский интерфейс

Настроив мониторинг нескольких хостов (вне зависимости от метода), откройте пользовательский интерфейс Icinga (http://youricingaserver.com/icinga, учётная запись acingaadmin) и перейдите по ссылке Service Detail. На экране должен появиться список всех отслеживаемых сервисов.

Icinga предоставляет огромное количество возможностей, с которыми вы можете ознакомиться самостоятельно.

Заключение

Теперь система мониторинга Icinga установлена и полностью готова к использованию. Решите, какие сервисы имеют решающее значение для работы сервера, и начните их мониторинг. Также можно настроить уведомления, которые будут приходить по электронной почте в случае, если использование диска достигло критического уровня или главный сайт отключился из-за сбоя. Это позволяет предупредить появление ошибки или же оперативно устранить её.

Tags: , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>