LibreNMS — это инструмент мониторинга, который поддерживает автоматическое обнаружение с помощью нескольких протоколов, включая SNMP, ARP, OSPF и BGP. Для мониторинга операционных систем можно использовать протокол SNMP, который доступен в большинстве ОС, включая Linux, Windows и BSD.
Существует три версии протокола SNMP: v1 и v2, которые защищены только паролем сообщества, и протокол v3, который поддерживает пароли для аутентификации и шифрования. Для производственной среды рекомендуется использовать протокол SNMP v3, который является более безопасным, чем v2 и v1.
В этом руководстве я покажу вам, как установить LibreNMS Monitoring Tool на ваш сервер AlmaLinux 9. Я запущу LibreNMS с PHP-FPM, веб-сервером Nginx и базой данных MariaDB.
Предварительные условия
Чтобы выполнить это руководство, вам необходимо следующее:
- Сервер AlmaLinux 9 — В этом демонстрационном примере используется сервер с именем хоста almalinux9.
- Пользователь, не являющийся пользователем root, с привилегиями sudo/root.
Установка зависимостей
Сначала добавьте в систему репозитории EPEL и Remi. Затем установите зависимости пакетов для LibreNMS.
Выполните следующую команду dnf, чтобы добавить репозиторий EPEL и репозиторий PHP Remi в вашу систему.
sudo dnf install -y epel-release sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Некоторые из зависимостей доступны в репозитории EPEL, поэтому вам необходимо добавить EPEL в вашу систему.

Репозиторий PHP Remi будет использоваться для установки пакетов PHP-FPM.

Теперь выполните следующую команду, чтобы сбросить модуль репозитория по умолчанию для PHP. Затем включите репозиторий PHP Remi для PHP версии 8.1, который требуется LibreNMS.
sudo dnf module reset php sudo dnf module enable php:remi-8.1

Далее выполните приведенную ниже команду dnf для установки зависимых пакетов для LibreNMS. Сюда входят PHP-FPM, веб-сервер Nginx, сервер MariaDB, некоторые пакеты Python3, а также системные утилиты, такие как rrdtool, unzip, ImageMagick, git и fping.
sudo dnf install -y 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-redis python3-memcached python3-pip python3-systemd rrdtool unzip
После завершения установки перейдите к следующему шагу.

Создание системного пользователя
В этом разделе вы создадите нового системного пользователя librenms, который будет использоваться для запуска LibreNMS.
Выполните следующую команду, чтобы создать нового пользователя librenms.
sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
Подробные параметры:
- -d /opt/librenms: Укажите домашний каталог для нового пользователя, чтобы /opt/librenms.
- -M: Не создавать домашний каталог для нового пользователя.
- -r: Определите нового пользователя как системного.
- -s «$(which bash)»: Укажите оболочку bash для нового пользователя.
Настройка PHP-FPM
В этом разделе вы будете настраивать PHP-FPM для LibreNMS. Вы установите нужный часовой пояс в вашей системе, а затем добавите определенный пул PHP-FPM, который будет использоваться LibreNMS.
Сначала выполните следующую команду, чтобы настроить часовой пояс на вашем сервере.
sudo timedatectl set-timezone Europe/Stockholm sudo ln -s /usr/share/zoneinfo/Europe/Stockholm /etc/localtime

Затем откройте файл /etc/php.ini с помощью следующего редактора nano.
sudo nano /etc/php.ini
Снимите комментарий с параметра date.timezone и измените его значение на подходящий часовой пояс следующим образом:
date.timezone=Europe/Stockholm
Сохраните и выйдите из файла после завершения работы.
Теперь выполните следующую команду, чтобы скопировать стандартную конфигурацию пула PHP-FPM в /etc/php-fpm.d/librenms.conf и откройте его с помощью редактора nano.
sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf sudo nano /etc/php-fpm.d/librenms.conf
Измените имя пула PHP-FPM с www на librenms.
[librenms]
Измените пользователя и группу по умолчанию на librenms.
user = librenms group = librenms
Измените файл sock по умолчанию для нового пула PHP-FPM на /run/php-fpm/librenms.sock.
listen = /run/php-fpm/librenms.sock
Сохраните файл и выйдите из редактора после завершения работы.
Теперь выполните следующую команду, чтобы запустить и включить службу PHP-FPM.
sudo systemctl start php-fpm sudo systemctl enable php-fpm
Затем проверьте службу PHP-FPM с помощью следующей команды, чтобы убедиться, что служба запущена.
sudo systemctl status php-fpm
Если служба запущена, в терминале появится следующий вывод:

Кроме того, вы можете проверить sock-файл PHP-FPM для LibreNMS с помощью следующей команды.
ss -pl | grep php-fpm
Если конфигурация прошла успешно, вы должны получить файл PHP-FPM sock /run/php-fpm/librenms.sock доступно.

