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

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


На этой странице

  1. Предпосылки
  2. Настройка репозиториев
  3. Установка зависимостей пакетов
  4. Настройка брандмауэра
  5. Загрузка исходного кода LibreNMS
  6. Установка зависимостей PHP для LibreNMS
  7. Настройка PHP-FPM
  8. Настройка сервера MariaDB
  9. Настройка серверных блоков Nginx
  10. Настройка SELinux
  11. Завершение настройки LibreNMS
  12. Доступ к веб-установке LibreNMS
  13. Заключение

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 с правами sudo root/administrator.
  • Локальное доменное имя для локального развертывания.

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

Прежде чем вы начнете устанавливать пакеты, вы настроите репозитории в своей системе Rocky Linux. Вам нужно будет добавить репозиторий EPEL (дополнительные пакеты для 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 будут запускаться автоматически при загрузке системы. И все эти службы работают.

Настройка брандмауэра

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

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

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, или вы можете ввести команду выхода.

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

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

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 или ввести корневой пароль 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;

Затем выполните следующий запрос, чтобы проверить права пользователя базы данных [email .

SHOW GRANTS FOR ;

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

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

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

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

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

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

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

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

server {
    listen      80;
    server_name librenms.hwdomain.io;
    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 верна, вы увидите выходное сообщение, например, тест прошел успешно — синтаксис в порядке.

Теперь перезапустите службу 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.hwdomain.io

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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