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, чтобы продолжить.

Затем выполните следующую команду dnf, чтобы добавить репозиторий PHP Remi . Этот репозиторий предоставляет несколько версий PHP, включая последнюю версию PHP 8.1, необходимую для установки LibreNMS.
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
Теперь введите Y и нажмите ENTER, чтобы продолжить.

После добавления репозиториев 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.

Далее выполните следующую команду 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.

Загрузка исходного кода 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

Измените владельца и права доступа к каталогу установки 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

Настройка сервера 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

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

Далее выполните следующую команду, чтобы настроить метки для исходного кода 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

Выполните следующую команду, чтобы разрешить доступ к некоторым службам для веб-сервера 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

Теперь вы завершили настройку 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

Теперь скопируйте конфигурацию службы 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

Наконец, перезапустите службу 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 Monitoring Solution.
Заключение
Поздравляем! Вы установили решение для мониторинга LibreNMS на сервере Rocky Linux. Вы также изучили базовую настройку стека LEMP (Nginx, MariaDB и PHP-FPM) на Rocky Linux.
Далее вы можете продолжить добавление хоста или целевой машины для мониторинга, настроить LibreNMS Agent, настроить оповещения или уведомления, настроить интеграцию со сторонними сервисами, такими как Graylog, и выполнить другие задачи.