Как установить систему мониторинга LibreNMS на Rocky Linux

LibreNMS — это инструмент мониторинга, поддерживающий автоматическое обнаружение устройств с помощью нескольких протоколов, включая SNMP, ARP, OSPF и BGP. Для мониторинга операционных систем можно использовать протокол SNMP, доступный в большинстве ОС, включая Linux, Windows и BSD.

Существует три версии протокола SNMP: v1 и v2, защищенные только общим паролем, и протокол v3, поддерживающий пароли для аутентификации и шифрования. Для производственной среды рекомендуется использовать протокол SNMP v3, который является более безопасным, чем v2 и v1.

В этом руководстве вы узнаете, как установить инструмент мониторинга LibreNMS на сервере Rocky Linux. Это руководство включает установку стека LEMP (Nginx, MariaDB и PHP-FPM) и базовую настройку службы SNMP.

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

Необходимые условия

Для выполнения этого руководства вам потребуется следующее:

  • Сервер Rocky Linux — в этом примере используется Rocky Linux 8.
  • Пользователь без прав root, обладающий привилегиями root/администратора с помощью sudo.
  • Локальное доменное имя для локального развертывания.

Настройка репозиториев

Прежде чем приступить к установке пакетов, необходимо настроить репозитории в системе Rocky Linux. Необходимо добавить репозиторий EPEL (Extra Packages for Enterprise Linux) и репозиторий PHP Remi.

Выполните следующую команду dnf, чтобы добавить EPEL репозиторий в вашу систему.

sudo dnf install epel-release

Введите Y при запросе подтверждения и нажмите ENTER, чтобы продолжить.

install epel

Затем выполните следующую команду dnf, чтобы добавить репозиторий PHP Remi . Этот репозиторий предоставляет несколько версий PHP, включая последнюю версию PHP 8.1, необходимую для установки LibreNMS.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Теперь введите Y и нажмите ENTER, чтобы продолжить.

добавить репозиторий remi

После добавления репозиториев EPEL и Remi проверьте их наличие с помощью приведенной ниже команды dnf.

sudo dnf repolist

Вы должны увидеть, что репозитории EPEL и Remi добавлены и доступны в вашей системе Rocky Linux.

проверить репозитории

Установка зависимостей пакетов

После добавления репозиториев EPEL и Remi вы начнете установку зависимостей пакетов для LibreNMS. Сюда входят стек LEMP, пакеты SNMP и некоторые базовые зависимости Python.

Перед началом установки выполните следующую команду, чтобы включить модуль репозитория PHP ‘remi-8.1‘. Для последней версии LibreNMS требуется как минимум PHP 8.

sudo dnf reset php
sudo dnf module enable php:remi-8.1

Введите y, чтобы подтвердить и включить репозиторий PHP Remi 8.1.

сбросить модули php

Далее выполните следующую команду dnf, чтобы установить зависимости пакетов для LibreNMS. Когда появится запрос на подтверждение установки, введите y и нажмите ENTER, чтобы продолжить, после чего начнется установка.

sudo dnf install bash-completion cronie fping git ImageMagick mariadb-server mtr net-snmp net-snmp-utils nginx nmap php-fpm php-cli php-common php-curl php-gd php-gmp php-json php-mbstring php-process php-snmp php-xml php-zip php-mysqlnd python3 python3-PyMySQL python3-devel python3-redis python3-memcached python3-pip python3-systemd rrdtool unzip

установить зависимости

После установки зависимостей выполните следующую команду, чтобы запустить и включить некоторые службы, такие как Nginx, MariaDB, PHP-FPM и snmpd.

sudo systemctl enable nginx php-fpm mariadb snmpd
sudo systemctl start nginx php-fpm mariadb snmpd

На этом этапе некоторые базовые службы — Nginx, MariaDB, PHP-FPM и snmpd — будут запускаться автоматически при загрузке системы. И все эти службы работают.

запуск и включение служб

Настройка Firewalld

В этом примере мы используем Rocky Linux с включенным firewalld. Теперь вы добавите протоколы HTTP и HTTPS в firewalld.

Выполните следующую команду firewall-cmd, чтобы добавить службы HTTP и HTTPS в firewalld. Вы должны получить сообщение ‘success‘, что означает, что новое правило добавлено.

