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

Как установить инструмент мониторинга Icinga 2 на Debian 9.2


В этом руководстве мы обсудим, как установить и настроить последнюю версию инструмента веб-мониторинга Icinga 2 в выпуске Debian 9.2, чтобы контролировать все важные устройства сетевой инфраструктуры, такие как физические или виртуальные серверы или виртуальные машины, маршрутизаторы, коммутаторы, устройства брандмауэра и другие сетевые IoT-устройства. Он также может отслеживать состояние сетевых протоколов, таких как HTTP, FTP, SMTP, IMAP или других сетевых служб, ресурсы хостов, физические датчики, а также программное обеспечение, загрузку ЦП, память, дисковое пространство и т. д. и почти все взаимосвязанные сетевым устройствам через ICMP или ping-запросы.

Icinga, по происхождению ответвление системы мониторинга Nagios, представляет собой современное приложение для мониторинга сети с открытым исходным кодом, написанное на PHP и широко развернутое в Linux с компонентами Apache/Nginx, PHP и MySQL/MariaDB, также известными как стеки LAMP или LEMP. Icinga 2 можно настроить для уведомления системных или сетевых администраторов по почте, SMS, чату или другим типам предупреждений о сети, системах, службах или других связанных сетевых сбоях, а также может генерировать графики о простоях сети или производительности.

Требования

  • Debian 9.2, установленный на чистом компьютере или на виртуальном частном сервере.
  • Одна из карт сетевых интерфейсов сервера, настроенная со статическим IP-адресом.
  • Прямой доступ к учетной записи root через консоль или удаленно через службу SSH или привилегии sudo root для локальной или удаленной учетной записи.
  • Доменное имя, частное или общедоступное, в зависимости от вашего развертывания, с соответствующими записями DNS, настроенными для веб-служб.
  • Почтовая служба, правильно настроенная в вашем помещении для отправки почтовых оповещений.

Начальная конфигурация

Прежде чем приступить к установке и настройке инструмента веб-мониторинга Icinga 2 на собственном сервере, сначала убедитесь, что система соответствует всем требованиям к программному обеспечению для компиляции и установки приложения. На первом этапе обновите системные репозитории и пакеты программного обеспечения, выполнив приведенную ниже команду.

apt update
apt upgrade

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

apt install wget bash-completion unzip

Затем настройте имя хоста для вашей системы, выполнив следующую команду. Соответственно замените переменную вашего имени хоста.

hostnamectl set-hostname icinga

Проверьте имя хоста машины и файл hosts, введя приведенные ниже команды.

hostnamectl
cat /etc/hostname
hostname –s

Наконец, перезагрузите сервер Debian, чтобы применить обновления ядра и правильно изменить имя хоста.

init 6

Icinga 2 — это приложение для мониторинга сети, которое можно настроить из Интернета, и его функциональность в основном основана на языке программирования PHP на стороне сервера. Для выполнения файловых скриптов PHP приложения в системе должны быть установлены и работать веб-сервер, такой как HTTP-сервер Apache, и шлюз обработки PHP. Чтобы установить веб-сервер Apache и интерпретатор PHP вместе со всеми необходимыми модулями PHP, необходимыми Icinga для правильной работы, введите следующую команду в консоли сервера.

apt install apache2 libapache2-mod-php7.0 php7.0-xml php7.0-opcache php7.0-xml php7.0-mbstring php7.0-json php7.0-curl php7.0-ldap php7.0-cli php7.0-gd php7.0-intl php7.0-readline

После установки Apache и PHP проверьте, запущен ли веб-сервер и прослушивает ли он сетевые подключения через порт 80, выполнив следующую команду с привилегиями root.

netstat –tlpn

Если сетевая утилита netstat не установлена по умолчанию в вашей системе Debian, выполните приведенную ниже команду, чтобы установить ее.

apt install net-tools

Изучив выходные данные команды netstat, вы увидите, что веб-сервер Apache прослушивает входящие сетевые подключения через порт 80. Для той же задачи вы также можете использовать команду ss, которая по умолчанию автоматически устанавливается на Дебиан 9.

ss- tulpn

Если в вашей системе включен брандмауэр, например приложение брандмауэра UFW, вам следует добавить новое правило, разрешающее HTTP-трафику проходить через брандмауэр, введя следующую команду.

