Как использовать 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:
- Мониторинг «общедоступных сервисов»
- Мониторинг с помощью агента, установленного на удаленном узле, для сбора и отправки данных в 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 имеет множество функций, поэтому не стесняйтесь просматривать интерфейс, чтобы узнать, что вы можете узнать о своих хостах и услугах.
Заключение
Теперь, когда вы отслеживаете свои хосты и некоторые из их служб, вы можете потратить некоторое время на то, чтобы выяснить, какие службы имеют для вас решающее значение, чтобы вы могли начать их мониторинг. Вы также можете настроить уведомления, чтобы, например, вы получали электронное письмо, когда использование вашего диска достигает предупреждения или критического порога, или ваш основной веб-сайт не работает, чтобы вы могли решить ситуацию быстро или даже до того, как проблема возникнет.
Удачи!