Collecte et traitement des logs de fonctionnement : comment faire ?
Les fichiers de logs sont des informations particulières, qui sont créées par les différentes composantes d’une infrastructure informatique machines, applications, systèmes, réseaux, etc. Ces informations sont très utiles pour permettre de comprendre le fonctionnement de l’infrastructure et de ses composants, de les analyser, les diagnostiquer et d’intervenir en conséquence.
Les journaux d’événement sont des fichiers enregistrant de manière continue les événements exécutés, soit par un serveur ou bien tout type d’application présente sur le serveur. Les données collectées pouvant être en quantité astronomique, il est souvent utile et indispensable de traiter ces données par des serveurs centralisés qui récupèrent l’ensemble des logs.
Seulement, dans un cas de crash d’application stateless, comment s’assurer d’avoir collecté suffisamment d’informations pour identifier rapidement les actions de corrections nécessaires ? La question qui se pose alors est de savoir comment collecter et traiter ses logs en temps réel ?
Configuration des logs et microservices
Un service doit minimiser la consommation de ressources en déléguant la gestion des informations d’état quand cela est nécessaire.
Toute application moderne, et de plus hébergée dans le Cloud, doit consister en un seul processus et être sans état. Tout état durable doit être externe à l’application, fourni par d’autres services. L’état existe donc, mais il est en dehors de l’application.
L’émergence des microservices est un exemple concret où la persistance des logs sur le serveur doit être configurée au préalable, car la philosophie originale d’un conteneur est de tout détruire au prochain démarrage du service.
Un microservice qui expose des fonctionnalités pour la gestion des utilisateurs sera sans état, mais la liste des utilisateurs sera gérée par une base de données externe.
La collecte des logs
La collecte et le traitement des logs pour un système d’information sont primordiaux, que ce soit en termes de sécurité ou vis-à-vis du bon fonctionnement des applications métier.
Il existe différents types de logs dont voici une liste non exhaustive :
- logs applicatifs,
- logs systèmes,
- logs de base de données,
- logs de trafic HTTP(s),
L’utilisation de plus en plus fréquente de multiservices et de microservices, a entraîné une augmentation de fichiers journaux qu’il faut analyser et corréler.
Les journaux de logs qui sont produits permettent à la fois de :
- Retracer les actions et la vie d’un utilisateur,
- Identifier et de résoudre des problèmes de sécurité,
- Contribuer à l’amélioration des diagnostics des pannes et des erreurs,
- D’analyser et de comprendre le fonctionnement d’une application ou d’un service,
- D’expliquer les erreurs d’un système, d’un service ou d’une application métier,
- D’être prévenus en cas de dysfonctionnement.
La centralisation des logs
La centralisation des logs permet de garantir le maximum de sécurité et de fiabilité, mais aussi de répondre rapidement aux incidents. Cela permet d’avoir une vue d’ensemble sur les logs et de gagner du temps sur l’analyse.
On pourra également être averti à la moindre entrée suspecte dans les journaux et corréler les informations avec d’autres journaux
Enfin, en centralisant vos logs, vous serez plus réactif en cas de problèmes ou de dysfonctionnements. Il est donc de plus en plus nécessaire de centraliser les logs.
Les principales étapes pour la collecte et le traitement des logs
La collecte, la centralisation et le traitement des logs doivent être intégrés dès la mise en place de votre SI. Il est donc indispensable de réfléchir aux différentes étapes :
- Production des logs : il vous faut définir clairement quels sont les logs à produire et avec quel niveau de verbosité. L’objectif ici est de repérer les éléments qui méritent d’être lus et suivis. Cela implique d’avoir une connaissance parfaite de votre SI.
- Envoi des logs vers une plateforme commune : cette plateforme va permettre de stocker tous les logs. Il faudra au préalable définir des règles de sécurité du canal de transmission, configurer un serveur de centralisation des logs (par exemple avec Rsyslog , ou syslog-ng sous Linux). Il faut également réfléchir aux éléments tels que la technologie et à l’infrastructure, l’espace de stockage nécessaire ou encore la sécurisation du serveur.
- Analyse et filtrage des logs : comment allez-vous exploiter ces informations ? Ici, l’objectif sera d’identifier les logs pertinents et de créer des règles reproductibles de motif à isoler. Il sera aussi nécessaire de traiter les flux d’informations entrants en créant des répertoires de fichiers par machine puis par service. Une fois cela mis en place, il sera beaucoup plus simple de les lire, de les traiter et de les analyser.
- Réalisation des graphiques sur un seul et unique site de consultation : un dashboard va permettre de centraliser toutes les informations au même endroit avec une vision croisée adaptée. La création d’un graphique va permettre d’avoir une meilleure visibilité sur l’ensemble des logs, en vue de mieux les interpréter. Enfin, la création de ces graphes et rapports va permettre aux équipes concernées de mieux identifier et détecter les anomalies.
Les solutions Open Source de collecte et traitement des logs
Il existe actuellement plusieurs solutions Open Source pour le traitement des logs, mais deux d’entre elles sortent du lot : Graylog et ELK.
Ces solutions open source sont mises à jour régulièrement et une communauté active maintient les projets en amélioration continue. L’open source vous garantit : autonomie, mutualisation, des coûts moindres, sécurité accrue grâce à l’accès au code source, pérennité de votre investissement.
Ces 2 solutions collectent vos logs en temps réel et permettent d’avoir une bonne lisibilité grâce aux graphiques générés. Des fonctions d’alerting vous informe en temp réel du moindre dysfonctionnement et de toute entrée suspecte dans les logs.
Logging dans le Cloud
Comment surveiller de manière appropriée des journaux dans le Cloud ? L’option qui semble la plus évidente au premier abord est de générer des journaux dans des systèmes IaaS, qui se rapproche le plus d’une configuration connue (On-Premise).
Ainsi, la vraie question qui reste est de savoir où les journaux doivent être envoyés dans un environnement IaaS ?
- Envoyer les logs vers un serveur local intégré à l’environnement IaaS et donc rester proche de l’environnement d’origine des logs. En termes de sécurité, ce modèle n’est pas très adapté.
- Renvoyer les logs depuis le Cloud vers le centre de données de l’entreprise. Cela entraîne du trafic, mais présente l’avantage de minimiser le risque de compromission de la donnée, à la condition de sécuriser vos protocoles de communications.
- Envoyer ses journaux à d’autres fournisseurs de sécurité qui gèrent la journalisation (Loggly, Papertrail, Sumo Logic, Splunk). Le trafic est régulé, mais les coûts peuvent exploser.
L’utilisation de fournisseurs PaaS ou de SaaS complique la journalisation dans le Cloud. Pourquoi ?
- Beaucoup ne fournissent pas les journaux, ou s’ils le font, rendent ces journaux propriétaires.
- La planification des opérations peut devenir un problème : téléchargement par lots des journaux, pas de temps réel, et donc incidence sur d’éventuels problèmes liés aux intrusions.
- Il faut trouver le compromis entre une journalisation en temps réel et celle qui fait remonter des problèmes de disponibilité et de qualité de services.
Ce qu’il faut prendre en compte au final :
- La surcharge des systèmes (CPU, RAM, IOPS…),
- Les transferts sécurisés des journaux qui engendrent des coûts,
- Mettre en place des tunnels chiffrés qui vont minimiser les problèmes.
En conclusion
La collecte et le traitement de vos logs sont une étape indispensable pour comprendre le fonctionnement de votre infrastructure informatique et de ses composants. Grâce à eux, vous serez en mesure de pouvoir identifier les incidents et d’y répondre en temps réel.
La collecte et le traitement de vos logs permet d’assurer à la fois le bon fonctionnement et la sécurité de votre SI, c’est pour cela que leur mise en place doit être pensée en même temps que celle de votre SI.
Vous souhaitez mettre en place la collecte et le traitement de vos logs de manière centralisée ? Des microservices ? Des puits de logs ? Savoir si votre entreprise est prête pour le DevOps ? Toutes ces réponses, et bien plus encore… se trouvent dans notre livre blanc !