sudo firewall-cmd --permanent --zone public --add-service http
sudo firewall-cmd --permanent --zone public --add-service https

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

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Вы увидите, что протоколы HTTP и HTTPS добавлены в firewalld.

настройка firewalld

Загрузка исходного кода LibreNMS

На этом этапе вы загрузите исходный код LibreNMS с GitHub. Но перед этим вам также нужно создать нового выделенного пользователя ‘librenms‘, который будет использоваться для запуска приложения LibreNMS.

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

sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"

Теперь перейдите в рабочий каталог ‘/opt’ и загрузите исходный код LibreNMS с помощью приведенной ниже команды git. У вас должен появиться новый каталог ‘/opt/librenms‘, который будет использоваться в качестве каталога установки LibreNMS.

cd /opt
git clone https://github.com/librenms/librenms.git

download librenms

Измените владельца и права доступа к каталогу установки LibreNMS ‘/opt/librenms‘. Владельцем установки должен быть пользователь ‘librenms’, а права доступа 771 позволят пользователю читать, записывать и выполнять файлы в этом каталоге.

sudo chown -R librenms:librenms /opt/librenms
sudo chmod 771 /opt/librenms

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

sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

настройка прав доступа и владельца

Установка зависимостей PHP для LibreNMS

После загрузки исходного кода LibreNMS и настройки правильных прав доступа вам предстоит установить зависимости PHP для LibreNMS.

Войдите в систему как ‘librenms’ пользователь, используя следующую команду.

su - librenms

Теперь установите зависимости PHP с помощью скрипта установщика, как показано ниже.

./scripts/composer_wrapper.php install --no-dev

Теперь вы увидите установку зависимостей PHP, необходимых для LibreNMS. Вы также увидите установку пакетов Python для LibreNMS.

установить зависимости

После завершения установки зависимостей PHP вы можете выйти из пользователя ‘librenms», нажав «Ctrl+d» или введя команду «exit».

Настройка PHP-FPM

На этом этапе вы настроите установку PHP-FPM для LibreNMS. Вы измените конфигурацию по умолчанию ‘/etc/php.ini’ и настроите специальный пул PHP-FPM для LibreNMS.

Выполните следующую команду, чтобы настроить правильный часовой пояс для вашей системы Rocky Linux.

sudo timedatectl set-timezone Europe/Stockholm

Теперь отредактируйте конфигурацию PHP ‘/etc/php.ini‘ с помощью редактора nano.

sudo nano /etc/php.ini

Снимите комментарий с опции ‘date.timezone’ и измените значение на текущий часовой пояс вашего сервера.

date.timezone = Europe/Stockholm

Сохраните файл и закройте редактор, когда закончите.

Далее скопируйте конфигурацию пула PHP-FPM по умолчанию ‘www.conf‘ в файл ‘librenms’.conf‘. В этом примере вы настроите специальный пул PHP-FPM для инструмента мониторинга LibreNMS.

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf

Теперь отредактируйте конфигурацию пула PHP-FPM ‘/etc/php-fpm.d/librenms.conf’ с помощью редактора nano.

sudo nano /etc/php-fpm.d/librenms.conf

Измените имя пула по умолчанию с ‘[www]’ на ‘[librenms]‘.

[librenms]

Измените пользователя и группу по умолчанию на ‘librenms‘. Это запустит процесс PHP-FPM от имени пользователя и группы ‘librenms‘.

user = librenms
group = librenms

Наконец, измените опцию listen на ‘/run/php-fpm-librenms.sock’. Это укажет файл сокета для пула PHP-FPM librenms.

listen = /run/php-fpm-librenms.sock

Сохраните файл и закройте редактор, когда закончите.

Теперь выполните следующую команду systemctl, чтобы перезапустить службу PHP-FPM и применить новые изменения.

sudo systemctl restart php-fpm

setup php-fpm

Настройка сервера MariaDB

После настройки PHP-FPM вам предстоит настроить сервер базы данных MariaDB и создать новую базу данных и пользователя для LibreNMS.

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

Отредактируйте конфигурацию сервера MariaDB ‘/etc/my.cnf.d/mariadb-server.cnf’ с помощью редактора nano.