ufw allow WWW

или

ufw allow 80/tcp

Если вы используете необработанные правила iptables для управления правилами брандмауэра на сервере Debian, добавьте следующее правило, чтобы разрешить входящий трафик порта 80 на брандмауэре, чтобы посетители могли просматривать веб-интерфейс Icinga2.

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

Затем включите и примените следующие модули Apache, которые будут использоваться для перенаправления HTTP-соединений на HTTPS, введя приведенную ниже команду.

a2enmod rewrite
systemctl restart apache2

Наконец, проверьте, может ли веб-страница по умолчанию веб-сервера Apache отображаться в браузерах вашего клиента, посетив IP-адрес вашего компьютера Debian или ваше доменное имя или полное доменное имя сервера по протоколу HTTP. Если вы не знаете IP-адрес своего компьютера, выполните команды ifconfig или ip a, чтобы узнать IP-адрес вашего сервера. Страница Apache по умолчанию для Debian будет отображаться в вашем браузере, как показано на снимке экрана ниже.

http://ваш_домен.tld

Чтобы получить доступ к приложению мониторинга Icinga 2 по протоколу HTTPS, который будет защищать трафик для ваших клиентов, введите следующую команду, чтобы включить модуль SSL веб-сервера Apache и файл конфигурации сайта SSL. Также включите модуль перезаписи Apache, чтобы заставить пользователей посещать интерфейс через HTTPS.

a2enmod ssl rewrite
a2ensite default-ssl.conf

Затем откройте файл конфигурации SSL-сайта Apache по умолчанию в текстовом редакторе и включите правила перезаписи URL-адресов, добавив следующие строки кода после директивы DocumentRoot, как показано в приведенном ниже примере:

nano /etc/apache2/sites-enabled/default-ssl.conf

Выдержка из файла конфигурации сайта SSL:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
Require all granted
</Directory>

Кроме того, внесите следующие изменения в строку VirtualHost, чтобы она выглядела так, как показано в приведенном ниже отрывке:

        <VirtualHost *:443>

Закройте файл TLS Apache и откройте файл /etc/apache2/sites-enabled/000-default.conf для редактирования и добавьте те же правила перезаписи URL-адресов, что и для файла конфигурации SSL. Вставьте строки кода после оператора DocumentRoot, как показано в примере ниже.

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Наконец, перезапустите демон Apache, чтобы применить все настроенные правила и посетить ваш домен по протоколу HTTP. Поскольку вы используете пару самозаверяющих сертификатов, автоматически выдаваемых Apache при установке, в браузере должно отображаться предупреждение об ошибке, как показано на снимке экрана ниже.

systemctl restart apache2

https://вашдомен.tld

Примите предупреждение, чтобы продолжить и быть перенаправленным на веб-страницу Apache по умолчанию по протоколу HTTPS. Следующая страница будет отображаться в вашем браузере.

В случае, если приложение брандмауэра UFW блокирует входящие сетевые подключения к порту HTTPS, вам следует добавить новое правило, разрешающее трафику HTTPS проходить через брандмауэр, введя следующую команду.

ufw allow 'WWW Full'

или

ufw allow 443/tcp

Если iptables является приложением брандмауэра по умолчанию, установленным для защиты вашей системы Debian на сетевом уровне, добавьте следующее правило, чтобы разрешить входящий трафик порта 443 в брандмауэре, чтобы посетители могли просматривать ваше доменное имя.

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

На следующем шаге нам нужно внести некоторые дополнительные изменения в файл конфигурации PHP по умолчанию, чтобы убедиться, что следующие переменные PHP включены, а параметр часовой пояс PHP правильно настроен и соответствует географическому местоположению вашей системы. Откройте файл /etc/php/7.0/apache2/php.ini для редактирования и убедитесь, что следующие строки настроены следующим образом. Также изначально сделайте резервную копию конфигурационного файла PHP.

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

Найдите, отредактируйте и измените следующие переменные в файле конфигурации php.ini:

php_value max_execution_time 300
php_value memory_limit 128M
php_value max_input_time 300
date.timezone = Europe/London

Замените переменную time.zone в соответствии с вашим физическим временем, сверившись со списком часовых поясов, предоставленным документами PHP по следующей ссылке http://php.net/manual/ en/timezones.php

