Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Debian GNU/Linux
  3. Outils de surveillance et supervision
Extrait - Debian GNU/Linux Maîtrisez la sécurité des infrastructures
Extraits du livre
Debian GNU/Linux Maîtrisez la sécurité des infrastructures Revenir à la page d'achat du livre

Outils de surveillance et supervision

Surveillance basique

1. Présentation et définitions

Après s’être intéressé à l’analyse des différentes machines d’une infrastructure, il est temps d’étudier la mise en place d’instruments de supervision sur les machines de l’environnement de production. Avant de commencer, il est important de bien distinguer l’analyse et la supervision. Dans le premier cas, comme abordé dans le chapitre précédent, il s’agit plus de récupérer de l’information, ponctuellement. Alors que dans le cas présent nous chercherons à garder un œil (voire les deux, de préférence) sur l’évolution de l’exploitation des machines du parc informatique. La définition exacte de la supervision informatique est la suivante : il s’agit de la surveillance du bon fonctionnement d’un système et/ou d’une activité. C’est pourquoi il est primordial de posséder un mécanisme connecté en permanence, remontant les alertes en cas d’incidents. Cela doit permettre de rapporter, alerter et surveiller les fonctionnements aussi bien normaux qu’anormaux des systèmes informatiques. Cette préoccupation doit répondre aux points suivants :

  • surveillance technique : gestion du réseau, de l’infrastructure et des machines sous-jacentes

  • surveillance applicative : gestion des applications et des processus métiers

  • surveillance des contrats de services : gestion des indicateurs contractuels, type SLA

  • surveillance métier : inspection des processus métiers de l’entreprise via des KPI

Dans ce dernier cas, nous devons bien sûr nous assurer que l’ensemble des fonctionnalités mises en œuvre par les informaticiens respecte bien les préoccupations du cœur de métier. En d’autres termes, l’informatique n’est que l’outil permettant d’aider l’entreprise à être plus rentable et plus réactive. Le système de supervision est là pour envoyer des messages sur la console, aux administrateurs et aux utilisateurs, en cas de dysfonctionnement. Ce genre d’activité doit se faire après avoir sécurisé l’écosystème...

Supervision d’un système de calcul

1. Fonctionnalités

Il s’agit d’un projet développé par l’université de Berkeley sous licence BSD, effectuant le monitoring des performances des nœuds de clusters de calculs. L’intérêt se situe au niveau de l’optimisation de la bande passante. On peut comprendre que pour des clusters ayant quelques centaines (voire des milliers) de nœuds de calculs, il est préférable de ne pas accroître le trafic réseau et la charge induite des machines, avec des diffusions de rapports gourmands en ressources. Un cluster de calculs est à voir comme un amalgame de machines où l’on cherche à mutualiser les puissances de calculs (c’est-à-dire les processeurs et la mémoire). Le réseau n’est rien d’autre alors qu’un bus de diffusion. Pour superviser ce type d’architecture, nous pouvons avoir recours à l’outil Ganglia, qui peut également être utilisé en environnement standard s’adapteront au niveau de simples machines de type serveur web, base de données, messagerie, authentification...  Ce logiciel autorise également le regroupement de services de supervision, sous forme de groupes appelés "clusters", selon le type d’environnement : Développement, Recette, Tests ou Production... Les informations sont récupérées en temps réel et Ganglia peut superviser un ensemble hétérogène de machines : Linux, Unix, Windows, etc. Cet outil se compose de deux services fondamentaux que sont :

  • Le daemon gmond : opérant sur chaque nœud ou serveur à superviser et collectant les différentes valeurs.

  • Le daemon gmetad : service consolidant les données collectées par le daemon gmond et les stockant dans une base interne de type RRD (Round Robin Database).

Ce genre de base RRD est généralement conçu pour traiter des données évoluant dans le temps, visualisables à l’aide de l’outil RRDTool qui est considéré comme un programme d’arrière-plan pour traiter cette catégorie d’informations.

Le daemon gmetad gère les nœuds disposant de l’agent gmond comme des références...

Supervision évoluée

1. Généralités

