Установка LibreNMS

Установка LibreNMS.

Содержание

1 Необходимые пакеты

  • Установка осуществляется на Rockylinux
  • Установите сервер (см. Rocky Linux. Установка сервера).
  • Установите необходимое программное обеспечение:
    dnf -y install epel-release
    dnf module reset php
    dnf install bash-completion cronie fping git httpd ImageMagick mariadb-server mtr net-snmp net-snmp-utils 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 gcc python3-develcase
    

2 Добавить пользователя

  • Добавить пользователя librenms:
    useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
    

3 Скачать LibreNMS

  • Скачаем LibreNMS:
    cd /opt
    git clone https://github.com/librenms/librenms.git
    

4 Установить разрешения

  • Установим разрешения:
    chown -R librenms:librenms /opt/librenms
    chmod 771 /opt/librenms
    setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
    setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
    

5 Установить PHP-зависимости

  • Установим PHP-зависимости:
    su - librenms
    ./scripts/composer_wrapper.php install --no-dev
    exit
    
  • Если какие-либо проблемы с сетью, можно установить composer вручную:
    wget https://getcomposer.org/composer-stable.phar
    mv composer-stable.phar /usr/bin/composer
    chmod +x /usr/bin/composer
    

6 Укажите часовой пояс

  • Установите системный часовой пояс (например, Etc/UTC):
    timedatectl set-timezone Etc/UTC
    
  • Настройте часовой пояс для php.
  • Установка в файле /etc/php.ini:
    [Date]
    date.timezone = Etc/UTC
    

7 Настроить MariaDB

  • Настройки в файле /etc/my.cnf.d/mariadb-server.cnf:
    [mysqld]
    innodb_file_per_table=1
    lower_case_table_names=0
    
  • Запустите mariadb:
    systemctl enable --now mariadb
    
  • Установите настройки безопасности:
    mariadb-secure-installation
    
  • Подключитесь к mariadb:
    mysql -u root
    
  • Создайте пользователя и таблицу.
    • В коде замените password на пароль.
    • Пароль потребуется занести в файл конфигурации /opt/librenms/.env (в web-интерфейсе).
      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;
      exit
      

8 Настроить php-fpm

  • Настроим php-fpm:
    cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf
    
  • Отредактируйте /etc/php-fpm.d/librenms.conf.
  • Измените [www] на [librenms].
  • Изменить user и group на librenms.
  • Измените listen:
    listen = /run/php-fpm-librenms.sock
    

9 Настроить веб-сервер

  • Создайте librenms.conf:
    touch /etc/httpd/conf.d/librenms.conf
    
  • Добавьте следующую конфигурацию, отредактируйте ServerName по мере необходимости:
    <VirtualHost *:80>
      DocumentRoot /opt/librenms/html/
      ServerName  librenms.example.com
    
      AllowEncodedSlashes NoDecode
      <Directory "/opt/librenms/html/">
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
      </Directory>
    
      # Enable http authorization headers
      <IfModule setenvif_module>
        SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
      </IfModule>
    
      <FilesMatch ".+\.php$">
        SetHandler "proxy:unix:/run/php-fpm-librenms.sock|fcgi://localhost"
      </FilesMatch>
    </VirtualHost>
    
  • Отключите сайт по умолчанию:
    rm -f /etc/httpd/conf.d/welcome.conf
    
  • Запустите сервер:
    systemctl enable --now httpd
    systemctl enable --now php-fpm
    

10 Настройка SELinux

  • Установим необходимые пакеты:
    dnf -y install 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
    setsebool -P httpd_can_network_connect 1
    setsebool -P domain_can_mmap_files 1
    setsebool -P httpd_setrlimit 1
    chcon -t httpd_sys_rw_content_t /opt/librenms/.env
    

11 Настройка fping

  • Установите CAP_NET_RAW для fping:
    setcap cap_net_raw+ep /usr/sbin/fping
    
  • Настройка SElinux для fping.
    • Перейдите в каталог /tmp.
    • Создайте файл 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 };
      
    • Скомпилируйте и загрузите модуль:
      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
      

12 Настройка межсетевого экрана

  • Разрешим доступ:
    firewall-cmd --zone public --add-service http --add-service https
    firewall-cmd --permanent --zone public --add-service http --add-service https
    

13 Настройте команду lnms

  • Сделайте ссылку в каталог, входящий в путь:
    ln -s /opt/librenms/lnms /usr/local/bin/lnms
    
  • Включите автодополнение bash:
    cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
    

14 Настроить snmpd

  • Скопируйте файл конфигурации:
    cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
    
  • Замените в /etc/snmp/snmpd.conf строку RANDOMSTRINGGOESHERE на своё сообщество.
  • Загрузите агент определения дистрибутива:
    curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
    chmod +x /usr/bin/distro
    
  • Запустите демон snmp:
    systemctl enable --now snmpd
    

15 Настройте cron

  • Установите cron-файл:
    cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
    

16 Настройте logrotate

  • LibreNMS хранит журналы в /opt/librenms/logs.
  • Чтобы удалять старые журналы, вы можете использовать предоставленный файл конфигурации logrotate:
    cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
    

17 Веб-установщик

  • Перейдите к веб-установщику и следуйте инструкциям на экране.
  • Веб-установщик может предложить вам вручную создать config.php, скопировав содержимое, отображаемое на экране, в файл.
  • После этого не забудьте установить права доступа к config.php:
    chown librenms:librenms /opt/librenms/config.php
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры прикладной информатики и теории вероятностей

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие