Johan THOMAS
Rectorat d'académie de Rennes - SERIA
96 rue d'Antrain
35000 Rennes
Résumé
Cette présentation montre l'utilisation d'un outil (Graylog) de centralisation et d'analyse de fichiers
journaux sur le périmètre d'un parc informatique.
L'originalité de cette solution est donc le périmètre du parc informatique. En effet, les outils de
centralisation de logs sont utilisés plus classiquement au niveau des infrastructures systèmes et réseaux.
Le rectorat de Rennes a déployé sur son parc de plus de 1200 postes répartis sur 9 sites un outil de
récupération et d'envoi des logs/observateurs d'événements. L'outil NXLog permet de convertir au format
GELF les observateurs d'événements et les fichiers journaux des postes et des serveurs en ciblant les
informations d'intérêt. Le serveur Graylog centralise toutes ces informations et les analyse, il permet de
mettre en place des tableaux de bord, des alertes ou de re-router les informations.
Le choix de Graylog se justifie par ses nombreuses fonctionnalités intégrées nativement (tableaux de bord
par utilisateur, alertes, authentification, évolutivité, facilité d'utilisation, etc). Il est à l'origine du format
GELF. Ce dernier apporte de nombreuses améliorations au classique format syslog. Le centralisateur
utilise une base ElasticSearch pour stocker l'ensemble des informations.
Utilisé en production depuis plus de 2 ans, cet outil a permis de mettre en place des tableaux de bord
dynamiques et fonctionnels à destination de l'assistance. Dans certains cas, ces tableaux de bord
permettent aux équipes d'assistance de devenir proactives (intervention avant perte de données par
exemple).
Mots-clefs
Graylog, nxlog, kibana, indicateurs, dashboard, splunk, suivi, ElasticSearch, GELF, syslog.
1 Introduction
Le rectorat de l'académie de Rennes et plus précisément l'équipe d'assistance sur les services du rectorat a
en charge la gestion du parc informatique et des serveurs associés, l'assistance de niveau 2, le conseil et la
formation. Le parc de plus de 1200 postes est réparti sur 9 sites. Ces dernières années un effort important
a été produit pour homogénéiser et moderniser les infrastructures du parc. Ainsi plusieurs projets ont été
conduits autour de ces problématiques, notamment pour les plus importants :
― gestion centralisée ;
― création et mise en conformité avec le référentiel d'identité académique d'un annuaire Active
Directory ;
― refonte et sécurisation des espaces de stockage (personnel et partagé) ;
― migration vers les nouvelles versions de système d'exploitation.
2 Principe
Chaque poste informatique dispose de très nombreuses informations sur son fonctionnement. Celles-ci
appelées fichiers journaux ou observateur d'événements sont généralement sous exploitées sur les postes
de travail. Les systèmes de centralisation sur ces problématiques sont principalement utilisés dans le
domaine des systèmes et des réseaux.
L'infrastructure déployée au rectorat de l'académie de Rennes se base sur le principe suivant : « Récupérer
et exploiter cette masse d'informations depuis le poste de l'agent ».
Ce déploiement permet de :
― suivre le fonctionnement et le déploiement des applications ;
― suivre les migrations (dossier personnel sécurisé, Windows 7, etc) ;
― corréler les données des serveurs avec celles des postes ;
― disposer de tableaux de bord fonctionnels ;
― améliorer le dispositif d'assistance ;
― Faciliter le pilotage.
Pour le bon déroulement de ce projet, il a donc été nécessaire de disposer d'un format de communication,
d'une interface avec les postes et d'un centralisateur permettant de traiter et d'exploiter les données.
3 Les logs
Les logs sont les fichiers journaux. Il s'agit d'une information datée qui concerne le fonctionnement du
poste, d'une application ou d'un service. Dans un environnement Windows, on parle d'« observateur
d’événements ». Dans le monde Linux, il s'agit généralement de fichier texte, formaté.
C’est la donnée à exploiter, elle existe sur le poste et contient beaucoup d’informations.
Le cycle de vie d'un événement de fichier journal peut être représenté de la manière suivante :
<Input eventlog>
Module im_msvistalog
</Input>
<Output out>
Module om_udp
Host xxx.xxx.xxx.xx
Port 12201
OutputType GELF
</Output>
<Route 1>
Path eventlog => out
</Route>
<Input eventlog>
Module im_msvistalog
Query <QueryList>\
<Query Id="0" Path="Application">\
<Select Path="Application">*[System[(Level=1 or
Les solutions historiques de centralisation des logs sont basées sur syslog-ng sur lequel on vient greffer
une interface Web et un stockage dans une base de données type mySQL. On retrouve notamment les
outils php-syslog-ng et 8pussy [8].
Ce type d'outil n'a pas été retenu par le rectorat de Rennes. En effet, l'utilisation du format syslog
uniquement est un problème majeur. De plus du fait de leurs infrastructures classiques (LAMP, Linux,
Apache, Mysql, PHP) ils ont du mal à évoluer et à tenir la charge sur des déploiements importants
(volume disque très important, nombre de messages par seconde limité, lenteur de traitement).
L'association ELK est de plus en plus mise en avant. Elle est basée sur le trio ElasticSearch, Logstash et
Kibana. Chacun de ces produits est indépendant et peut être déployé sur des machines distinctes ou sur un
même serveur.
Logstash apporte les fonctionnalités de collecte, d'analyse et de stockage, il peut traiter du format syslog,
du GELF et d'autres formats. Kibana permet quant à lui de générer les tableaux de bord dynamiques avec
les indicateurs. ElasticSearch, quant à lui, est un moteur de recherche distribué avec une base de données
NoSQL.
Chacune de ces briques dispose de sa propre configuration, la mise en place de l'ensemble et la gestion est
complexe. La génération des tableaux de bord n'est pas facile d'accès, il n'y a pas d'authentification et de
profilage. Il n'existe pas de fonctionnalité d'alerte.
C'est une solution hautement personnalisable et extensible mais en l'état, elle ne peut pas être utilisée par
les équipes sans formation. La maintenance de toute cette infrastructure est aussi plus complexe du fait de
l'aspect non intégré.
Graylog est la solution qui est à l'origine du format GELF. Cet outil utilise ElasticSearch et MongoDB.
C'est une solution hautement intégrée.
La configuration, la personnalisation, l'exploitation se fait à travers une interface Web. Il est possible de
collecter différents formats en entrée (syslog, GELF, etc). Graylog permet de mettre en place des flux
(streams) qui ont pour fonction de classer les logs selon des critères, on peut ensuite définir des sorties
(output) pour envoyer les logs sur d'autres destinations. Les streams permettent de créer des alertes.
Graylog dispose d'une API Rest lui permettant de s'interconnecter facilement avec d'autres outils.
La partie interface Web de Graylog dispose d'une authentification et il est possible de mettre en place des
accès profilés. Il est ainsi possible de présenter des tableaux de bord ou des streams à l'ensemble des
personnes accédant à la plate-forme ou seulement à un groupe d'utilisateurs. La prise en main et
l'utilisation par les équipes est très simple. Chaque utilisateur peut facilement créer ses recherches, ses
indicateurs et ses alertes.
A noter qu'une solution commerciale permettant d'obtenir un fonctionnement assez similaire existe, elle se
nomme Splunk[9].
Le serveur virtualisé utilisé à Rennes est dimensionné de la façon suivante : 2 vCPU, 8Go de RAM, 1
disque de 16Go pour l'OS est un disque de 110 Go pour le stockage des logs dans la base ElasticSearch.
La mise en place d'un cluster ElasticSearch est envisagée.
A l'usage sur deux ans d'exploitation, on constate qu'il faut 1Go d'espace ElasticSearch par million
d'événement stocké. Le serveur absorbe sans problème des pics de plus de 300 messages par seconde.
Il est possible à partir des recherches de générer très simplement des tableaux de bord mis à jour en temps
réel. On peut facilement récupérer l'histogramme de la recherche ou l'indicateur correspondant au nombre
total de logs retourné.
Il est même possible d'aller beaucoup plus loin avec la fonctionnalité de « Quick values ».
Dans l'exemple présenté sur la figure ci-dessous, j'ai effectué une recherche des erreurs d'authentification
des postes Windows sur les 2 dernières heures. Je déploie ensuite dans la colonne « Fields » le champ
« TargetUserName » (qui provient du format GELF) afin de faire apparaître la ligne « statistics, quick
values, generate chart ». En cliquant sur « Quick Values », j'obtiens le diagramme et le tableau
5.3.3 Extracteurs
Graylog dispose d'une fonctionnalité intéressante : les extracteurs. Elle permet d'extraire une information
d'un message.
Généralement, les logs au format GELF de bout en bout sont bien structurés. Il peut arriver qu'une
information importante soit dans un message complexe de texte ou dans un tableau.
Dans ce cas, impossible d'exploiter la donnée dans un graphique ou avec un indicateur. Les extracteurs
permettent de remédier à ce problème. Pour cela, on peut utiliser les fonctionnalités suivantes : substring,
regex, split & index, copy et grok.
Je prends comme exemple concret, l'utilisation d'un serveur de licences Microsoft (KMS). Le rectorat de
Rennes souhaitait suivre son utilisation notamment en récupérant le nom DNS des postes qui viennent
s'activer dessus. L'information est présente dans l'observateur d'événements mais le formatage ne permet
pas de récupérer la donnée convenablement. Pour cela, on crée un extracteur qui utilisera le « Split &
Index ». Le champ du log à utiliser est « full_message », dans celui-ci les informations sont séparées par
des virgules. Le « Split & Index » va donc séparer en plusieurs parties en se basant sur les virgules puis
récupérer la troisième partie dans un nouveau champ « KMS_host ».
Autre exemple, avec les équipes en charge de l'infrastructure système et réseau, nous avons mis en place
un ciblage particulier sur les temps d'ouverture de session des postes, les lenteurs d'application des
stratégies de groupe, les erreurs de résolution, etc. Cela nous a aidé dans la résolution de problèmes
d'infrastructure.
Cela permet d'avoir en temps réel, un état de santé sur le fonctionnement du parc informatique et du
réseau.