Как установить инструмент мониторинга Icinga 2 на CentOS 8
На этой странице
- Предпосылки
- Настройка репозиториев
- Установка и настройка стека LAMP
- Установка и настройка Icinga2
- Установка и настройка Icingaweb2
- Настройка Icinga Web 2 через веб-интерфейс
- Проверьте установку Icinga 2 и Icinga Web 2
- Заключение
Мониторинг — одна из важнейших составляющих серверной инфраструктуры и центра обработки данных. Это поможет вам обнаружить проблемы и проблемы, которые будут возникать на ваших серверах, чтобы вы могли быстрее решить эти проблемы. Существует несколько инструментов мониторинга с открытым исходным кодом, и одним из самых популярных является Icinga 2.
Icinga создана как форк популярного инструмента мониторинга Nagios и теперь переписана с нуля на C++. Как ответвление от проекта Nagios, Icinga поставляется с дополнительными инструментами и функциями, включая директор icinga, модули icinga и плагины icinga. Кроме того, он поддерживает распределенный мониторинг, что позволяет вам управлять несколькими экземплярами Icinga с одной панели.
В этом руководстве мы пошагово покажем вам, как установить и настроить Icinga2 с Apache2 и MariaDB на сервере CentOS 8.
Предпосылки
- Сервер CentOS 8. Убедитесь, что он обновлен до последней версии.
- Не менее 2 ГБ ОЗУ и 2 ядра. Если больше, будет лучше.
- Пользователь с правами Sudo.
Настройка репозиториев
Во-первых, вам нужно добавить репозиторий epel, remi и icinga в систему centos 8. Затем вам нужно установить инструмент dnf \\config-manager\\ и включить репозиторий \\PowerTools\\ с помощью этого инструмента.
1. Добавьте репозиторий epel и remi для серверов Centos 8, выполнив следующие команды.
sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
2. Теперь запустите приведенную ниже команду, чтобы загрузить и добавить репозиторий Icinga для системы centos 8.
sudo dnf install -y https://packages.icinga.com/epel/icinga-rpm-release-8-latest.noarch.rpm
3. После этого выполните следующие команды, чтобы установить инструмент dnf config-manager и включить репозиторий PowerTools.
sudo dnf install -y 'dnf-command(config-manager)'
sudo dnf config-manager --set-enabled powertools
4. После завершения всего процесса проверьте все включенные репозитории в вашей системе, используя приведенную ниже команду.
sudo dnf repolist
Вы увидите вывод, аналогичный приведенному ниже, и убедитесь, что репозитории epel, remi, icinga-* и powertools присутствуют в списке.
repo id repo name appstream CentOS Linux 8 - AppStream baseos CentOS Linux 8 - BaseOS epel Extra Packages for Enterprise Linux 8 - x86_64 epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64 extras CentOS Linux 8 - Extras icinga-stable-release ICINGA (stable release for epel) powertools CentOS Linux 8 - PowerTools remi-modular Remi's Modular repository for Enterprise Linux 8 - x86_64 remi-safe Safe Remi's RPM repository for Enterprise Linux 8 - x86_64
Установка и настройка стека LAMP
Инструмент мониторинга Icinga состоит из двух основных компонентов: \icinga2\, который обрабатывает все задания по мониторингу, и \icingaweb2\, который представляет собой мощное, чистое и быстрое веб-приложение на основе PHP, которое позволяет вам управлять стеком Icinga из веб-браузер. Теперь вы будете устанавливать и настраивать базовый стек LAMP в системе Centos 8.
1. Включите модуль remi для PHP 7.4 с помощью приведенной ниже команды.
sudo dnf module enable -y php:remi-7.4
Затем выполните следующую команду, чтобы установить базовые пакеты стека LAMP.
sudo dnf install -y httpd mariadb-server mariadb php php-cli php-devel php-pear make php-mysqlnd php-pecl-imagick php-pecl-imagick-devel
Теперь запустите службы apache (httpd на centos) и mariadb и включите их обе для запуска при загрузке системы.
sudo systemctl enable --now httpd
sudo systemctl enable --now mariadb
И вы увидите аналогичный вывод, как показано ниже, службы apache и mariadb запущены и включены.
# Apache started and enabled Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. # MariaDB started and enabled Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
2. После этого выполните приведенную ниже команду, чтобы настроить пароль root для mariadb, и по соображениям безопасности вы удалите тестовую базу данных по умолчанию и анонимного пользователя, а также отключите удаленный вход для пользователя root.
sudo mysql_secure_installation
Ниже приведен аналогичный вывод, который вы получите, и обязательно введите новый надежный пароль для пользователя root mariadb и введите Y, чтобы подтвердить все действия.
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! 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): PRESS ENTER OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] Y New password: TYPE STRONG PASSWORD Re-enter new password: TYPE STRONG 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!
Установка и настройка Icinga2
Теперь вы будете устанавливать и настраивать основной компонент самой Icinga. На этом этапе будет рассмотрена установка пакетов icinga2, создание новой базы данных и пользователя, импорт схемы базы данных и настройка REST API Icinga.
1. Выполните следующую команду, чтобы установить пакеты инструментов мониторинга Icinga.
sudo dnf install -y icinga2 nagios-plugins-all
После этого запустите и включите службу icinga2, затем проверьте статус службы Icinga.
sudo systemctl enable --now icinga2
sudo systemctl status icinga2
Если вы видите вывод, похожий на следующий, служба Icinga запущена и работает.
# Icinga2 started and enabled Created symlink /etc/systemd/system/multi-user.target.wants/icinga2.service → /usr/lib/systemd/system/icinga2.service. # Icinga2 status running ? icinga2.service - Icinga host/service/network monitoring system Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-07-18 02:38:19 UTC; 6s ago Process: 31290 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS) Main PID: 31298 (icinga2) Tasks: 13 (limit: 4964) Memory: 20.9M CGroup: /system.slice/icinga2.service ??31298 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??31319 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??31324 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
2. Далее, если SELinux запущен и работает в системе centos 8, вам необходимо установить пакет icinga2-selinux. Но если SELinux отключен, пропустите эту часть.
Выполните приведенную ниже команду, чтобы проверить статус SELinux.
sudo sestatus
Если вы получаете подобный вывод, как показано ниже, ваш SELinux включен. В противном случае вы отключите вывод, что означает, что вы можете пропустить часть SELinux.
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: permissive Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 32
Теперь установите пакет icinga2-selinux с помощью приведенной ниже команды.
sudo dnf install -y icinga2-selinux
После этого примените новую конфигурацию, перезапустив службу icinga2, и убедитесь, что Icinga запущена и работает в контексте SELinux.
sudo systemctl restart icinga2
ps -eZ | grep icinga2
Ниже приведен аналогичный результат, который вы получите.
system_u:system_r:icinga2_t:s0 33479 ? 00:00:00 icinga2 system_u:system_r:icinga2_t:s0 33499 ? 00:00:00 icinga2 system_u:system_r:icinga2_t:s0 33504 ? 00:00:00 icinga2
3. Затем установите серверную часть IDO MySQL для icinga2, используя следующую команду.
sudo dnf install -y icinga2-ido-mysql
Теперь выполните приведенную ниже команду, чтобы войти в оболочку MySQL и ввести пароль root.
sudo mysql -u root -p
Создайте новую базу данных и пользователя для службы icinga2, используя запросы mysql ниже.
MariaDB [(none)]> CREATE DATABASE icinga;
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icingapassdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit
Теперь запустите команду mysql ниже, чтобы импортировать схему базы данных icinga2-ido-mysql в базу данных icinga, и введите пароль вашего корневого пароля mariadb.
sudo mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql
После этого включите функцию icinga2-ido-mysql и перезапустите службу icinga2, чтобы применить новую конфигурацию, используя приведенные ниже команды.
sudo icinga2 feature enable ido-mysql
sudo systemctl restart icinga2
И вы увидите аналогичный вывод, как на картинке ниже.
4. Далее вам необходимо сгенерировать конфигурацию и сертификаты REST API icinga2. icingaweb2 требует, чтобы REST API отправлял действия, связанные с заданиями мониторинга, такие как изменение расписания проверок, запрос сведений об объекте и т. д.
Запустите приведенную ниже команду icinga2, чтобы сгенерировать нового пользователя API, конфигурацию и сертификаты TLS.
sudo icinga2 api setup
И вы увидите аналогичный вывод, подобный следующему: новый пользователь root с паролем доступен в файле конфигурации /etc/icinga2/conf.d/api-users.conf, а сертификаты TLS доступны в файле /var/lib/icinga2. /certs/ каталог.
information/cli: Generating new CA. information/base: Writing private key to '/var/lib/icinga2/ca//ca.key'. information/base: Writing X509 certificate to '/var/lib/icinga2/ca//ca.crt'. information/cli: Generating new CSR in '/var/lib/icinga2/certs//centos8.csr'. information/base: Writing private key to '/var/lib/icinga2/certs//centos8.key'. information/base: Writing certificate signing request to '/var/lib/icinga2/certs//centos8.csr'. information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//centos8.crt'. information/pki: Writing certificate to file '/var/lib/icinga2/certs//centos8.crt'. information/cli: Copying CA certificate to '/var/lib/icinga2/certs//ca.crt'. information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'. information/cli: Reading '/etc/icinga2/icinga2.conf'. information/cli: Enabling the 'api' feature. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'. information/cli: Created backup file '/etc/icinga2/constants.conf.orig'. information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'. information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup. Done. Now restart your Icinga 2 daemon to finish the installation!
При желании, чтобы добавить нового пользователя API вручную, отредактируйте конфигурацию /etc/icinga2/conf.d/api-users.conf с помощью команды редактора nano, как показано ниже.
sudo nano /etc/icinga2/conf.d/api-users.conf
Вставьте приведенный ниже пример конфигурации, как показано ниже, и обязательно укажите пользователя API, пароль и права доступа, как вам нужно.
object ApiUser "icingaweb2" { password = "Wijsn8Z9eRs5E25d" permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ] }
Наконец, примените новую конфигурацию, перезапустив службу icinga2 с помощью следующей команды.
sudo systemctl restart icinga2
Установка и настройка Icingaweb2
На этом этапе вы будете устанавливать и настраивать веб-приложение icingaweb2, включая настройку базы данных и создание токена установки.
1. Выполните следующую команду, чтобы установить пакеты icingaweb2.
sudo dnf install -y icingaweb2 icingacli
Во время установки будет создана новая конфигурация Apache для icingaweb2. Проверьте новую конфигурацию с помощью следующей команды.
cat /etc/httpd/conf.d/icingaweb2.conf
Ниже приведена конфигурация, которую вы увидите.
Alias /icingaweb2 "/usr/share/icingaweb2/public" # Remove comments if you want to use PHP FPM and your Apache version is older than 2.4 #<IfVersion < 2.4> # # Forward PHP requests to FPM # SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 # <LocationMatch "^{urlPath}/(.*\.php)$"> # ProxyPassMatch "fcgi://127.0.0.1:9000/{documentRoot}/$1" # </LocationMatch> #</IfVersion> <Directory "/usr/share/icingaweb2/public"> Options SymLinksIfOwnerMatch AllowOverride None .......
Чтобы применить новую конфигурацию, перезапустите службу apache/httpd с помощью приведенной ниже команды.
sudo systemctl restart httpd
2. Затем введите следующую команду, чтобы войти в оболочку mysql.
sudo mysql -u root -p
Выполните несколько запросов mysql ниже, чтобы создать новую базу данных и пользователя для файла icingaweb2.
MariaDB [(none)]> CREATE DATABASE icingaweb2;
MariaDB [(none)]> GRANT ALL ON icingaweb2.* TO IDENTIFIED BY 'icingaweb2passdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit
3. После этого сгенерируйте установочный токен icingaweb2 для установки на следующем этапе с помощью следующей команды.
sudo icingacli setup token create
sudo icingacli setup token show
Вы будете показаны как следующий вывод. Обязательно скопируйте установочный токен icinga2 в свою заметку.
# Generated setup token The newly generated setup token is: 41e33db4cf0c5617 # Show generated token The current setup token is: 41e33db4cf0c5617
Настройка Icinga Web 2 через веб-интерфейс
Теперь откройте веб-браузер и URL-адрес http://SERVER-IP/icingaweb2/setup, и вы получите страницу установки icinga2.
1. Вставьте токен установки icingaweb2 в поле и нажмите «Далее».
2. Здесь оставьте модули Icinga по умолчанию и нажмите «Далее».
3. Теперь убедитесь, что все системные требования icingaweb2 отмечены \\зеленым\\ цветом, затем нажмите кнопку Далее.
4. Оставьте внутреннюю аутентификацию в качестве базы данных по умолчанию и нажмите Далее.
5. Введите имя базы данных, имя пользователя и пароль для icingaweb2 и снова щелкните Далее.
6. Оставьте имя серверной части аутентификации по умолчанию icingaweb2 и нажмите Далее.
7. Теперь введите нового пользователя и административный пароль, затем нажмите «Далее».
8. Оставьте конфигурацию приложения и журнала по умолчанию, затем нажмите Далее.
9. Дважды проверьте все ваши конфигурации, затем нажмите «Далее», чтобы продолжить.
10. Теперь нажмите «Далее», чтобы настроить модули мониторинга icinga2.
11. Введите имя базы данных, имя пользователя и пароль для icinga2-ido-mysql, затем нажмите кнопку «Проверить конфигурацию».
Если у вас возникает ошибка типа В настоящее время экземпляр icinga не записывает данные в IDO. Убедитесь, что экземпляр icinga настроен и может выполнять запись в IDO, вернуться к вашему терминалу и отредактировать конфигурацию вручную.
Выполните следующую команду, чтобы изменить конфигурацию IDO.
sudo nano /etc/icinga2/features-available/ido-mysql.conf
Скопируйте и вставьте конфигурацию ido mysql, как показано ниже.
object IdoMysqlConnection "ido-mysql" {
user = "icinga", password = "icingapassdb", host = "localhost", database = "icinga" }
Теперь нажмите Ctrl+x, затем y, затем введите, чтобы сохранить файл.
Затем перезапустите службу Icinga2 с помощью следующей команды.
sudo systemctl restart icinga2
Теперь вернитесь в веб-браузер и включите параметр «Пропустить проверку», затем снова нажмите «Далее».
12. Теперь выберите тип транспорта Local Command File и нажмите Next.
13. Оставьте конфигурацию безопасности мониторинга по умолчанию и нажмите Далее.
14. Дважды проверьте конфигурацию установки Icinga и нажмите «Готово», чтобы продолжить.
15. После успешной установки вы получите результат, как на картинке ниже. Затем нажмите кнопку «Войти в Icinga Web 2».
Проверка установки Icinga 2 и Icinga Web 2
1. Введите имя и пароль администратора Icinga, затем нажмите кнопку «Войти».
2. Теперь вы получите похожую страницу, как показано ниже.
Как вы можете видеть на приборной панели, инструмент мониторинга icinga2 автоматически обнаруживает некоторые службы. Сервисы с зеленым цветом означают работоспособность, а сервисы с желтым цветом означают предупреждение о необходимости проверки. А сервисы ошибок будут красного цвета.
Заключение
По завершении обучения вы узнали об установке и настройке инструмента мониторинга icinga2 на последнем сервере CentOS 8 со стеком LAMP. Установка icinga2 требует, чтобы вы сосредоточились на каждом этапе, и самое главное, чтобы вы знали, что делаете, а не слепо выполняли команды.