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

Вступление

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

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

Предпосылки

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

Кроме того, если вы хотите настроить функцию почтовых уведомлений, вам необходимо правильно настроить Postfix. Инструкции для этого можно найти здесь:How To Install and Setup Postfix on Ubuntu 14.04. Postfix устанавливается вместе с пакетами Icinga, но его можно настроить после настройки 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) и семь служб, например:

Icinga Initial Overview

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

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

sudo chmod u+s `which ping`

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

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

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

  1. Мониторинг «общедоступных услуг»

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

Icinga Monitoring Methods

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

Для реализации второго метода мы установим 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: Мониторинг через агента

Как упоминалось ранее, мы будем использовать 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.

  • command[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), затем щелкните ссылку «Сведения о службе». Вы должны увидеть список всех служб, для которых вы настроили мониторинг.

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

Icinga User Interface Example

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

Заключение

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

Удачи!

Related