LibreNMS (Supervision)
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/