Recherche de site Web

LibreNMS - Un outil de surveillance réseau complet pour Linux


LibreNMS est un système de surveillance de réseau open source, puissant et riche en fonctionnalités, basé sur PHP, à découverte automatique, qui utilise le protocole SNMP. Il prend en charge une large gamme de systèmes d'exploitation, notamment Linux, FreeBSD, ainsi que des périphériques réseau, notamment Cisco, Juniper, Brocade, Foundry, HP et bien d'autres.

Caractéristiques de LibreNMS :

  1. Il découvre automatiquement l'ensemble d'un réseau à l'aide de ces protocoles : CDP, FDP, LLDP, OSPF, BGP, SNMP et ARP.
  2. Il dispose d'une interface utilisateur Web adaptée aux mobiles, avec des tableaux de bord personnalisables.
  3. Prend en charge un agent Unix.
  4. Prend en charge la mise à l'échelle horizontale pour s'étendre avec votre réseau.
  5. Prend en charge un système d'alerte hautement flexible et personnalisable ; envoie des notifications par e-mail, irc, slack et plus encore.
  6. Prend en charge une API pour gérer, représenter graphiquement et récupérer les données de votre système.
  7. Propose un système de facturation du trafic.
  8. Prend également en charge les applications Android et iOS qui offrent des fonctionnalités de base.
  9. Prend en charge l'intégration avec NfSen, collectd, SmokePing, RANCID et Oxidized.
  10. Prend en charge plusieurs méthodes d'authentification telles que MySQL, HTTP, LDAP, Radius et Active Directory.
  11. Permet la mise à jour automatique et de nombreuses autres fonctionnalités.

Une démo en ligne est disponible pour que vous puissiez l'essayer avant d'installer LibreNMS sur les systèmes Linux.

Demo URL: https://demo.librenms.org/
Username: demo
Password: demo

Environnement de test :

  1. Ubuntu 16.04 avec pile LEMP
  2. CentOS 7 avec pile LEMP

Dans ce didacticiel, nous apprendrons comment installer l'Outil de surveillance réseau LibreNMS sur un Ubuntu ou un CentOS Linux fraîchement installé (les mêmes instructions fonctionnent également sur Distributions basées sur Debian et RHEL).

REMARQUE : Toutes ces instructions de cet article doivent être exécutées en tant qu'utilisateur root. Si ce n'est pas le cas, utilisez la commande sudo pour obtenir la racine. privilèges des utilisateurs.

Étape 1 : Installer les packages requis

1. Commencez par installer tous les packages requis à l'aide du gestionnaire de packages par défaut, comme indiqué.

Sur Ubuntu/Debian

sudo apt install composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php7.0-cli php7.0-curl php7.0-fpm php7.0-gd php7.0-mcrypt php7.0-mysql php7.0-snmp php7.0-xml php7.0-zip python-memcache python-mysqldb rrdtool snmp snmpd whois

Sur CentOS/RHEL

yum install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install composer cronie fping git ImageMagick jwhois mariadb mariadb-server mtr MySQL-python net-snmp net-snmp-utils nginx nmap php72w php72w-cli php72w-common php72w-curl php72w-fpm php72w-gd php72w-mysql php72w-process php72w-snmp php72w-xml php72w-zip python-memcached rrdtool

2. Une fois tous les packages installés, nginx, php-fpm, mariadb et snmp< Les services seront démarrés et activés pour démarrer automatiquement au moment du démarrage (c'est normalement le cas avec Ubuntu), sinon vous pouvez exécuter les commandes ci-dessous pour les démarrer et les activer.

------------ On Debian/Ubuntu ------------ 
sudo systemctl nginx start php7.0-fpm mysql snmp 
sudo systemctl enable nginx php7.0-fpm mysql snmp

------------ On CentOS/RHEL ------------ 
systemctl nginx start php-fpm mariadb snmpd 
systemctl enable nginx php-fpm mariadb snmpd

Étape 2 : Installer l'outil de surveillance LibreNMS

3. Ensuite, créez un utilisateur système appelé librenms, avec la commande useradd ; où l'indicateur -M désactive la création du répertoire personnel de l'utilisateur et -r permet la création d'un compte système. Ajoutez ensuite l'utilisateur librenms au groupe www-data (sur Ubuntu) ou nginx (sur CentOS) comme suit.

------------ On Debian/Ubuntu ------------ 
sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -a -G librenms www-data   

------------ On CentOS/RHEL ------------ 
useradd librenms -d /opt/librenms -M -r
usermod -a -G librenms nginx           

4. Ensuite, installez LibreNMS via la commande composer comme indiqué.

------------ On Debian/Ubuntu ------------ 
cd /opt
sudo composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

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

Étape 3 : Créer une base de données LibreNMS

5. Avant de pouvoir commencer à utiliser le serveur MariaDB, vous devez sécuriser votre installation, exécutez le script de sécurité fourni dans le package binaire. Il vous demandera de définir un mot de passe root, de supprimer les utilisateurs anonymes, de désactiver la connexion root à distance et de supprimer la base de données de test.

Vous pouvez lancer le script en exécutant la commande ci-dessous et répondre à toutes les questions par oui/y.

sudo mysql_secure_installation   [On Debian/Ubuntu]
mysql_secure_installation        [On CentOS/RHEL]

6. Connectez-vous ensuite à la base de données MariaDB pour créer une base de données pour LibreNMS (n'oubliez pas d'utiliser un mot de passe fort/sécurisé dans un environnement de production).

sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> CREATE USER 'librenms'@'localhost' IDENTIFIED BY '=@!#@%$libre';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

7. Ensuite, désactivez le mode strict MySQL pour l'instant (la compatibilité avec le mode strict MySQL n'a pas encore été ajoutée).

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf    [On Debian/Ubuntu]
vi /etc/my.cnf        [On CentOS/RHEL]