Если вы хотите увеличить скорость загрузки страниц вашего веб-сайта с помощью подключаемого модуля OPCache, доступного для PHP7, добавьте следующие параметры OPCache внизу файла конфигурации интерпретатора PHP, как описано ниже:

opcache.enable=1 
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Закройте файл конфигурации php.ini и проверьте конец файла конфигурации PHP, чтобы проверить правильность добавления переменных, выполнив приведенную ниже команду.

tail /etc/php/7.0/apache2/php.ini

После внесения изменений, описанных выше, перезапустите демон apache, чтобы применить новые изменения, введя следующую команду.

systemctl restart apache2

Наконец, создайте информационный файл PHP, выполнив следующую команду, и проверьте правильность настройки часового пояса PHP, посетив файл сценария информации PHP из браузера по следующему URL-адресу, как показано на рисунке ниже. Прокрутите вниз до настройки date, чтобы проверить конфигурацию часового пояса php.

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

https://domain.tld/info.php

Icinga 2 хранит пользователей, контакты и другие собранные данные в специальной базе данных СУБД, такой как MySQL, SQLite или PostgreSQL. В этом руководстве мы настроим Icinga с базой данных MariaDB, ответвлением базы данных MySQL, в качестве серверной части. Выполните приведенную ниже команду, чтобы установить базу данных MariaDB и модуль PHP, необходимый для доступа к базе данных mysql.

apt install mariadb-server mariadb-client php7.0-mysql

После того, как вы установили MariaDB, убедитесь, что демон запущен и прослушивает соединения на локальном хосте, порт 3306, выполнив команду netstat или ss.

netstat –tlpn | grep mysql

Затем войдите в консоль MySQL и защитите корневую учетную запись MariaDB, введя следующие команды.

mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit

Теперь хорошо защитите базу данных MariaDB, выполнив сценарий mysql_secure_installation , предоставленный установочными пакетами из репозиториев Debian. Во время работы скрипт задаст ряд вопросов, предназначенных для защиты базы данных MariaDB, таких как: изменить пароль администратора MySQL, удалить анонимных пользователей, отключить удаленный вход в систему root и удалить тестовую базу данных. Выполните сценарий, введя приведенную ниже команду, и убедитесь, что вы вводите «да» на все заданные вопросы, чтобы полностью защитить демон MySQL. Используйте приведенный ниже вывод скрипта, кроме как в качестве руководства.

sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
 SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

Чтобы проверить безопасность MariaDB, попробуйте войти в базу данных с консоли без пароля root. Доступ к базе данных должен быть запрещен, если для учетной записи root не указан пароль. Если указан пароль, процесс входа в систему должен быть предоставлен консоли MySQL, как показано на снимке экрана ниже.

mysql -h localhost -u root
mysql -h localhost -u root –p

Затем войдите в консоль базы данных MariaDB и сначала создайте базу данных, которая будет использоваться приложением Icinga2, и пользователя с паролем, который будет использоваться для управления этой базой данных, введя следующие команды. Замените это имя базы данных, пользователя и пароль соответственно.

mysql –u root -p
create database icingadb;
grant all privileges on icingadb.* to 'icinga_user'@'localhost' identified by 'icinga_pass';
flush privileges
exit

Затем создайте вторую базу данных MySQL, которая будет использоваться для хранения пользователей веб-интерфейса Icinga2, групп и других пользовательских данных веб-интерфейса, выполнив следующие команды. Кроме того, как и в приведенной выше базе данных, убедитесь, что вы соответствующим образом заменили имя базы данных и учетные данные и выбрали надежный пароль для пользователя базы данных.

mysql –u root –p
create database icinga_users;
grant all privileges on icinga_users.* to 'icinga_user'@'localhost' identified by 'icinga_pass';
flush privileges
exit

Чтобы применить все сделанные до сих пор изменения, перезапустите демоны MySQL и Apache и проверьте, работают ли демоны, введя следующие команды.

systemctl restart mysql apache2
systemctl status mysql apache2

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

После того, как все системные требования будут выполнены для установки нашего приложения веб-мониторинга, продолжите установку приложения вместе с модулем MySQL, необходимым для доступа к базе данных MySQL, введя приведенную ниже команду. Icinga 2 имеет предварительно скомпилированные бинарные пакеты, предлагаемые репозиториями Debian 9. Установка будет выполняться через менеджер пакетов Debian 9 apt.

