🕕 Как установить LibreNMS на RHEL / CentOS 8 |

🕕 Как установить LibreNMS на RHEL / CentOS 8

Мануал

Добро пожаловать в сегодняшнее руководство по установке и настройке LibreNMS в RHEL / CentOS 8.

LibreNMS – это инструмент для автоматического обнаружения сетевых ресурсов с открытым исходным кодом, основанный на PHP, MySQL и SNMP.

LibreNMS включает поддержку широкого спектра сетевого оборудования и операционных систем, включая Juniper, Cisco, Linux, Foundry, FreeBSD, Brocade, HP, Windows и многие другие.

Это форк инструмента мониторинга «Observium».

Особенности LibreNMS

Основные функции инструмента мониторинга LibreNMS:

  • Имеет автоматическое обнаружение – он автоматически обнаружит всю вашу сеть, используя CDP, FDP, LLDP, OSPF, BGP, SNMP и ARP
  • Доступ к API – LibreNMS предоставляет полный API для управления, построения графиков и получения данных из вашей установки.
  • Автоматические обновления – с LibreNMS вы получаете автоматическое обновление с новыми функциями и исправлениями ошибок.
  • Настраиваемое оповещение – Гибкая система оповещения, уведомление по электронной почте, IRC.
  • Поддержка распределенного опроса через горизонтальное масштабирование, которое растет с вашей сетью
  • Биллинговая система – Легко генерируйте счета за пропускную способность для портов в вашей сети на основе использования или передачи.
  • Приложение для Android и iOS – доступно нативное приложение для iPhone / Android, которое обеспечивает основные функции.
  • Несколько методов аутентификации: MySQL, HTTP, LDAP, Radius, Active Directory
  • Интеграционная поддержка NfSen, collectd, SmokePing, RANCID, Oxidized

Выполните следующие шаги, чтобы установить и настроить LibreNMS в RHEL / CentOS 8.

Перед началом установки убедитесь, что у вас установлен репозиторий EPEL в RHEL / CentOS 8.

? Как установить репозиторий EPEL на RHEL 8 / CentOS 8

Шаг 1: Установите необходимые зависимости

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

Добавьте репозиторий EPEL в RHEL / CentOS 8, используя наше руководство ниже.

? Как установить репозиторий EPEL на RHEL 8 / CentOS 8

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

sudo dnf -y install yum-utils
sudo dnf -y install zip unzip git cronie wget fping net-snmp net-snmp-utils  jwhois mtr rrdtool  nmap

Шаг 2: Установите PHP и Apache

Установите веб-сервер Apache, PHP и расширения, необходимые для LibreNMS.

sudo yum install @httpd @php php-{cli,common,curl,gd,mbstring,mysqlnd,process,snmp,xml,zip}

Запустите сервис Apache и PHP FPM.

sudo systemctl enable --now php-fpm httpd

Проверьте статус службы

$ sudo systemctl status php-fpm httpd
 ● php-fpm.service - The PHP FastCGI Process Manager
    Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
    Active: active (running) since Sat 2018-12-29 11:30:09 EAT; 9s ago
  Main PID: 353 (php-fpm)
    Status: "Ready to handle connections"
     Tasks: 6 (limit: 11510)
    Memory: 25.2M
    CGroup: /system.slice/php-fpm.service
            ├─353 php-fpm: master process (/etc/php-fpm.conf)
            ├─359 php-fpm: pool www
            ├─360 php-fpm: pool www
            ├─361 php-fpm: pool www
            ├─362 php-fpm: pool www
            └─363 php-fpm: pool www
 Dec 29 11:30:09 rhel8.local systemd[1]: Starting The PHP FastCGI Process Manager…
 Dec 29 11:30:09 rhel8.local systemd[1]: Started The PHP FastCGI Process Manager.
 ● httpd.service - The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Drop-In: /usr/lib/systemd/system/httpd.service.d
            └─php-fpm.conf
    Active: active (running) since Sat 2018-12-29 11:30:10 EAT; 8s ago
      Docs: man:httpd.service(8)
  Main PID: 365 (httpd)
    Status: "Started, listening on: port 443, port 80"
     Tasks: 213 (limit: 11510)
    Memory: 33.4M
    CGroup: /system.slice/httpd.service
            ├─365 /usr/sbin/httpd -DFOREGROUND
            ├─367 /usr/sbin/httpd -DFOREGROUND
            ├─368 /usr/sbin/httpd -DFOREGROUND
            ├─369 /usr/sbin/httpd -DFOREGROUND
            └─370 /usr/sbin/httpd -DFOREGROUND
 Dec 29 11:30:10 rhel8.local systemd[1]: Starting The Apache HTTP Server…
 Dec 29 11:30:10 rhel8.local httpd[365]: Server configured, listening on: port 443, port 80
 Dec 29 11:30:10 rhel8.local systemd[1]: Started The Apache HTTP Server.

