LibreNMS (Supervision)

Logo LibreNMS

Environnement

  • Conteneur LXC Proxmox
  • Ubuntu 20.04

Installation

Installer les dépendances :

apt install -y software-properties-common
add-apt-repository universe -y
apt update
apt install -y acl curl apache2 composer fping git graphviz imagemagick libapache2-mod-fcgid mariadb-client mariadb-server mtr-tiny nmap php7.4-cli php7.4-curl php7.4-fpm php7.4-gd php7.4-gmp php7.4-json php7.4-mbstring php7.4-mysql php7.4-snmp php7.4-xml php7.4-zip rrdtool snmp snmpd whois python3-pymysql python3-dotenv python3-redis python3-setuptools python3-systemd python3-pip

Redémarrer Apache :

systemctl enable apache2
systemctl restart apache2

Configuration

Créer un utilisateur librenms :

useradd librenms -d /opt/librenms -M -r -s "$(which bash)"

Installer LibreNMS :

cd /opt
git clone https://github.com/librenms/librenms.git

Configurer les droits :

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/

Installer les dépendances PHP :

su - librenms
./scripts/composer_wrapper.php install --no-dev
exit

Configurer les timezones :

nano /etc/php/7.4/fpm/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris
nano /etc/php/7.4/cli/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris
timedatectl set-timezone Europe/Paris

Sécuriser l'installation de MariaDB :

mysql_secure_installation

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

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]

innodb_file_per_table=1
lower_case_table_names=0

Redémarrer MariaDB :

systemctl enable mariadb
systemctl restart mariadb

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 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'mot_de_passe';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit;

Configurer PHP-FPM :

cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/librenms.conf
nano /etc/php/7.4/fpm/pool.d/librenms.conf

Modifier les valeurs suivantes :

[librenms]

user = librenms
group = librenm

listen = /run/php-fpm-librenms.sock

Supprimer le fichier /etc/php/7.4/fpm/pool.d/www.conf s'il n'est pas utilisé :

rm /etc/php/7.4/fpm/pool.d/www.conf

Configurer Apache :

nano /etc/apache2/sites-available/librenms.conf
<VirtualHost *:80>
  DocumentRoot /opt/librenms/html/
  ServerName librenms.domaine.lan

  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>

Activer le virtualhost :

a2dissite 000-default
a2enconf php7.4-fpm
a2enmod proxy_fcgi setenvif rewrite
a2ensite librenms.conf
systemctl restart apache2
systemctl restart php7.4-fpm

Activer l'auto-complétion des commandes lnms :

ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/

Configurer snmpd :

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

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 enable snmpd
systemctl restart snmpd

Configurer les tâches cron :

cp -p /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
chown root:root /etc/cron.d/librenms

Configurer les logs :

cp -p /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
chown root:root /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

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

sudo su - librenms
cd /opt/librenms/
./validate.php

Mettre à jour :

sudo su - librenms
cd /opt/librenms/
./daily.php

Supprimer les fichiers Git modifiés :

sudo su - librenms
cd /opt/librenms/
./scripts/github-remove -d

Clients

GNU/Linux

  • Installer le serveur SNMP :
sudo apt install snmp snmpd
  • Éditer le fichier /etc/snmp/snmpd.conf :
nano /etc/snmp/snmpd.conf
sysLocation    Home
sysContact     Root <root@domain.lan>

agentaddress udp:127.0.0.1:161,udp:192.168.0.1:161

rocommunity  domain.lan default
  • Relancer le serveur SNMP :
sudo systemctl restart snmpd.service

Proxmox

  • Installer le paquet libpve-apiclient-perl :
apt install libpve-apiclient-perl
  • Télécharger le script de supervision et le rendre exécutable :
wget https://raw.githubusercontent.com/librenms/librenms-agent/master/agent-local/proxmox -O /usr/local/bin/proxmox

chmod +x /usr/local/bin/proxmox

Éditer le fichier /etc/snmp/snmpd.conf et ajouter la ligne extend proxmox /usr/local/bin/proxmox :

nano /etc/snmp/snmpd.conf
extend proxmox /usr/local/bin/proxmox

LibreElec

  • Télécharger l'add-on net-snmp via l'interface graphique et configurer les éléments suivants :
  • COMMUNITY
  • LOCATION
  • CONTACT

  • Le fichier de configuration settings.xml est disponible à l'adresse /storage/.kodi/userdata/addon_data/service.net-snmp/

nano /storage/.kodi/userdata/addon_data/service.net-snmp/settings.xml
<settings version="2">
    <setting id="COMMUNITY">domain.lan</setting>
    <setting id="LOCATION" default="true">HOME</setting>
    <setting id="CONTACT">root@domain.lan</setting>
    <setting id="SNMPVERSION" default="true">v2c</setting>
    <setting id="SNMPUSER" default="true">user</setting>
    <setting id="SNMPPASSWORD" default="true">password</setting>
    <setting id="CPUTEMP">true</setting>
    <setting id="GPUTEMP" default="true">false</setting>
</settings>
  • Redémarrer Kodi

Sources

https://docs.librenms.org/Installation/Install-LibreNMS/