Настройка сервера MariaDB
После настройки PHP-FPM вам предстоит настроить сервер MariaDB. Вы добавите дополнительные настройки на сервер MariaDB и защитите MariaDB с помощью утилиты mariadb-secure-installation.
Откройте стандартную конфигурацию сервера MariaDB /etc/my.cnf.d/mariadb-server.cnf , используя следующий редактор nano.
sudo nano /etc/my.cnf.d/mariadb-server.cnf
Вставьте следующие конфигурации под ‘[mysqld]‘ раздел.
innodb_file_per_table=1 lower_case_table_names=0
Сохраните файл и выйдите из редактора, когда закончите.
Теперь выполните следующую команду, чтобы запустить и включить службу MariaDB.
sudo systemctl start mariadb sudo systemctl enable mariadb
Далее выполните следующую команду, чтобы защитить установку сервера MariaDB.
sudo mariadb-secure-installation
Ниже вас спросят о некоторых конфигурациях:
- Измените метод аутентификации для пользователя MariaDB root на unix_socket. Введите n для Нет.
- Установка пароля корня MariaDB. Вход y подтвердите, введите новый пароль корня MariaDB и повторите.
- Отключите удаленный вход для пользователя MariaDB root. Введите y подтвердить.
- Удалите тест базы данных по умолчанию из MariaDB. Вход y подтвердить.
- Удаление анонимного пользователя из MariaDB. Вход y подтвердить.
- Наконец, введите y еще раз, чтобы перезагрузить привилегии таблицы и применить изменения.
Создание базы данных MariaDB и пользователя для LibreNMS
Настроив сервер MariaDB, создайте новую базу данных и пользователя, которые будут использоваться LibreNMS.
Войдите на сервер MariaDB с помощью следующей команды.
sudo mariadb -u root -p
Выполните следующие запросы для создания новой базы данных и пользователя для LibreNMS. В этой демонстрации вы создадите новую базу данных и пользователя librenms с паролем librenmspassword. Также вы должны убедиться, что символ по умолчанию для базы данных LibreNMS — это utf8mb4.
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'librenmspassword'; GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost'; FLUSH PRIVILEGES;

Теперь выполните приведенный ниже запрос, чтобы проверить привилегии нового пользователя librenms, а затем введите exit, чтобы выйти из MariaDB.
SHOW GRANTS FOR 'librenms'@'localhost'; exit
Отображенный ниже результат показывает, что пользователь librenms может получить доступ к базе данных librenms.

Загрузка и установка LibreNMS
В этом разделе вы загрузите исходный код LibreNMS, установите правильные права собственности и разрешения, а затем установите PHP-зависимости с помощью скрипта composer_wrapper, который включен в исходный код.
Выполните приведенную ниже команду git, чтобы загрузить исходный код LibreNMS по адресу /opt/librenms каталог.
git clone https://github.com/librenms/librenms.git /opt/librenms
Теперь измените право собственности на /opt/librenms каталог для пользователя librenms и измените разрешение на 771.
sudo chown -R librenms:librenms /opt/librenms sudo chmod 771 /opt/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/
Затем войдите в систему под именем пользователя librenms, выполнив следующую команду. Вы должны находиться в каталоге /opt/librenms.
su - librenms pwd
Выполните следующую команду для установки зависимостей PHP для LibreNMS. По окончании установки введите exit, чтобы выйти из системы под пользователем librenms.
./scripts/composer_wrapper.php install --no-dev exit

Настройка SELinux
Если на вашем сервере AlmaLinux 9 включен SELinux с режимом принудительного исполнения, то вам необходимо настроить его для LibreNMS. В этом разделе вы установите пакет policycoreutils-python-utils для настройки SELinux для LibreNMS.
Выполните следующую команду для установки пакета policycoreutils-python-utils.
sudo dnf install -y policycoreutils-python-utils
Далее выполните следующую команду, чтобы установить маркировку для исходного кода 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 setsebool -P httpd_can_sendmail=1 setsebool -P httpd_execmem 1 chcon -t httpd_sys_rw_content_t /opt/librenms/.env
Теперь создайте новый файл http_fping.tt с помощью следующей команды редактора nano.
sudo nano http_fping.tt
Вставьте в файл следующую конфигурацию. Это позволит использовать команду fping через SELinux.
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.
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
Настройка Firewalld
После настройки SELinux вы настроите firewalld на открытие протоколов HTTP и HTTPS.
Выполните приведенные ниже команды firewall-cmd, чтобы открыть порты HTTP и HTTPS, а затем перезагрузите firewalld, чтобы применить изменения.
sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload
Теперь проверьте список правил firewalld с помощью следующей команды. В случае успеха вы должны увидеть протоколы HTTP и HTTPS в списке правил.
sudo firewall-cmd --list-all

