LibreNMS (Supervision)

Logo LibreNMS

Environnement

Installation

Installer les dépendances :

apt install -y curl apache2 composer fping git graphviz imagemagick libapache2-mod-php7.2 mariadb-client mariadb-server mtr-tiny nmap php7.2-cli php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-snmp php7.2-xml php7.2-zip python-memcache python-mysqldb rrdtool snmp snmpd whois acl

Activer le module Apache Rewrite :

a2enmod rewrite

Redémarrer Apache :

systemctl restart apache2

Configuration

Créer un utilisateur librenms :

useradd librenms -d /opt/librenms -M -r
usermod -a -G librenms www-data

Installer LibreNMS (ignorer l'avertissement concernant l'utilisateur root) :

cd /opt
composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

Sécuriser l'installation de MariaDB :

mysql_secure_installation

Se connecter à MariaDB et modifier le mode de connexion pour passer du compte root système au compte root MariaDB :

mysql -u root
USE mysql;
UPDATE user SET plugin='' WHERE User='root';
FLUSH PRIVILEGES;
exit;

Se connecter à MariaDB et créer la base de données pour LibreNMS :

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

Modifier la configuration du fichier "/etc/mysql/mariadb.conf.d/50-server.cnf" :

cp -p /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf.bak
nano /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
innodb_file_per_table=1
lower_case_table_names=0

Redémarrer MariaDB :

systemctl restart mariadb

Autoriser le téléversement d'un fichier de 128 Mio avec PHP :

cp -p /etc/php/7.2/apache2/php.ini /etc/php/7.2/apache2/php.ini.bak
cp -p /etc/php/7.2/cli/php.ini /etc/php/7.2/cli/php.ini.bak
sed -i s'/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php/7.2/apache2/php.ini
sed -i s'/post_max_size = 8M/post_max_size = 128M/' /etc/php/7.2/apache2/php.ini
sed -i s'/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php/7.2/cli/
php.ini
sed -i s'/post_max_size = 8M/post_max_size = 128M/' /etc/php/7.2/cli/php.ini

Activer le Optimizer Plus Cache dans PHP :

sed -i s'/;opcache.enable=1/opcache.enable=1/' /etc/php/7.2/apache2/php.ini
sed -i s'/;opcache.enable_cli=0/opcache.enable_cli=1/' /etc/php/7.2/apache2/php.ini
sed -i s'/;opcache.memory_consumption=128/opcache.memory_consumption=128/' /etc/php/7.2/apache2/php.ini
sed -i s'/;opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=8/' /etc/php/7.2/apache2/php.ini
sed -i s'/;opcache.max_accelerated_files=10000/opcache.max_accelerated_files=10000/' /etc/php/7.2/apache2/php.ini
sed -i s'/;opcache.revalidate_freq=2/opcache.revalidate_freq=1/' /etc/php/7.2/apache2/php.ini
sed -i s'/;opcache.save_comments=1/opcache.save_comments=1/' /etc/php/7.2/apache2/php.ini

Activer MPM Prefork :

a2enmod php7.2
a2dismod mpm_event
a2enmod mpm_prefork

Redémarrer Apache :

systemctl restart apache2

Sauvegarder le virtualhost par défaut :

mv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.bak

Éditer le virtualhost par défaut et le modifier de la manière suivante (/!\ à adapter à son besoin) :

nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>  
    ServerName librenms.domaine.lan
    ServerAdmin admin@domaine.lan
    DocumentRoot /opt/librenms/html/
    AllowEncodedSlashes NoDecode

    <Directory /opt/librenms/html/>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog  /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Redémarrer Apache :

systemctl restart apache2

Configurer snmpd :

cp -p /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
nano /etc/snmp/snmpd.conf
com2sec readonly  default         docgreen.fr

Télécharger l'agent "distro" :

curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro

Redémarrer snmpd :

systemctl restart snmpd

Configurer les tâches cron :

cp -p /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms

Configurer les logs :

cp -p /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

Configurer les permissions :

chown -R librenms:librenms /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/

Dans un navigateur Web, se connecter à l'adresse du serveur et finir l'installation :

http://librenms.domaine.lan/install.php

Créer le fichier /opt/librenms/config.php avec le contenu générer par l'installeur

nano /opt/librenms/config.php

Configurer les permissions :

chmod 600 /opt/librenms/config.php
chown librenms:librenms /opt/librenms/config.php

Lancer le script /opt/librenms/validate.php pour vérifier la configuration et appliquer les recommandations si besoin :

./opt/librenms/validate.php

Sources

https://docs.librenms.org/Installation/Installation-Ubuntu-1804-Apache/