Ces derniers temps, j’ai dû déployer en production quelques applications plutôt critiques.

Je faisais tout le nécessaire, j’optimisais les configurations, je testais en local, je faisais même des optimisations de performance pour certains services anciens. Et quand je déployais, j’étais confiant de ce que j’avais fait.

Mais une fois en production, je me rendais compte qu’il fallait que je sache ce qui se passe à l’intérieur de mes applications. Est-ce que tout fonctionne bien ? Est-ce que les utilisateurs n’ont pas de problème ? Est-ce que les performances sont bonnes ? Est-ce que le système est stable ?

Tant de questions auxquelles je ne pouvais pas répondre. En tout cas pas sans me connecter à chaque serveur, regarder les logs, faire des tests manuels, etc. C’est long et pas scalable.

Vous allez me dire, oui mais pourquoi tu n’as pas mis un dashboard Grafana avec Prometheus avec un alert manager… Déjà on va aller doucement, c’est ce que j’ai fait, et je l’ai fait plusieurs fois dans ma vie.

Mais je me suis rendu compte que je n’avais jamais fait d’article sur mon blog pour expliquer ce qu’est le monitoring, ce concept si important pour tout sysadmin, devops qui se respecte.

Dans cet article on va voir :

  • C’est quoi le monitoring ?
  • Pourquoi est-ce indispensable ?
  • Quels outils utiliser pour débuter ?

Accrochez vos ceintures, car vous allez apprendre des choses intéressantes.

C’est quoi le monitoring ?

Nasa monitoring GIF

Comme dans cette image, on peut s’imaginer le monitoring comme une salle de contrôle, où on peut voir tout ce qui se passe dans nos différents systèmes (serveurs, applications, réseaux…).

Tout simplement, le monitoring c’est l’art de collecter, analyser et visualiser des données en temps réel sur l’état de l’ensemble de nos systèmes d’information.

En ayant ça en tête, on peut définir le monitoring comme un processus continu qui nous permet de surveiller la performance, la disponibilité et la santé de nos infrastructures informatiques. Par exemple pour un serveur web, on peut monitorer :

  • Le taux d’utilisation du CPU
  • La mémoire utilisée
  • Le taux de requêtes réussies
  • Le temps de réponse

Tellement de petits paramètres, que c’est très compliqué de faire cela manuellement.

Le monitoring nous permet de détecter rapidement les anomalies, les pannes potentielles et les dégradations de performance avant qu’elles n’affectent nos utilisateurs finaux. C’est un peu comme avoir un système d’alarme pour notre infrastructure informatique.

C’est pour ça que des fois vous allez entendre monitoring+alerting. Car le monitoring c’est bien, mais si on ne fait rien avec les données qu’on collecte, ça ne sert à rien. Donc l’alerting c’est l’étape suivante, où on va définir des règles pour nous alerter en cas de problème. Par exemple si le taux d’utilisation du CPU dépasse 90% pendant plus de 5 minutes, on peut envoyer une alerte par email, SMS ou Teams.

Pourquoi est-ce indispensable ?

datacenter on fire, spongebob souffle

Si jusqu’à maintenant vous n’avez pas été convaincu de l’importance du monitoring, laissez-moi vous donner quelques exemples concrets, car sinon vous allez finir comme Bob l’éponge dans cette image.

1. Détection précoce des problèmes

Si vous aimez les maths, les probabilités, vous savez que plus on a de systèmes, plus la probabilité qu’un système tombe en panne augmente. C’est pour cela que lorsqu’on conçoit un système distribué, le nombre de nœuds doit toujours être impair. Car si on a 2 nœuds, et qu’un tombe en panne, on ne peut plus assurer la disponibilité du service.

Le monitoring nous permet de détecter rapidement les différentes anomalies, les pannes potentielles et les dégradations de performance avant qu’elles n’affectent nos utilisateurs finaux.

Il y a un article très bon de la part d’Anthropic, les créateurs de Claude AI, qu’à un moment, ils ont commencé à voir dans leur système de monitoring, que la latence de leur API augmentait. Et que cela pouvait causer des problèmes à leurs utilisateurs. Grâce au monitoring, ils ont pu détecter le problème avant que ça n’affecte d’autres utilisateurs d’une manière plus globale : Lien pour l’article.

2. Amélioration des performances

Le monitoring nous permet d’identifier les goulets d’étranglement, les ressources sous-utilisées et les opportunités d’optimisation. Par exemple si on voit que la mémoire d’un serveur est toujours à 100%, on peut se dire qu’il faut ajouter plus de mémoire, ou optimiser l’application pour qu’elle utilise moins de mémoire.

Donc juste en ayant des yeux sur les performances de nos systèmes, on peut faire des optimisations qui vont avoir un impact positif sur l’expérience utilisateur.

3. Analyse des tendances

Le monitoring nous permet de collecter des données sur une période de temps, et d’analyser les tendances. Par exemple si on voit que le taux d’utilisation du CPU augmente de plus en plus chaque jour, on peut se dire qu’il faut ajouter plus de serveurs pour répondre à la demande future.

Ou même si on se rend compte que les weekends, le taux d’utilisation est plus bas, on peut baisser le nombre d’instances pour économiser des ressources (money !!).

Bref, le monitoring nous permet de prendre des décisions éclairées basées sur des données réelles, c’est comme avoir un business analyste qui travaille pour nous 24/7 :)

Quels outils utiliser pour débuter ?

Il y a tellement d’outils de monitoring, que c’est difficile de faire un choix. Mais je vais vous donner quelques outils populaires, open source et faciles à utiliser pour commencer.

1. Prometheus + Grafana

C’est la combinaison la plus populaire dans le monde du monitoring open source. Prometheus est un système de collecte de données, qui va aller chercher les données depuis des endpoints exposés par nos applications (on appelle ça des exporters).

Grafana lui, c’est un outil de visualisation, qui va nous permettre de créer des dashboards magnifiques pour voir l’état de nos systèmes en temps réel.

Voici un exemple de dashboard Grafana :

Grafana dashboard

C’est très facile à installer, il y a plein de tutos en ligne, et la communauté est très active.

2. Zabbix

Là on rentre dans le monitoring plus traditionnel. Zabbix est une solution de monitoring tout-en-un, qui nous permet de monitorer des serveurs, des applications, des réseaux, etc. Il a une interface web très complète, et il est aussi open source.

Zabbix est un peu plus complexe à configurer que Prometheus + Grafana, mais il offre beaucoup de fonctionnalités intéressantes, comme l’auto-découverte des devices, le monitoring distribué, etc.

C’est très complet, et vachement utilisé dans tout type d’entreprise.

Conclusion

Le monitoring c’est un sujet vaste et complexe, mais aussi passionnant. C’est un outil indispensable pour tout sysadmin, devops qui se respecte.

J’espère que cet article vous a donné envie de vous intéresser au monitoring, et de commencer à l’implémenter dans vos projets. Si vous avez des questions, n’hésitez pas à me les poser directement sur LinkedIn. Je serais ravi de vous répondre.

Je vous remercie d’avoir lu cet article jusqu’au bout. À la prochaine !