Проверьте версию PHP и загруженные модули.

$ php -v
PHP 7.2.11 (cli) (built: Oct  9 2018 15:09:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

$ php -m

Установите часовой пояс PHP внутри файла /etc/php.ini.

$ grep date.timezone /etc/php.ini 
; http://php.net/date.timezone
date.timezone = Africa/Nairobi

Разрешите порты http и https на брандмауэре.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Шаг 3: Установите и настройте сервер базы данных

Установите сервер базы данных MariaDB на RHEL / CentOS 8, используя приведенное ниже руководство.

Вы можете использовать сервер баз данных MySQL или MariaDB.

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

$ mysql -u root -p
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'StrongDBPassword';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit

Отредактируйте файл my.cnf и добавьте следующие строки в раздел [mysqld]:

$ sudo vim /etc/my.cnf.d/mariadb-server.cnf

В разделе [mysqld] добавьте:

innodb_file_per_table=1
lower_case_table_names=0

Перезапустите службу mariadb

sudo systemctl enable mariadb
sudo systemctl restart mariadb

Статус сервиса должен показывать running

$ systemctl status mariadb
 ● mariadb.service - MariaDB 10.3 database server
    Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
    Active: active (running) since Sat 2018-12-29 11:45:07 EAT; 10s ago
      Docs: man:mysqld(8)
            https://mariadb.com/kb/en/library/systemd/
   Process: 2340 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
   Process: 2271 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
   Process: 2245 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
  Main PID: 2309 (mysqld)
    Status: "Taking your SQL requests now…"
     Tasks: 30 (limit: 11510)
    Memory: 74.9M
    CGroup: /system.slice/mariadb.service
            └─2309 /usr/libexec/mysqld --basedir=/usr
 Dec 29 11:45:06 rhel8.local systemd[1]: Starting MariaDB 10.3 database server…
 Dec 29 11:45:06 rhel8.local mysql-prepare-db-dir[2271]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
 Dec 29 11:45:06 rhel8.local mysql-prepare-db-dir[2271]: If this is not the case, make sure the /var/lib/mysql is empty before running mysql-prepare-db>
 Dec 29 11:45:07 rhel8.local mysqld[2309]: 2018-12-29 11:45:07 0 [Note] /usr/libexec/mysqld (mysqld 10.3.10-MariaDB) starting as process 2309 …
 Dec 29 11:45:07 rhel8.local mysqld[2309]: 2018-12-29 11:45:07 0 [Warning] Could not increase number of max_open_files to more than 1024 (request: 4182)
 Dec 29 11:45:07 rhel8.local mysqld[2309]: 2018-12-29 11:45:07 0 [Warning] Changed limits: max_open_files: 1024  max_connections: 151 (was 151)  table_>
 Dec 29 11:45:07 rhel8.local systemd[1]: Started MariaDB 10.3 database server.

Шаг 4: Установите и настройте LibreNMS на RHEL / CentOS 8

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

sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -a -G librenms apache

Клонируйте проект Github

cd /opt
sudo git clone https://github.com/librenms/librenms.git
sudo chown librenms:librenms -R /opt/librenms

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

cd /opt/librenms
./scripts/composer_wrapper.php install --no-dev

Успешная установка должна иметь результат, аналогичный приведенному ниже:

Скопируйте и настройте шаблон конфигурации SNMP:

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

Установите строку сообщества, заменив RANDOMSTRINGGOESHERE

com2sec readonly  default  MyInternalNetwork

Скачайте скрипт идентификатора версии дистрибутива

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 enable snmpd
$ sudo systemctl restart snmpd
$ sudo systemctl status snmpd
 ● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
    Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
    Active: active (running) since Sat 2018-12-29 12:07:23 EAT; 5s ago
  Main PID: 2747 (snmpd)
     Tasks: 1 (limit: 11510)
    Memory: 5.4M
    CGroup: /system.slice/snmpd.service
            └─2747 /usr/sbin/snmpd -LS0-6d -f
 Dec 29 12:07:23 rhel8.local systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon….
 Dec 29 12:07:23 rhel8.local snmpd[2747]: NET-SNMP version 5.8
 Dec 29 12:07:23 rhel8.local systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..

Настройте Apache

Создайте новый файл конфигурации Apache для LibreNMS.

sudo vi /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>
</VirtualHost>

Настройте политику SELinux

Разрешить Apache обслуживать файлы в /opt/librenms/html/

sudo semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
sudo restorecon -RFvv /opt/librenms/logs/
sudo semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
sudo restorecon -RFvv /opt/librenms/rrd/
sudo semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/storage(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/storage(/.*)?'
sudo restorecon -RFvv /opt/librenms/storage/
sudo semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/bootstrap/cache(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/bootstrap/cache(/.*)?'
sudo restorecon -RFvv /opt/librenms/bootstrap/cache/
sudo setsebool -P httpd_can_sendmail=1

Разрешите пинг

Создайте файл 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 };

Затем запустите эти команды

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

Если все выглядит хорошо, перезапустите службу httpd

sudo systemctl restart httpd

Настройте задания cron

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

Скопируйте конфигурацию logrotate

LibreNMS ведет журналы в /opt/librenms/logs.

Со временем они могут стать большими.

Чтобы ратировать старые журналы, вы можете использовать предоставленный файл конфигурации logrotate:

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

Установите правильные разрешения

sudo chown -R librenms:librenms /opt/librenms
setfacl -d -m g::rwx /opt/librenms/logs
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

Откройте http://librenms.example.com/install.php в своем веб-браузере, чтобы завершить установку.

Подтвердите, что все предустановочные проверки прошли, и нажмите «Next Stage»

2. Настройте учетные данные базы данных, созданные ранее.

Он начнет импортировать схему базы данных и заполнит данные

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

3. На следующей странице вам будет предложено настроить учетную запись администратора.

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

Путь к файлу должен быть /opt/librenms/config.php

<?php
## Have a look in defaults.inc.php for examples of settings you can set here. DO NOT EDIT defaults.inc.php!

### Database config
$config['db_host'] = 'localhost';
$config['db_port'] = '3306';
$config['db_user'] = 'librenms';
$config['db_pass'] = 'StrongDBPassword';
$config['db_name'] = 'librenms';
$config['db_socket'] = '';

// This is the user LibreNMS will run as
//Please ensure this user is created and has the correct permissions to your install
$config['user'] = 'librenms';

### Locations - it is recommended to keep the default
#$config['install_dir']  = "/opt/librenms";

### This should *only* be set if you want to *force* a particular hostname/port
### It will prevent the web interface being usable form any other hostname
#$config['base_url']        = "http://librenms.company.com";

### Enable this to use rrdcached. Be sure rrd_dir is within the rrdcached dir
### and that your web server has permission to talk to rrdcached.
#$config['rrdcached']    = "unix:/var/run/rrdcached.sock";

### Default community
$config['snmp']['community'] = array("public");

### Authentication Model
$config['auth_mechanism'] = "mysql"; # default, other options: ldap, http-auth
#$config['http_auth_guest'] = "guest"; # remember to configure this user if you use http-auth

### List of RFC1918 networks to allow scanning-based discovery
#$config['nets'][] = "10.0.0.0/8";
#$config['nets'][] = "172.16.0.0/12";
#$config['nets'][] = "192.168.0.0/16";

# Update configuration
#$config['update_channel'] = 'release';  # uncomment to follow the monthly release channel
#$config['update'] = 0;  # uncomment to completely disable updates

Смена владельца файла на пользователя librenms:

sudo chown librenms:librenms /opt/librenms/config.php

5. Нажмите кнопку «Finish Install», чтобы завершить установку LibreNMS.

Вас должна приветствовать страница входа администратора.

Войдите и выберите Validate Installation

Панель управления LibreNMS должна выглядеть примерно так:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий для cryptoparty Отменить ответ

  1. Anar

    в самом конце выскакивает ошибка

    Cannot write to log file: “/opt/librenms/logs/librenms.log”
    Make sure it exists and is writable, or change your LOG_DIR setting.

    If using SELinux you may also need:
    semanage fcontext -a -t httpd_sys_rw_content_t ‘/opt/librenms/logs/librenms.log(/.*)?’

    restorecon -RFv /opt/librenms/logs/librenms.log

    Selinux у меня выключен. И этот файл я создал с правами юзера librenms. Но все равно не работает

    Ответить
    1. cryptoparty автор

      Версия PHP?

      Ответить
      1. Anar

        Все. Исправилось) Спасибо!

        Ответить
        1. cryptoparty автор

          Как починили? С целью добавить в статью, дабы люди тоже не морочились

          Ответить