Dans la section [mysqld], veuillez ajouter.

innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

Redémarrez ensuite le serveur de base de données pour appliquer les modifications.

sudo systemctl restart mysql     [On Debian/Ubuntu]
systemctl restart mariadb        [On CentOS/RHEL]

Étape 4 : configurer et démarrer PHP-FPM

8. Ensuite, définissez votre date.timezone dans le php.ini sur votre fuseau horaire actuel, par exemple « Afrique/Kampala », comme le montre la capture d'écran suivante.

------------ On Debian/Ubuntu ------------ 
sudo vim /etc/php/7.0/fpm/php.ini
sudo vim /etc/php/7.0/cli/php.ini

------------ On CentOS/RHEL ------------ 
vi /etc/php.ini

9. Activez ensuite le module PHP mcrypt dans Ubuntu et redémarrez php-fpm comme indiqué.

------------ On Debian/Ubuntu ------------ 
sudo phpenmod mcrypt
sudo systemctl restart php7.0-fpm

10. Sur CentOS/RHEL, vous devez apporter les modifications suivantes dans le fichier de configuration php-fpm.

vi /etc/php-fpm.d/www.conf

Apportez les modifications suivantes.

;user = apache
user = nginx

group = apache   ; keep group as apache

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php7.2-fpm.sock

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

11. Redémarrez le service php-fpm comme indiqué.

systemctl restart php-fpm

Étape 5 : Configurer Nginx pour LibreNMS

12. Dans cette étape, vous devez configurer un bloc serveur Nginx pour librenms afin d'accéder à l'interface utilisateur Web. Créez un fichier .conf comme indiqué.

sudo vim /etc/nginx/conf.d/librenms.conf     [On Debian/Ubuntu]
vi /etc/nginx/conf.d/librenms.conf           [On CentOS/RHEL]         

Ajoutez la config suivante, modifiez server_name si nécessaire.

server {
 listen      80;
 server_name librenms.example.com;
 root        /opt/librenms/html;
 index       index.php;

 charset utf-8;
 gzip on;
 gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
 location / {
  try_files $uri $uri/ /index.php?$query_string;
 }
 location /api/v0 {
  try_files $uri $uri/ /api_v0.php?$query_string;
 }
 location ~ \.php {
  include fastcgi.conf;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 }
 location ~ /\.ht {
  deny all;
 }
}

13. Enregistrez ensuite et quittez le fichier. Supprimez également la configuration du bloc serveur par défaut et redémarrez le serveur Nginx.

------------ On Debian/Ubuntu ------------ 
sudo rm /etc/nginx/sites-enabled/default
sudo systemctl restart nginx

------------ On CentOS/RHEL ------------ 
systemctl restart nginx

REMARQUE : Sur CentOS/RHEL, vous devrez désactiver la section site par défaut, s'il s'agit du seul site que vous hébergez. Supprimez la section serveur du fichier /etc/nginx/nginx.conf.

14. Également sur CentOS/RHEL, vous devez installer l'outil de stratégie pour SELinux et configurer le contextes nécessaires à LibreNMS à l'aide des commandes suivantes.

------------ On CentOS/RHEL ------------ 
yum install policycoreutils-python
semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
restorecon -RFvv /opt/librenms/logs/
semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
restorecon -RFvv /opt/librenms/rrd/
setsebool -P httpd_can_sendmail=1
setsebool -P httpd_execmem 1

15. Autorisez fping en créant le fichier http_fping.tt avec le contenu suivant.

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 };

16. Ensuite, exécutez ces commandes.

------------ On CentOS/RHEL ------------ 
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

17. Si vous utilisez le pare-feu sur CentOS/RHEL, activez l'accès HTTP/HTTPS via le pare-feu.

------------ On CentOS/RHEL ------------ 
firewall-cmd --zone public --add-service http
firewall-cmd --permanent --zone public --add-service http
firewall-cmd --zone public --add-service https
firewall-cmd --permanent --zone public --add-service https

Étape 6 : Configurer SNMPD pour LibreNMS