Настройка службы SNMP
SNMP или Simple Network Management Protocol — это протокол, наиболее широко используемый сетевыми устройствами, такими как модемы, коммутаторы и маршрутизаторы. В этом разделе вы будете настраивать службу snmpd на вашей установке LibreNMS, которая будет использоваться для мониторинга сетевых устройств.
Скопируйте стандартную конфигурацию SNMP в /etc/snmp/snmpd.conf и откройте его с помощью приведенной ниже команды редактора nano.
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf sudo nano /etc/snmp/snmpd.conf
Изменение пароля SNMP по умолчанию RANDOMSTRINGGOESHERE с новым паролем.
# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string com2sec readonly default RANDOMSTRINGGOESHERE
Сохраните файл и закройте редактор после завершения работы.
Далее загрузите двоичный файл агента LibreNMS для обнаружения ОС Linux и UNIX и сделайте его исполняемым.
sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro sudo chmod +x /usr/bin/distro

Теперь запустите и включите службу snmpd с помощью следующей команды.
sudo systemctl start snmpd sudo systemctl enable snmpd
Наконец, проверьте работу службы snmpd с помощью следующей команды systemctl.
sudo systemctl status snmpd
Если служба snmpd запущена, вы должны получить результат, подобный ‘активен (работает)‘.

Дополнительные настройки LibreNMS
В следующем разделе представлены некоторые дополнительные настройки для LibreNMS. Вам предстоит настроить следующую конфигурацию:
- Настройте бинарную команду LibreNMS ‘lnms’ и ее bash_комплектацию.
- Настройте cron для опроса LibreNMS.
- Настройте планировщик LibreNMS через таймер systemd.
- Настройте logrotate для журналов LibreNMS.
Сначала создайте симлинк для командной строки LibreNMS lnms на /usr/bin/lnms. Затем скопируйте завершение bash для команды lnms в папку /etc/bash_completion.d/ каталог.
sudo ln -s /opt/librenms/lnms /usr/bin/lnms sudo cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
Теперь войдите в систему под именем пользователя librenms и запустите программу lnms , затем нажмите TAB, чтобы получить список доступных параметров команды lnms команда.
su - librenms lnms TAB
В вашем терминале появится вывод, похожий на этот.

Далее выполните следующую команду, чтобы скопировать конфигурацию LibreNMS cron в /etc/cron.d/librenms.
cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms
Затем скопируйте конфигурацию logrotate для LibreNMS с помощью следующей команды.
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
После этого скопируйте службу и таймер планировщика LibreNMS в папку /etc/systemd/system/ каталог и перезагрузите менеджер systemd, чтобы применить изменения.
sudo cp /opt/librenms/dist/librenms-scheduler.service /opt/librenms/dist/librenms-scheduler.timer /etc/systemd/system/ sudo systemctl daemon-reload
Наконец, запустите и включите службу планировщика LibreNMS.
sudo systemctl enable librenms-scheduler.timer sudo systemctl start librenms-scheduler.timer

Настройка Nginx
Все настройки завершены, теперь вам предстоит настроить серверный блок Nginx для LibreNMS.
Создайте новую конфигурацию серверного блока 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 с помощью следующей команды.
sudo systemctl start nginx sudo systemctl enable nginx

Затем введите приведенную ниже команду, чтобы проверить состояние службы Nginx и убедиться, что она запущена.
sudo systemctl status nginx
В случае успеха вы должны получить следующий результат:

Установка LibreNMS через веб-браузер
После создания конфигурации блока сервера Nginx вы готовы начать установку LibreNMS через веб-браузер.
Запустите веб-браузер и перейдите на доменное имя вашей установки LibreNMS, т.е: http://librenms.local.
На первой странице LibreNMS проверит и проверит вашу текущую среду. Убедитесь, что вы прошли проверку предварительных условий, затем нажмите кнопку база данных значок для продолжения.

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

Затем нажмите кнопку Построить базу данных для переноса базы данных LibreNMS.

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

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

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

Наконец, вы можете использовать скрипт validate.php , чтобы убедиться в правильности конфигурации LibreNMS. Выполните следующую команду, чтобы войти в систему под именем пользователя librenms и запустить сценарий validate.php.
su - librenms ./validate.php
Если у вас правильная конфигурация LibreNMS, все должно иметь вид OK статус, подобный следующему:

Заключение
Поздравляем, теперь вы успешно установили LibreNMS Monitoring Tool на AlmaLinux 9. Вы установили и настроили LibreNMS с сервером баз данных MariaDB и веб-сервером Nginx. А также настроили SELinux и firewalld для LibreNMS.