sudo nano /etc/my.cnf.d/mariadb-server.cnf

Вставьте следующую конфигурацию в раздел ‘[mysqld]’ .

[mysqld]
....
innodb_file_per_table=1
lower_case_table_names=0

Сохраните файл и закройте редактор, когда закончите.

Теперь выполните приведенную ниже команду systemctl, чтобы перезапустить службу MariaDB и применить новые изменения. Сервер MariaDB теперь работает с включенным движком базы данных InnoDB.

sudo systemctl restart mariadb

Далее войдите в оболочку MariaDB с помощью приведенной ниже команды mysql. При запросе пароля можно просто нажать ENTER или ввести пароль root MariaDB.

sudo mysql -u root -p

Выполните следующие запросы, чтобы создать новую базу данных и пользователя для LibreNMS. В этом примере вы создадите новую базу данных и пользователя ‘librenms‘, и не забудьте заменить пароль базы данных на свой пароль.

CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;

создание базы данных и пользователя

Затем выполните следующий запрос, чтобы проверить права пользователя базы данных ‘librenms@localhost’.

SHOW GRANTS FOR librenms@localhost;

Вы должны увидеть, что пользователь ‘librenms’@localhost’ имеет права доступа к базе данных ‘librenms‘.

проверка прав

Теперь введите ‘exit‘, чтобы выйти из оболочки MariaDB.

Настройка блоков сервера Nginx

После настройки сервера MariaDB и создания базы данных и пользователя вам необходимо создать новую конфигурацию блока сервера Nginx для LibreNMS.

Прежде чем начать, убедитесь, что вы определились с локальным доменом, который будет использоваться для LibreNMS. В этом примере LibreNMS должен работать с доменом ‘librenms.local‘.

Создайте новую конфигурацию блока сервера Nginx ‘/etc/nginx/conf.d/librenms.conf‘ с помощью редактора nano.

sudo nano /etc/nginx/conf.d/librenms.conf

Добавьте в файл следующую конфигурацию и обязательно замените доменное имя на свой домен.

server {
    listen      80;
    server_name librenms.local;
    root        /opt/librenms/html;
    index       index.php;

charset utf-8;
gzip on;
gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm-librenms.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
}

location ~ /\.(?!well-known).* {
deny all;
}
}

Сохраните файл и закройте редактор, когда закончите.

Затем выполните следующую команду, чтобы проверить конфигурацию Nginx и убедиться, что она верна.

sudo nginx -t

Если конфигурация Nginx верна, вы увидите сообщение типа ‘test successful — Syntax OK‘.

Теперь перезапустите службу Nginx, чтобы применить новую конфигурацию блока сервера.

sudo systemctl restart nginx

настройка nginx

На этом этапе вы завершили настройку стека LEMP (Nginx, база данных MariaDB и PHP-FPM) для LibreNMS. Кроме того, LibreNMS теперь должен работать в вашей системе Rocky Linux.

Настройка SELinux

В рамках данного руководства вы будете запускать LibreNMS с включенным SELinux в режиме принудительного применения. Поэтому теперь вам предстоит настроить правила SELinux для LibreNMS.

Для начала выполните приведенную ниже команду dnf, чтобы установить пакет ‘policycoreutils-python-utils» в вашей системе Rocky Linux. Этот пакет предоставляет несколько командных строк для управления SELinux.

sudo dnf install policycoreutils-python-utils

Когда появится запрос, введите y для подтверждения и нажмите ENTER, чтобы продолжить.

установить инструмент управления SELinux

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

semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/html(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/(rrd|storage)(/.*)?'
semanage fcontext -a -t httpd_log_t "/opt/librenms/logs(/.*)?"
semanage fcontext -a -t bin_t '/opt/librenms/librenms-service.py'
restorecon -RFvv /opt/librenms
chcon -t httpd_sys_rw_content_t /opt/librenms/.env

настроить маркировку SELinux

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

setsebool -P httpd_can_sendmail=1
setsebool -P httpd_execmem 1

Теперь создайте новый файл ‘http_fping.tt’ с помощью редактора nano.

nano http_fping.tt

Добавьте в файл следующую конфигурацию.

module http_fping 1.0;

require {
type httpd_t;
class capability net_raw;
class rawip_socket { getopt create setopt write read };
}

#============= httpd_t ==============
allow httpd_t self:capability net_raw;
allow httpd_t self:rawip_socket { getopt create setopt write read };

Сохраните файл и закройте редактор по завершении.

Далее выполните следующую команду, чтобы преобразовать файл ‘http_fping.tt» в формат для SELinux. Затем добавьте новое скомпилированное правило в SELinux.

checkmodule -M -m -o http_fping.mod http_fping.tt
semodule_package -o http_fping.pp -m http_fping.mod
semodule -i http_fping.pp

setup selinux

Теперь вы завершили настройку SELinux для LibreNMS. Далее вам предстоит выполнить некоторые дополнительные настройки для LibreNMS.

Завершение настроек LibreNMS

Чтобы завершить настройку LibreNMS, вам теперь предстоит настроить командную строку ‘lnms‘ и скопировать некоторые настройки LibreNMS по умолчанию, включая настройки для cron и logrotate. Кроме того, вам предстоит настроить службу SNMP для LibreNMS.

Выполните следующую команду, чтобы включить ‘lnms» и скопируйте автодополнение bash для команды «lnms».

ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/

Скопируйте пример конфигурации cron для LibreNMS в каталог «/etc/cron.d/librenms‘.

sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms

Скопируйте конфигурацию logrotate по умолчанию для LibreNMS в ‘/etc/logrotate.d/librenms‘.

sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

завершение librenms

Теперь скопируйте конфигурацию службы snmpd по умолчанию в ‘/etc/snmp/snmpd.conf’. Затем отредактируйте новый файл ‘/etc/snmp/snmpd.conf’ с помощью редактора nano.

sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo nano /etc/snmp/snmpd.conf

Измените пароль сообщества по умолчанию для службы snmpd ‘RANDOMSTRINGGOESHERE» на свой пароль.

# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string
com2sec readonly  default         RANDOMSTRINGGOESHERE

Сохраните файл и закройте редактор, когда закончите.

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

curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro

загрузите distrocheck

Наконец, перезапустите службу snmpd, чтобы применить новые изменения и настройки.

systemctl restart snmpd

Теперь, когда все базовые настройки завершены, вы можете начать установку LibreNMS через веб-браузер.

Доступ к веб-установке LibreNMS

На локальном компьютере отредактируйте файл ‘/etc/hosts’ и определите локальное доменное имя вашей установки LibreNMS. Также не забудьте заменить IP-адрес на IP-адрес вашего сервера.

192.168.5.100   librenms.local

Теперь откройте веб-браузер и перейдите по доменному имени вашей установки LibreNMS (например: http://librenms.local/).

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

Нажмите на значок базы данных, чтобы продолжить.

настройка базы данных перед установкой

Теперь введите данные базы данных и пользователя для LibreNMS и нажмите «Проверить учетные данные». Если ваши учетные данные базы данных верны, этот раздел будет отмечен зеленым цветом.

проверить базу данных

Теперь нажмите «Создать базу данных», чтобы начать миграцию базы данных для LibreNMS.

создать базу данных

После завершения миграции базы данных вы увидите раздел «Создать базу данных», отмеченный зеленым цветом.

Нажмите на значок ключа, чтобы начать настройку администратора для LibreNMS.

создать базу данных

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

 

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

установка завершена

Теперь нажмите на ссылку ‘проверить установку‘, чтобы проверить установку LibreNMS.

Теперь вы должны быть перенаправлены на страницу входа в LibreNMS. Введите имя пользователя и пароль администратора, затем нажмите ‘Вход».

 

Теперь убедитесь, что все конфигурации помечены как «OK», что означает, что в конфигурации нет ошибок.

Вы также можете исправить все ошибки или предупреждения, следуя инструкциям, рекомендованным LibreNMS.

проверить установку librenms

Теперь вы можете добавить новый целевой хост, виртуальную машину или сетевое устройство для мониторинга с помощью решения LibreNMS Monitoring Solution.

Заключение

Поздравляем! Вы установили решение для мониторинга LibreNMS на сервере Rocky Linux. Вы также изучили базовую настройку стека LEMP (Nginx, MariaDB и PHP-FPM) на Rocky Linux.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *