Поиск по сайту:

Как использовать Icinga для мониторинга ваших серверов и служб в Ubuntu 14.04


Введение

В этом руководстве мы рассмотрим установку Icinga, системы мониторинга с открытым исходным кодом, на Ubuntu 14.04. Мы рассмотрим некоторые базовые настройки, чтобы вы могли контролировать сетевые службы и ресурсы хоста через веб-интерфейс. Мы также будем использовать Nagios Remote Plugin Executor (NRPE), который будет установлен в качестве агента на удаленных системах для мониторинга их локальных ресурсов (использование диска, количество зарегистрированных пользователей и т. д.).

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

Предпосылки

Для выполнения этого руководства вам потребуется root-доступ к Ubuntu 14.04 VPS. Инструкции по настройке можно найти здесь (шаги 3 и 4): Initial Server Setup with Ubuntu 14.04.

Кроме того, если вы хотите настроить функцию почтовых уведомлений, вам необходимо правильно настроить Postfix. Инструкции по этому поводу можно найти здесь: Как установить и настроить Postfix в Ubuntu 14.04. Postfix устанавливается вместе с пакетами Icinga, но его можно настроить после установки Icinga.

Установить Айсингу

Мы установим Icinga с помощью пакетов. Кроме того, мы будем использовать MySQL в качестве нашей СУБД — PostgreSQL, SQLite и Oracle — другие поддерживаемые варианты.

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

sudo add-apt-repository ppa:formorer/icinga

Затем обновите базу данных пакетов apt:

sudo apt update

Теперь установите Icinga и MySQL с помощью apt:

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

Теперь вам будет представлен ряд подсказок относительно вашей установки Icinga. Вот список подсказок и ответы на них:

  • Конфигурация MySQL: введите новый пароль root-пользователя MySQL
  • Конфигурация PostFix: выберите \Интернет-сайт
  • Конфигурация PostFix: введите полное доменное имя (например, example.com)
  • Настройка icinga-cgi: введите пароль пользователя \icingaadmin (войдите для доступа к Icinga).
  • Настройка icinga-common: введите «Нет» для включения внешних команд
  • Настройка icinga-idoutils: введите «Да» для настройки базы данных для icinga-idoutils с помощью dbconfig-common
  • Настройка icinga-idoutils: выберите «mysql» в качестве типа базы данных
  • Настройка icinga-idoutils: введите корневой пароль MySQL (который вы только что назначили выше)
  • Настройка icinga-idoutils: введите новый пароль пользователя базы данных icinga-idoutils

Icinga теперь установлена, но нам все еще нужно настроить несколько вещей, прежде чем мы сможем ее запустить. Обратите внимание, что HTTP-сервер 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) и семь служб, например:

В верхней строке показано, что один отслеживаемый хост находится в состоянии «Включен», а в нижней строке показано, что имеется семь отслеживаемых служб «ОК».

Если статус localhost «Неактивен», вам может потребоваться изменить разрешения вашей команды ping. Выполните следующую команду, чтобы разрешить пользователю nagios использовать ping команда:

sudo chmod u+s `which ping`

Давайте добавим больше хостов и сервисов для мониторинга!

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

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

  1. Мониторинг «общедоступных сервисов»
  2. Мониторинг с помощью агента, установленного на удаленном узле, для сбора и отправки данных в Icinga

При использовании первого метода общедоступные службы относятся к службам, доступным через локальную сеть или Интернет. Общие примеры включают HTTP, почту, SSH и ICMP ping. Этот метод полезен для мониторинга систем, на которые вы не можете (или не хотите) устанавливать агент, а также для мониторинга сетевых интерфейсов, обращенных к пользователю.

Для реализации второго метода мы установим NRPE в качестве агента на удаленных хостах для мониторинга их локальных ресурсов. Это позволит Icinga отслеживать такие вещи, как использование диска, запущенные процессы и другую системную статистику, которую нельзя получить с помощью первого метода.

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

Поскольку первый метод просто отслеживает службы прослушивания, конфигурация для этого метода полностью выполняется на сервере Icinga. С помощью этого метода можно отслеживать несколько вещей, поэтому мы продемонстрируем, как отслеживать общедоступный интерфейс веб-сервера.

Создайте файл с именем вашего хоста с помощью этой команды (замените yourhost своим собственным именем хоста):

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

Теперь добавьте следующее, заменив значения host_name на ваше собственное имя хоста (в обоих местах), псевдоним на описание хоста и адрес со значением общедоступного 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: мониторинг через агента

Как упоминалось ранее, мы будем использовать NRPE в качестве нашего агента для сбора данных удаленного хоста для Icinga. Это означает, что NRPE должен быть установлен на всех хостах, которые будут отслеживаться этим методом, а сервер Icinga также должен быть настроен на получение данных для каждого хоста.

Давайте перейдем к установке NRPE.

Установка NRPE на удаленном хосте

На хосте, который вы хотите отслеживать, обновите apt:

sudo apt update

Теперь установите плагины NRPE и Nagios:

sudo apt install nagios-plugins nagios-nrpe-server

Найдите имя вашей корневой файловой системы (поскольку это один из элементов, которые мы хотим отслеживать):

df -h /

Мы будем использовать имя файловой системы в конфигурации NRPE для мониторинга использования вашего диска (вероятно, это /dev/vda). Теперь откройте nrpe.cfg для редактирования:

sudo vi /etc/nagios/nrpe.cfg

Файл конфигурации NRPE очень длинный и полон комментариев. Есть несколько строк, которые вам нужно будет найти и изменить:

  • server_address: укажите частный IP-адрес этого узла.
  • allowed_hosts: укажите частный IP-адрес вашего сервера Icinga
  • команда[check_hda1]: измените /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 определяет, что будет отслеживаться, включая пороговые значения состояния. Вот несколько примеров, которые вы можете добавить в файл конфигурации вашего хоста:

Пинг:

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

SSH (notifications_enabled, установленный на 0, отключает уведомления для службы):

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 для мониторинга всех ваших удаленных хостов, давайте проверим пользовательский интерфейс.

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

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

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

Icinga имеет множество функций, поэтому не стесняйтесь просматривать интерфейс, чтобы узнать, что вы можете узнать о своих хостах и услугах.

Заключение

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

Удачи!