Dans la continuité des solutions de surveillance intégrant des bases de données, nous pouvons citer Zabbix. Il s’agit également d’un logiciel libre, réalisant la surveillance de l’état de services réseau, de serveurs, ou d’équipements divers produisant des graphes de consommation. Cet outil a été créé par Alexei VLADISHEY. Ce service se décompose en trois parties indépendantes les unes des autres :

  • Le serveur de données (le socle de base)

    La possibilité est offerte d’installer, au choix, un moteur de base de données MySQL, PostgreSQL ou Oracle afin de stocker les différentes informations récoltées.

  • Le serveur de traitement (le middleware)

    Il s’agit d’un service (ou daemon) opérant sous Linux, BSD et divers Unix offrant différentes possibilités de monitoring. Dans le mode simple, sans installation de logiciel supplémentaire, il peut superviser les services standard tels que SMTP, HTTP et grâce à l’agent zabbix-agentd, il peut aussi obtenir des informations précises de charge CPU, d’utilisation du réseau ou d’espace disque. Il est même possible de configurer des « proxies » Zabbix permettant alors de répartir la charge et les services de surveillance sur différents équipements.

  • Le serveur de gestion (le serveur d’affichage)

    L’interface est écrite en PHP et permet d’interagir sur les données stockées en base. Les informations sont réactualisées systématiquement sans aucune action à effectuer de la part de l’administrateur. Les fonctionnalités proposées par cette interface sont les suivantes :

  • affichage des graphes et des états

  • génération de graphiques

  • classement et regroupement (clusterisation)

  • découverte de nouveaux serveurs

  • gestion des droits d’accès

    Un agent zabbix-agentd est installé sous forme de service sur chaque équipement à surveiller. Celui-ci écoute par défaut sur le port TCP/10050 et est en charge de l’exécution des scripts permettant d’échantillonner les différentes métriques...

Supervision complète

1. Présentation

En effet, la plupart du temps, les logiciels de supervision mis en place sont essentiellement orientés infrastructure et technologie. Ils se focalisent sur les indicateurs de type bas niveau, liés aux équipements physiques :

  • serveurs

  • routeurs

  • commutateurs

  • mémoire

  • CPU

Mais ils ne s’intéressent nullement aux problèmes de services dégradés, comme un cluster dont un nœud est inopérant et ne permet plus d’accéder à une application web, ou une matrice RAID avec un disque défectueux, bloquant l’accès aux données qui s’y trouvent... Il existe heureusement des outils capables de remonter des informations de ce type, et qui s’intéressent aux problématiques métiers. Le premier d’entre eux s’appelle Nagios. Auparavant nommé Netsaint, il permettait essentiellement la surveillance des systèmes et du réseau. Il s’agit d’une application surveillant les machines et les services, et envoyant des alertes lorsque les seuils des indicateurs définis ont été atteints. Le programme se décompose en trois fonctions modulaires :

  • Le moteur d’application réalisant l’ordonnancement des tâches de surveillance.

  • L’interface web réalisant l’affichage de l’état du système et de ses anomalies.

  • Les sondes (que l’on appelle également greffons ou plugins) permettant d’étendre les fonctionnalités de l’outil.

Ainsi, les différentes interactions peuvent être, représentées par le graphique ci-dessous :

images/rp212.png

2. Installation

L’utilitaire Nagiosv4 n’est malheureusement pas dans les dépôts Debian et il ne semble pas qu’il soit dans un quelconque dépôt existant. De plus, il est impossible d’intégrer Nagiosv3 sur une distribution Debian 8 en raison d’une incompatibilité applicative. Il va donc falloir se débrouiller avec les sources, en commençant par installer les packages de dépendance et les prérequis à l’utilisation de Nagios. Nous aurons besoin d’installer les packages suivants : 


# apt-get install build-essential libgd2-xpm-dev openssl libssl-dev 
xinetd apache2-utils...

Alternative à Nagios

1. Généralités

Depuis quelque temps, le développeur principal du projet Nagios n’était plus assez réactif vis-à-vis de la communauté et surtout, il diffusait des modules qui n’étaient plus sous licence libre. Aussi, certains développeurs ont réagi en faisant diverger le projet et ils ont créé ce que l’on appelle des forks. C’est ainsi que des projets tels qu’icinga et shinken ont pu voir le jour.

En particulier, le programme shinken est une application libre sous licence GNU AGPL, totalement compatible avec Nagios, permettant de mettre en place facilement une supervision distribuée.

Son architecture distribuée permet d’effectuer de la répartition de charge et cela dans des configurations multisites et multiclients, grâce à la notion de royaumes (ou realms). La grande force de cet outil réside dans le fait qu’en plus de fonctionner sur Windows, Linux/Unix, il peut aussi supporter les architectures Android. De plus, pour chaque tâche il existe un service dédié.

Shinken se décompose en six modules :

  • L’arbitre (arbiter) : il permet la validation et le chargement de la configuration et découpe les tâches en parties égales à distribuer aux ordonnanceurs. C’est ce module qui est responsable de la haute disponibilité, en redirigeant les requêtes, vers un élément opérationnel, lorsqu’une défaillance est détectée.

  • L’ordonnanceur (scheduler) : il est responsable de la redirection des tests et de leurs analyses et permet de déclencher les actions correctives. Il ne fait que rediriger les informations et garde en file d’attente les tests en suspens.

  • Le collecteur (collector) : il permet d’exécuter les greffons selon les requêtes des ordonnanceurs et leur envoie les résultats des tests. Les greffons peuvent être issus de Nagios.

  • Le « réactionneur » (reactionner) : il est responsable de l’envoi des notifications et exécute les actions automatiques programmables.

  • Le courtier (broker) : il récupère les informations depuis l’ordonnanceur et les rend disponibles pour d’autres applications que shinken. Il s’appuie sur des modules permettant d’exporter les données en base NDO, Graphite ou via une interface interactive LifeStatus. Il est également possible d’exporter les données vers un journal de logs tel que syslog (ou rsyslog).

  • Le receveur (receiver) : il reçoit les données acquises de façon passive, et les redirige vers le bon ordonnanceur.

2. Prérequis d’installation

Afin de pouvoir utiliser l’outil shinken, il convient de s’assurer de disposer de la version Python 2.6 ou supérieure, ainsi que des outils de distribution Python tels que setuptools, distribute ou pip. Par ailleurs, il faut aussi installer le module Python appelé pyro, en version 4.14.


# apt-get install pyro
 

Il faut également installer le package python-devel et dans la mesure où, l’on souhaite utiliser l’interface web, il faut aussi installer les packages simplejson, ujson (pour l’amélioration des performances de LiveStatus) et pysqlite. Il faut ensuite créer le groupe et l’utilisateur administrant shinken :


# addgroup --system shinken  
# adduser --system shinken  
# adduser shinken shinken
 

On peut également récupérer les applications développées en Python grâce à la commande pip. On peut aussi installer les packages suivants :


# apt-get install python-pip python-pycurl python-cherrypy3  
# apt-get install sudo gawk
 

3. Installation et configuration

Désormais, nous pouvons passer à la phase d’installation de l’application shinken en exécutant les instructions suivantes :


# pip install shinken  
# shinken --init
 

L’outil shinken est désormais installé, mais il reste encore la partie frontale. En effet, l’interface graphique n’existe pas pour le moment. Comme les rôles sont répartis selon six modules distincts les uns des autres, il est possible de créer une architecture composée d’un serveur maître et d’autant de serveurs qu’il y a de services à répartir. Ceci ne se définit qu’au niveau des fichiers de configuration, c’est pourquoi l’interface graphique n’est pas la préoccupation principale, ici.

Depuis la version shinken 2.0, il existe un mode commande qui permet d’intégrer de nouvelles fonctionnalités, en voici quelques exemples :

Pour compiler une documentation :


# shinken doc-compile 
 

Pour publier au format HTML la documentation :


# shinken doc-serve
 

Pour lister les paquets déjà installés :


# shinken inventory 
 

Pour rechercher un paquet disponible sur le portail shinken....