Installation et configuration d'Observium

Bonjour à tous, dans cet article nous allons voir comment installer Observium et comment le configurer.

Tout d'abord, qu'est-ce que Observium ?

[Observium][1] est un logiciel de supervision réseau permettant de monitorer son infrastructure en partant du serveur (ou client) avec sa consommation (CPU, Disques…) jusqu'au débit de chaque des ports d'un switch.

Observium utilise la remonté d'information via le protocole SNMP.

Pour la mise place d'Observium, nous utiliserons la distribution CentOS7 (serveur et client).

Installation

Le serveur

Tout d'abord, il faut ajouter les répos REMI, OpenNMS et EPEL pour avoir les bons paquets (avec la bonne version) :

1yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
2yum install http://yum.opennms.org/repofiles/opennms-repo-stable-rhel7.noarch.rpm
3yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Il faut installer les packages yum-utils :

1

install yum-utils

1
2
3Nous utiliserons la version PHP 7.2 pour le serveur web, donc il faut activer le repo de REMI : 
4
5
1-config-manager --enable remi-php72
2

Puis il suffit de faire une mise à jour du système :

1

update

1
2
3Nous pouvons désormais installer les paquets pour le bon fonctionnement dObservium (HTTPD, PHP, SNMP(pour la remonté d'information)…) 
4
5
1 install wget.x86_64 httpd.x86_64 php.x86_64 php-opcache.x86_64 php-mysql.x86_64 php-gd.x86_64 php-posix php-pear.noarch cronie.x86_64 net-snmp.x86_64 net-snmp-utils.x86_64 fping.x86_64 mariadb-server.x86_64 mariadb.x86_64 MySQL-python.x86_64 rrdtool.x86_64 subversion.x86_64  jwhois.x86_64 ipmitool.x86_64 graphviz.x86_64 ImageMagick.x86_64 php-sodium.x86_64
2

NB : Nous installons également rdd-tool car nous allons devoir l'utiliser pour créer des graphiques et sauvegarder les données critiques.

Puis nous devons créer le répertoire où sera contenu la configuration d'Observium et télécharger le package :

1cd /opt
2wget http://www.observium.org/observium-community-latest.tar.gz
3tar zxvf observium-community-latest.tar.gz

Nous devons maintenant configurer la base de donnée : MariaDB

NB : Pour la première utilisation de MySQL, vous pouvez modifier le mot de passe root :

1

r/bin/mysqladmin -u root password '<mysql root password>'

1
2
3Nous allons créer la base de donnée « observium » et ajouter l'utilisateur « observium » en tant administrateur de la BDD.
4
5

mysql -u root -p <mysql root password> CREATE DATABASE observium DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON observium.* TO 'observium'@'localhost' IDENTIFIED BY '<observium db password>'; exit;

1
2
3<u style="font-weight:bold;color:red;">NB :</u> N'oubliez pas de modifier le mot de passe du compte utilisateur « observium » pour plus de sécurité.
4
5Il faut activer le service mariadb pour qu'il se lance automatiquement au démarrage du serveur, et on le lance manuellement : 
6
7

systemctl enable mariadb systemctl start mariadb

1
2
3On initialise le schéma de la base de donnée avec le script fournis : 
4
5
1iscovery.php -u
2

Nous allons récupérer l’emplacement de l'outil « fping » pour que l'application puisse l'utiliser : /usr/sbin/fping.

1

ch fping

1
2
3Au tour du fichier de configuration d'Observium à modifier, n'oubliez pas de créer un backup du fichier avant de le modifier : 
4
5

cp /opt/observium/config.php /opt/observium/config.php.old vi /opt/observium/config.php

 1
 2
 3```<?php<br />## Check http://www.observium.org/docs/config_options/ for documentation of possible settings<br />## It's recommended that settings are edited in the web interface at /settings/ on your observium installation.<br />## Authentication and Database settings must be hardcoded here because they need to work before you can reach the web-based configuration interface<br /> <br />// Database config ---  This MUST be configured<br /> $config['db_extension'] = 'mysqli';<br /> $config['db_host']      = 'localhost';<br /> $config['db_user']      = 'observium';<br /> $config['db_pass']      = '<strong>password</strong>';<br /> $config['db_name']      = 'observium';<br /> // Base directory<br /> $config['install_dir'] = "/opt/observium";<br /> // Default community list to use when adding/discovering<br /> $config['snmp']['community'] = array("public");<br /> // Authentication Model<br /> $config['auth_mechanism'] = "mysql";    // default, other options: ldap, http-auth, please see documentation for config help<br /> $config['fping'] = "<strong>/usr/sbin/fping</strong>";<br /><br /> $config['enable_billing']       = 1;<br /><strong> $config['collectd_dir']         = "/var/lib/collectd/rrd/";</strong><br /> // End config.php```
 4
 5<u style="font-weight:bold;color:red;">NB :</u> Veuillez modifier la communauté SNMP public pour augmenter le niveau de sécurité
 6
 7```$config['snmp']['community'] = array("TaCommunautéPrivée"); ```
 8
 9Par défaut sur CentOS (sur RedHat plus particulièrement), SELinux est activé. SELinux est un module qui permet de définir une politique d'accès obligatoire. Il va falloir donc dans notre cas le désactiver complètement pour éviter des problèmes au niveau du module. Nous verrons dans un prochain article comment fonctionne SELinux.
10
11
1/etc/selinux/config
2

SELINUX=permissive

Il faut maintenant autoriser le port 80 (HTTP) pour que les clients puissent accéder à la page web du serveur (et 161 pour le SNMP) :

1firewall-cmd --add-port=80/tcp,161/udp --permanent
2firewall-cmd --reload

Il faut maintenant créer le répertoire qui contiendra les données des différents équipements :

1

ir -p /opt/observium/rrd

1
2
3Et on donne à l'utilisateur et au groupe apache la propriété du dossier : 
4
5
1wn apache:apache /opt/observium/rrd
2

Nous allons ajouter un virtualhost dans la configuration d'apache :

1

/etc/httpd/conf.d/observium.conf

1
2
3```<VirtualHost *&gt;<br />   DocumentRoot /opt/observium/html/<br />   #ServerName  observium.domain.com<br />   CustomLog /opt/observium/logs/access_log combined<br />   ErrorLog /opt/observium/logs/error_log<br />   <Directory "/opt/observium/html/"&gt;<br />      AllowOverride All<br />      Options FollowSymLinks MultiViews<br />      Require all granted<br />   </Directory&gt;<br /></VirutalHost&gt;```
4
5Il faut désormais créer le répertoire qui contiendra les logs de l'application (et attribuer apache en tant que propriétaire du dossier)
6
7

mkdir -p /opt/observium/logs chown apache:apache /opt/observium/logs

1
2
3Enfin, nous créons un utilisateur (administrateur) pour l'accès à l'interface graphique. Nous utilisons le « level » 10 pour lui donner les droits adminitrateur :
4
5

./opt/observium/adduser.php <username> <password> <level>

./opt/observium.adduser.php admin admin 10

1
2
3Vous devez relancer le service httpd et l'activer au démarrage du serveur 
4
5

systemctl restart httpd systemctl enable httpd

 1
 2
 3Vous pouvez désormais vous rendre sur la page d'observium via l'adresse IP du serveur : pour ma part ca sera http://observium.lab.local<figure class="wp-block-image">
 4
 5[<img loading="lazy" width="957" height="344" src="https://net-security.fr/wp-content/uploads/Observium/observium1.jpg" alt="" class="wp-image-905" srcset="https://net-security.fr/wp-content/uploads/Observium/observium1.jpg 957w, https://net-security.fr/wp-content/uploads/Observium/observium1-300x108.jpg 300w, https://net-security.fr/wp-content/uploads/Observium/observium1-768x276.jpg 768w" sizes="(max-width: 957px) 100vw, 957px" />][2]</figure> 
 6
 7### Le client
 8
 9Tout d'abord, vous devez installer le paquet SNMP pour la communication avec le serveur :
10
11
1 -y install net-snmp net-snmp-utils
2

On sauvegarde le fichier de configuration d'origine de SNMP pour y placer notre configuration :

1mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig
2vi /etc/snmp/snmpd.conf

#sec.name source community
com2sec notConfigUser default Lab2Snmp

#groupName securityModel securityName
group notConfigGroup v2c notConfigUser

#name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1

#group context sec.model sec.level prefix read write notif
access notConfigGroup «  » any noauth exact systemview none none

syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root (configure /etc/snmp/snmp.local.conf)

#We do not want annoying « Connection from UDP:  » messages in syslog.
#If the following option is commented out, snmpd will print each incoming connection, which can be useful for debugging.

dontLogTCPWrappersConnects yes

NB : L'option « v2c » permet de définir le SNMP Version 2.
Lab2Snmp équivaut au nom de votre communauté privée.

Puis on active le service au démarrage et on le lance :

1systemctl enable snmpd
2systemctl start snmpd

On autorise le flux SNMP à circuler :

1firewall-cmd --permanent --zone=public --add-service=snmp
2firewall-cmd --reload

Pour tester si le SNMP est fonctionnel au niveau du client :

1

pwalk -v 2c -c Lab2Snmp -O e 127.0.0.1

 1
 2
 3```SNMPv2-MIB::sysDescr.0 = STRING: Linux client-centos 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64<br />SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (51956375) 6 days, 0:19:23.75<br />SNMPv2-MIB::sysContact.0 = STRING: Root  (configure /etc/snmp/snmp.local.conf)<br />SNMPv2-MIB::sysName.0 = STRING: client-centos<br />SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)<br />...```
 4
 5Votre client est désormais opérationnel pour communiquer avec le serveur.
 6
 7## Configuration
 8
 9Rendez-vous sur le serveur Observium. Pour ajouter un hôte, il suffit de saisir la commande suivante : 
10
11
1 /opt/observium/add_device.php <HostnameOrIPAdress&gt; <Community&gt; v2c
2
1

/opt/observium/add_device.php client-centos Lab2Snmp v2c

1
2
3Pour commencer à récuperer les informaitons concernant le nouvel hôte : 
4
5

php /opt/observium/discovery.php -h all php /opt/observium/poller.php -h all

1
2
3Enfin, il est possible d'automatiser la remontée d'information via le cron du serveur :
4
5
1/etc/cron.d/observium
2

# Découverte de tous les hôtes tous les 6 heures (mise à jour du schéma de la bdd) #
33 */6 * * * root /opt/observium/discovery.php -h all >> /dev/null 2>&1
# Vérification des nouveaux hôtes tous les 5 minutes #
*/5 * * * * root /opt/observium/discovery.php -h new >> /dev/null 2>&1
# Tous les 5 minutes, demande au poller de récupérer les informations de l'hôte #
*/5 * * * * root /opt/observium/poller-wrapper.py >> /dev/null 2>&1
# Tous les jours, récupération du syslog, eventlog et log des hôtes #
2 1 * * * root /opt/observium/housekeeping.php -ysel
# Tous les jours, récupération des informations concernant rrd, ports… #
2 2 * * * root /opt/observium/housekeeping.php -yrptb

Vous devez relancer crond :

1

temctl reload crond

 1
 2
 3Vous pouvez désormais vous connecter sur l'interface d'observium et vérifier que votre hôte a bien été ajouté : <figure class="wp-block-image">
 4
 5[<img loading="lazy" width="1024" height="424" src="https://net-security.fr/wp-content/uploads/Observium/observium1-1024x424.png" alt="" class="wp-image-944" srcset="https://net-security.fr/wp-content/uploads/Observium/observium1-1024x424.png 1024w, https://net-security.fr/wp-content/uploads/Observium/observium1-300x124.png 300w, https://net-security.fr/wp-content/uploads/Observium/observium1-768x318.png 768w, https://net-security.fr/wp-content/uploads/Observium/observium1.png 1891w" sizes="(max-width: 1024px) 100vw, 1024px" />][3]</figure> <figure class="wp-block-image">[<img loading="lazy" width="1024" height="261" src="https://net-security.fr/wp-content/uploads/Observium/observium2-1024x261.png" alt="" class="wp-image-945" srcset="https://net-security.fr/wp-content/uploads/Observium/observium2-1024x261.png 1024w, https://net-security.fr/wp-content/uploads/Observium/observium2-300x76.png 300w, https://net-security.fr/wp-content/uploads/Observium/observium2-768x196.png 768w, https://net-security.fr/wp-content/uploads/Observium/observium2.png 1880w" sizes="(max-width: 1024px) 100vw, 1024px" />][4]</figure> 
 6
 7Et après quelques jours de remontés de données, vous obtenez des résultats (par exemple la disponibilité de la machine) : <figure class="wp-block-image">
 8
 9[<img loading="lazy" width="1024" height="404" src="https://net-security.fr/wp-content/uploads/Observium/observium3-1024x404.png" alt="" class="wp-image-946" srcset="https://net-security.fr/wp-content/uploads/Observium/observium3-1024x404.png 1024w, https://net-security.fr/wp-content/uploads/Observium/observium3-300x118.png 300w, https://net-security.fr/wp-content/uploads/Observium/observium3-768x303.png 768w, https://net-security.fr/wp-content/uploads/Observium/observium3.png 1258w" sizes="(max-width: 1024px) 100vw, 1024px" />][5]</figure> 
10
11Si vous souhaitez avoir plus d'informations, vous pouvez également ajouter Collectd sur le serveur : 
12
13
1 install collectd
2

Et configurer le fichier de collectd en décommentant les lignes suivantes :

1

/etc/collectd.conf

 1
 2
 3![](/)
 4  <figure class="aligncenter"><a href="https://net-security.fr/wp-content/uploads/Observium/observium4.png"><img loading="lazy" width="326" height="256" src="https://net-security.fr/wp-content/uploads/Observium/observium4.png" alt="" class="wp-image-948" srcset="https://net-security.fr/wp-content/uploads/Observium/observium4.png 326w, https://net-security.fr/wp-content/uploads/Observium/observium4-300x236.png 300w" sizes="(max-width: 326px) 100vw, 326px" /></a></figure>
 5</div>
 6
 7<u style="font-weight:bold;color:red;">NB :</u> Vous pouvez ajouter autant de module que vous souhaitez monitorer.
 8
 9On ajoute l'entrée de collectd au firewall : 
10
11

firewall-cmd --add-port=25826/udp --permanent firewall-cmd --reload

1
2
3Et on active et lance le service :
4
5

systemctl enable collectd systemctl start collectd

1
2
3On configure également collectd au niveau client : 
4
5

yum install collectd vi /etc/collectd.conf

 1
 2
 3![](/)
 4  <figure class="aligncenter"><a href="https://net-security.fr/wp-content/uploads/Observium/observium6.png"><img loading="lazy" width="308" height="262" src="https://net-security.fr/wp-content/uploads/Observium/observium6.png" alt="" class="wp-image-951" srcset="https://net-security.fr/wp-content/uploads/Observium/observium6.png 308w, https://net-security.fr/wp-content/uploads/Observium/observium6-300x255.png 300w" sizes="(max-width: 308px) 100vw, 308px" /></a></figure>
 5</div>
 6
 7<u style="font-weight:bold;color:red;">NB :</u> La balise server est à configurer en fonction de l'IP et du port du serveur Observium.
 8
 9On ajoute collectd au firewall du client : 
10
11

firewall-cmd --add-port=25826/udp --permanent firewall-cmd --reload

1
2
3Et on active et démarre le service : 
4
5

systemctl enable collectd systemctl start collectd

 1
 2
 3Après quelques minutes, le dossier /var/lib/collectd/rrd/ doit contenir un dossier par client avec à l'intérieur toutes les données des différents plugins que vous avez configuré : 
 4
 5![](/)
 6  <figure class="aligncenter"><a href="https://net-security.fr/wp-content/uploads/Observium/observium7.png"><img loading="lazy" width="482" height="68" src="https://net-security.fr/wp-content/uploads/Observium/observium7.png" alt="" class="wp-image-952" srcset="https://net-security.fr/wp-content/uploads/Observium/observium7.png 482w, https://net-security.fr/wp-content/uploads/Observium/observium7-300x42.png 300w" sizes="(max-width: 482px) 100vw, 482px" /></a></figure>
 7</div>
 8
 9Et vous pouvez vérifier sur l'interface web, l'onglet « collectd » qui est apparu avec les différentes données :
10
11![](/)
12  <figure class="aligncenter"><a href="https://net-security.fr/wp-content/uploads/Observium/observium5.png"><img loading="lazy" width="1024" height="283" src="https://net-security.fr/wp-content/uploads/Observium/observium5-1024x283.png" alt="" class="wp-image-953" srcset="https://net-security.fr/wp-content/uploads/Observium/observium5-1024x283.png 1024w, https://net-security.fr/wp-content/uploads/Observium/observium5-300x83.png 300w, https://net-security.fr/wp-content/uploads/Observium/observium5-768x212.png 768w, https://net-security.fr/wp-content/uploads/Observium/observium5.png 1242w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
13</div>
14
15Vous pouvez ajouter des machines clients, serveurs, des switchs, des routeurs...et les répertorier dans Observium. 
16
17Pour pouvez également ajouter des alertes pour être informer d'une latence élevée d'une machine par exemple.
18
19J'espère que l'article vous aura plu.
20
21N'hésitez pas à commenter si vous avez la moindre remarque.
22
23A bientôt, 
24
25Fabio Pace
26
27 [1]: https://docs.observium.org/
28 [2]: https://net-security.fr/wp-content/uploads/Observium/observium1.jpg
29 [3]: https://net-security.fr/wp-content/uploads/Observium/observium1.png
30 [4]: https://net-security.fr/wp-content/uploads/Observium/observium2.png
31 [5]: https://net-security.fr/wp-content/uploads/Observium/observium3.png