apt install icinga2 icinga2-ido-mysql

При установке предварительно скомпилированных двоичных файлов Icinga2 из репозиториев Debian 9 на вашем экране появится ряд подсказок для настройки приложения. При первом запросе вас спросят, хотите ли вы настроить и включить Icinga 2 для использования модуля MySQL. Выберите «Да» в приглашении и нажмите клавишу [enter], чтобы продолжить, как показано на рисунке ниже.

В следующем запросе вас спросят, хотите ли вы настроить базу данных для icinga2-ido-mysql с параметром dbconfig-common. Выберите «Нет» в подсказке и нажмите клавишу [enter], чтобы завершить установку Icinga 2.

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

systemctl start icinga2.service
systemctl status icinga2.service

На следующем шаге установите веб-интерфейс Icinga 2 и пакеты утилит командной строки из Debian 9 с помощью приведенной ниже команды.

apt install icingaweb2 icingacli

Прежде чем приступить к настройке Icinga 2 из Интернета, перезапустите демон Icinga 2, чтобы применить все изменения и проверить статус приложения, выполнив приведенную ниже команду.

systemctl restart icinga2.service
systemctl status icinga2.service

Затем удалите файл index.html по умолчанию, установленный веб-сервером Apache, на корневой путь, а также удалите ранее созданный файл info.php.

rm /var/www/html/index.html
rm /var/www/html/info.php

Теперь установите схему MySQL для базы данных Icinga, выполнив следующую команду. Схема базы данных MySQL находится в каталоге /usr/share/icinga2-ido-mysql/schema/.

mysql -u root icingadb -p < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Чтобы выполнить установку Icinga 2 из Интернета, сгенерируйте токен установки с помощью следующей команды. Обязательно запишите этот токен, потому что мы напишем его позже в веб-интерфейсе, когда нас попросят.

icingacli setup token create

Если вы не сможете найти этот токен позже, вы можете запустить приведенную ниже команду, чтобы отобразить сгенерированный токен.

icingacli setup token show

Теперь перейдите к процессу установки веб-интерфейса Icinga2, открыв браузер и перейдя по IP-адресу или доменному имени вашего сервера по протоколу HTTP по следующему URL-адресу.

http://your_domain.tld/icingaweb2/setup

На первом экране установки вам будет предложено записать сгенерированный ранее токен, чтобы начать процесс установки, как показано на снимке экрана ниже. После того, как вы добавите свой токен, нажмите кнопку «Далее», чтобы продолжить процесс установки.

На следующем экране установки вам будет предложено включить некоторые модули для веб-установки Icinga 2. Выберите модули Doc и Monitoring и нажмите кнопку «Далее», чтобы продолжить, как показано на рисунке ниже.

Затем веб-установщик Icinga2 выполнит серию проверок системы и модулей PHP, чтобы определить, выполнены ли все требования, чтобы продолжить процесс установки. Прокрутите вниз до списка всех необходимых модулей PHP, установленных и правильно настроенных, и нажмите кнопку «Далее», чтобы перейти к следующему разделу установки, как показано на изображениях ниже.

На следующем экране выберите «База данных» в качестве внутреннего метода аутентификации для Icinga Web 2 и нажмите кнопку «Далее», чтобы продолжить.

На следующем шаге добавьте имя базы данных Icinga 2 Web MySQL и учетные данные для доступа к этой базе данных. Эта база данных будет использоваться для хранения пользователей и групп веб-интерфейса Icinga 2. Используйте информацию базы данных для второй базы данных, созданной ранее. Добавьте icingaweb_db в качестве имени для этого ресурса и оставьте переменные Host, Port и Character set по умолчанию. Не проверяйте параметры Persistent и SSL и нажмите кнопку «Проверить конфигурацию», чтобы проверить подключение к базе данных, как показано на изображении ниже. Когда вы закончите, нажмите кнопку «Далее», чтобы перейти к следующему разделу установщика.

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

На следующем экране укажите административное имя пользователя для управления веб-интерфейсом Icinga2 и выберите надежный пароль для этой учетной записи. Когда вы закончите, нажмите кнопку «Далее», чтобы перейти к следующему экрану установки.