18. Utilisez maintenant l'exemple de configuration snmp pour créer votre fichier de configuration et ouvrez-le pour le modifier, comme suit.

------------ On Debian/Ubuntu ------------ 
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo vim /etc/snmp/snmpd.conf

------------ On CentOS/RHEL ------------ 
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
vi /etc/snmp/snmpd.conf

Recherchez la chaîne RANDOMSTRINGGOESHERE et remplacez-la par votre propre chaîne de communauté, comme indiqué dans la capture d'écran.

19. Ensuite, téléchargez un script shell sur votre système, qui permet de détecter quel système d'exploitation et s'il s'agit de Linux, il détectera quelle distribution Linux vous utilisez :

------------ On Debian/Ubuntu ------------ 
sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
sudo chmod +x /usr/bin/distro
sudo systemctl restart snmpd

------------ On CentOS/RHEL ------------ 
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro
systemctl restart snmpd

Étape 7 : Créer Cron et configurer Logrotate

20. Exécutez maintenant la commande ci-dessous pour configurer une tâche cron pour LibreNMS.

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

21. Ensuite, tous les journaux LibreNMS sont enregistrés dans /opt/librenms/logs, vous devrez peut-être configurer la rotation automatique de ces journaux. , en utilisant le fichier de configuration logrotate fourni, comme ceci.

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

Définissez ensuite les autorisations appropriées sur le répertoire racine d'installation de LibreNMS et les fichiers journaux.

------------ On Debian/Ubuntu ------------
sudo chown -R librenms:librenms  /opt/librenms
sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

------------ On CentOS/RHEL ------------ 
chown -R librenms:librenms /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

Étape 8 : Accédez au programme d'installation Web LibreNMS

22. Ensuite, utilisez l'URL suivante pour accéder au programme d'installation Web et suivez les instructions à l'écran.

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

Pour que cette adresse fonctionne sur une machine locale, vous devez configurer un DNS local à l'aide du fichier hosts (/etc/hosts), à des fins de résolution de domaine local ou à des fins de test avant la mise en ligne.

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan

23. Vous verrez la page d'accueil de l'installation comme indiqué dans la capture d'écran suivante, cliquez sur Étape suivante pour continuer.

24. Entrez ensuite les paramètres (hôte de la base de données, port, nom d'utilisateur et mot de passe utilisateur) de la base de données LibreNMS et cliquez sur Étape suivante pour continuer.

25. L'installateur Web va maintenant commencer à importer la base de données MySQL, cela prendra un certain temps. Notez que le processus tentera de s'arrêter à certains moments, cliquez simplement sur Réessayer pour continuer le processus d'importation.

26. Une fois l'importation de la base de données terminée, vous devriez voir le message « La base de données est à jour ! », comme indiqué dans la capture d'écran ci-dessous. Cliquez ensuite sur Aller à Ajouter un utilisateur pour continuer.

27. Ensuite, ajoutez un utilisateur LibreNMS, spécifiez le nom d'utilisateur, le mot de passe et l'e-mail, puis cliquez sur Ajouter un utilisateur pour effectuer les modifications.

28. Cliquez maintenant sur créer la configuration LibreNMS pour votre système, en cliquant sur Générer la configuration.

29. Une fois la configuration générée, comme indiqué dans la capture d'écran précédente, copiez-la et enregistrez-la dans le répertoire racine de votre installation, dans un fichier appelé /opt/librenms/config.php. .

vi /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'] = '=@!#@%$libre';
$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

30. Enregistrez et fermez le fichier. Revenez ensuite au programme d'installation Web pour poursuivre le processus d'installation, en cliquant sur Terminer l'installation.

31. Maintenant que votre installation LibreNMS est terminée, vous pouvez cliquer sur « valider votre installation et résoudre les éventuels problèmes », la page de connexion devrait apparaître.

32. Ensuite, saisissez vos identifiants utilisateur pour accéder à la page de validation.

33. Lors du processus de validation de l'installation, LibreNMS a découvert deux problèmes : l'un est que les périphériques n'ont pas été ajoutés (il s'agit d'un avertissement pour l'instant), et deuxièmement, nous avons n'avez pas défini l'autorisation appropriée sur le fichier de configuration (/opt/librenms/config.php) qui a été ajouté manuellement, comme indiqué dans la capture d'écran ci-dessous.

Exécutez maintenant la commande suivante pour définir l'autorisation correcte sur le fichier de configuration.

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

34. Pour ajouter des appareils, accédez à : http://librenms.tecmint.lan/addhost. Après avoir ajouté des appareils, vous pouvez accéder à la page d'accueil et ajouter divers tableaux de bord.

C'est ça! Vous pouvez trouver plus d'informations, y compris l'installation et la configuration, dans la documentation LibreNMS à l'adresse https://docs.librenms.org/.

LibreNMS est un système de surveillance réseau complet qui prend en charge une variété de matériel réseau. Nous espérons qu'il s'agit d'un guide d'installation lucide. Si vous avez des questions, contactez-nous via le formulaire de commentaires ci-dessous.