Netdata, une plateforme d'observabilité prête en 2 minutes

Netdata, une plateforme d'observabilité prête en 2 minutes

Avant d'aborder la présentation de Netdata, prenons 2 minutes pour expliquer un aspect essentiel dans les systèmes informatiques actuels : l'observabilité !

En informatique, l'observabilité fait référence aux outils et pratiques logiciels qui permettent de collecter, d'agréger, de corréler et d'analyser des flux réguliers de données de performances à partir d'outils ou de matériels, ceci afin de surveiller, d'identifier et de déboguer plus efficacement un système, pour répondre aux attentes d'expérience client, aux accords sur les niveaux de service (SLA) et autres exigences opérationnelles.

Plus un système est observable, plus il est possible de retrouver et corriger rapidement et précisément la source d'un problème de performance, en minimisant les analyses manuelles. En termes simples, l’observabilité est la capacité à répondre à la question : “Qu’est-ce qui se passe dans mon système ?”.

L’observabilité est généralement associée à trois types de données : les logs, les métriques et les traces. Ensemble, ces trois piliers de l’observabilité nous permettent de comprendre le comportement de nos systèmes, de diagnostiquer les problèmes et d’améliorer les performances.

On va se focaliser dans cet article sur les métriques. Ce sont des mesures quantitatives qui donnent une vue d’ensemble des performances d’un système, permettant de comprendre comment ce dernier se comporte en temps réel.


Ces métriques doivent être collectées pour être exploitées, et c'est là que Netdata intervient. Cet outil open-source et gratuit collecte les métriques en temps réel et les présente dans d'attrayants tableaux de bord. Il est conçu pour fonctionner dans tout type de cas d'usage, que ça soit des serveurs physiques ou des machines virtuelles, des services cloud, des conteneurs ainsi que des appareils connectés, afin de surveiller vos différents systèmes et applications.

Netdata: Monitoring and troubleshooting transformed
Netdata is a distributed real-time, health monitoring platform for systems, hardware, containers & applications, collecting metrics. Zero configuration needed.
GitHub - netdata/netdata: The open-source observability platform everyone needs!
The open-source observability platform everyone needs! - netdata/netdata

Il peut traiter les métriques provenant aussi bien d'un seul serveur que de milliers, même dans des environnements complexes mixant différents types et sources d'hébergement. Si l'espace disque qui lui est alloué est suffisant, il peut conserver les métriques relevées pendant des années.

Toutes les fonctionnalités de surveillance que Netdata offre sont intégrées de base. La base de données, le moteur de requêtes, le moteur de notation, le moteur de santé, le moteur d’apprentissage automatique, ... sont tous open-source et publiés sous licence GPL3+. Netdata s'appuie sur un agent pour remonter toutes les métriques en temps réel et il n'y a pas besoin de connaitre et comprendre ce qu’est chacune d'entre elle, ou de passer du temps à configurer la surveillance, Netdata collecte, stocke, interroge, visualise, alerte et même forme des modèles d’apprentissage automatique pour chaque métrique remontée !

Les données sont exclusivement stockées sur le système hébergeant Netdata, vous assurant ainsi qu'elles ne pourront être exploitées que dans le cadre prévu.

Netdata permet de monitorer plus de 800 métriques, dont les éléments suivants :

  • Ressources systèmes et matérielles : CPU, mémoire, disques et filesystems, RAID, points de montage, les différentes températures, contrôleurs, ...
  • Réseau : interfaces réseaux, protocoles, firewall, paquets TCP et UDP, ...
  • Toutes les logs systèmes
  • Applications : les processus avec les ressources consommées, les conteneurs Docker / containerd /LXC, les VMs (KVM, qemu, libvirt, Proxmox, ...)

La plupart des métriques sont configurées en automatique, mais certaines intégrations peuvent nécessiter une configuration supplémentaire. Vous trouverez la liste complète des intégrations ainsi que les instructions spécifiques sur cette page de Netdata.

Il est également possible de configurer des alertes pour que Netdata vous prévienne quand des métriques dépassent les seuils définis, par email, Discord, Microsoft Teams, ntfy, Slack, Telegram et bien d'autres encore.

Voici quelques captures des différente pages de Netdata en action.


Déploiement

Netdata peut être installé sur tout système d'exploitation Linux, macOS ou FreeBSD, depuis un installeur ou bien même en tant que conteneur Docker.

Pour l'installation sur un hôte Linux quel qu'il soit (Ubuntu, Debian, Alpine, RedHat, ...), sur macOS ou FreeBSD, il faudra exécuter la commande suivante :

wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh

L'installation dans un conteneur Docker nécessite de donner des privilèges élevés et de monter certains répertoires de l'hôte pour que Netdata soit en mesure de collecter les métriques. Il est tout à fait possible de donner moins de privilèges, mais les métriques relevées seront moins nombreuses ou intéressantes. Le fichier docker-compose.yml à utiliser est le suivant :

version: '3'
services:
  netdata:
    image: netdata/netdata
    container_name: netdata
    pid: host
    network_mode: host
    restart: unless-stopped
    cap_add:
      - SYS_PTRACE
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    volumes:
      - netdataconfig:/etc/netdata
      - netdatalib:/var/lib/netdata
      - netdatacache:/var/cache/netdata
      - /etc/passwd:/host/etc/passwd:ro
      - /etc/group:/host/etc/group:ro
      - /etc/localtime:/etc/localtime:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /etc/os-release:/host/etc/os-release:ro
      - /var/log:/host/var/log:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

volumes:
  netdataconfig:
  netdatalib:
  netdatacache:

Une fois Netdata installé, vous pourrez y accéder depuis un navigateur à l'adresse http://IP.DU.NODE:19999 et naviguer à travers les différentes catégories pour découvrir les métriques remontées.

Vous pourrez ensuite ajouter des intégrations spécifiques, créer un dashboard personnalisé ou bien configurer des alertes et notifications, et je vous renvoie sur la documentation officielle de Netdata pour cela au vu du nombre élevé de possibilités.

Collectors | Learn Netdata
When Netdata starts, and with zero configuration, it auto-detects thousands of data sources and immediately collects
Alerts and notifications | Learn Netdata
The Netdata Agent is a health watchdog for the health and performance of your systems, services, and applications. We’ve

Je vous recommande également de suivre cette partie de la documentation qui donne des conseils sur la manière de sécuriser les agents Netdata, notamment en limitant les accès à votre réseau local ou en ajoutant une authentification à travers votre reverse proxy.

Secure your nodes | Learn Netdata
Your data and systems are safe with Netdata, but we recommend a few easy ways to improve the security of your infrastructure.

Conclusion

L'observabilité est un sujet assez complexe, et il existe de nombreux outils et méthodes pour parvenir à comprendre et garder la maitrise des systèmes. J'espère vous avoir fait découvrir ce puissant outil qu'est Netdata et qu'il pourra vous aider à garder un œil attentif aux performances de vos systèmes et applications.

Si vous avez besoin d'aide sur ce tutorial ou à propos de n'importe quel autre sujet, n'hésitez pas à rejoindre la communauté sur le groupe Telegram.