Настройте приложение Icinga и конфигурацию ведения журнала со следующими настройками, а когда вы закончите, нажмите кнопку «Далее», чтобы продолжить.

  • Отметить Показать трассировку стека
  • Тип хранилища=база данных
  • Тип ведения журнала=Файл
  • Уровень ведения журнала=ошибка
  • Путь к файлу=/var/log/icingaweb2/icingaweb2.log

На следующем экране появится сообщение, информирующее вас о том, что Icinga Web2 успешно настроена, а в подробном отчете будут показаны все выполненные на данный момент настройки. Просмотрите отчет и нажмите кнопку «Далее», чтобы перейти к следующему разделу установки.

Нажмите кнопку «Далее», чтобы перейти к настройке модуля мониторинга Icinga 2, как показано на рисунке ниже.

На следующем экране добавьте имя для Icinga2 Backend, выберите IDO в качестве типа бэкенда и нажмите кнопку «Далее», чтобы продолжить.

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

nano /etc/icinga2/features-enabled/ido-mysql.conf

Выдержка из файла ido-mysql.conf:

library "db_ido_mysql"
 
object IdoMysqlConnection "ido-mysql" {
  user = "icinga_user",
  password = "icinga_pass",
  host = "localhost",
  database = "icingadb"
}

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

systemctl restart icinga2.service

Добавьте информацию о базе данных Icinga, чтобы настроить среду ресурсов IDO. Используйте информацию базы данных для первой созданной базы данных, как показано на рисунке ниже. После того, как вы закончите редактирование информации базы данных, нажмите кнопку «Проверить конфигурацию», чтобы подтвердить ресурс IDO Icinga Monitoring, и нажмите кнопку «Далее», чтобы перейти к следующему экрану установки.

Настройте Icinga Command Transport со следующими параметрами и нажмите кнопку «Далее», чтобы продолжить.

  • Название транспорта=icinga2
  • Тип транспорта=локальный командный файл
  • Командный файл=/var/run/icinga2/cmd/icinga2.cmd

На следующем экране оставьте переменные по умолчанию, настроенные для мониторинга безопасности, как показано на изображении ниже, и нажмите кнопку «Далее», чтобы продолжить.

На следующем экране новое сообщение сообщит вам, что модуль мониторинга Icinga2 успешно настроен. Просмотрите отображаемый отчет, чтобы убедиться, что все настроено правильно, и нажмите кнопку Готово, чтобы завершить установку.

После того, как процесс установки будет успешно завершен, поздравительное сообщение сообщит вам, что Icinga Web 2 успешно установлена. Нажмите на ссылку «Войти», чтобы быть перенаправленным на страницу входа в Icinga2.

Войдите в Icinga Web 2 с учетными данными, настроенными в процессе установки, и вы будете перенаправлены на панель инструментов Icinga Web 2, где вы увидите список текущих отслеживаемых служб и системных ресурсов, принадлежащих вашему серверу.

Наконец, снова войдите в командную строку сервера и выполните следующие команды, чтобы убедиться, что журналы Icinga Web 2 будут созданы.

mkdir -p /var/log/icingaweb2/
chgrp -R icingaweb2 /var/log/icingaweb2/
chmod -R 775 /var/log/icingaweb2/

Чтобы заставить посетителей просматривать интерфейс Icinga Web 2 по протоколу HTTPS, создайте новый файл .htaccess в корневом каталоге вашего веб-сервера со следующим содержимым.

nano /var/www/html/.htaccess

Выдержка из файла .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
 
RewriteEngine on
Options -Indexes

Вот и все! Вы успешно установили и настроили приложение для мониторинга сети Icinga 2 в Debian 9.2. Однако, поскольку HTTP-сервер Apache использует самозаверяющие сертификаты для шифрования трафика между сервером и браузером клиента, при каждом доступе к домену в вашем браузере всегда будет генерироваться и отображаться предупреждающее сообщение. В этом случае вам следует купить сертификат, выданный доверенным центром сертификации, или получить бесплатную пару сертификатов от ЦС Let’s Encrypt.

Для получения информации о других пользовательских конфигурациях Icinga 2 посетите страницу документации по следующему адресу: https://www.icinga.com/docs.