Introduction
Dans un monde où les infrastructures informatiques deviennent de plus en plus complexes, la surveillance des systèmes en temps réel est important pour maintenir leur performance et anticiper les problèmes. Netdata s’impose comme une solution open source offrant une observabilité complète et une surveillance en temps réel des systèmes, des applications et des infrastructures. Cet outil interessant permet aux administrateurs système et aux développeurs de comprendre rapidement le comportement de leurs systèmes et d’intervenir en cas de dysfonctionnement.
Dans cet article, nous allons découvrir les fonctionnalités de Netdata, comment l’installer et l’utiliser, et pourquoi il est devenu un outil indispensable pour l’observabilité et le dépannage des systèmes modernes
Prérequis
Avant de commencer, voici les prérequis pour utiliser Netdata :
- Un serveur Ubuntu prêt à être configuré.
- Accès root (ou administratif) pour l’installation.
- Une compréhension de base des concepts d’observabilité et de surveillance des systèmes.
Use Case
Dans ce cas d’utilisation, imaginons une équipe DevOps responsable de la gestion d’une infrastructure complexe hébergeant un site web en production. Pour garantir des performances optimales, l’équipe décide d’installer Netdata sur le serveur de production tournant sur Ubuntu 22 afin de surveiller les ressources critiques du système, telles que le CPU, la mémoire, les disques, le réseau, ainsi que les processus actifs sur chaque machine.
Principales fonctionnalités
Observabilité en temps réel
L’une des forces majeures de Netdata est sa capacité à collecter et afficher des données en temps réel. Il peut surveiller plus de 2000 métriques système différentes, telles que l’utilisation du CPU, la mémoire, le trafic réseau, l’activité disque, et bien plus encore. Ces données sont présentées sous forme de graphiques dynamiques, mis à jour chaque seconde, offrant ainsi une vue précise et en temps réel de l’évolution de l’état du système.
Surveillance des applications et services
Netdata va au-delà de la simple surveillance matérielle en offrant des intégrations pour surveiller les bases de données (MySQL, PostgreSQL), les serveurs web (Nginx, Apache), les conteneurs (Docker, Kubernetes), et bien d’autres services. Cela vous permet d’avoir une vue d’ensemble de votre infrastructure, tant au niveau matériel que logiciel.
Alertes et notifications personnalisées
Pour faciliter le dépannage, Netdata permet de configurer des alertes personnalisées basées sur des seuils définis. Par exemple, vous pouvez recevoir une notification lorsque l’utilisation du CPU dépasse 90 % pendant plus de 5 minutes, ou lorsqu’un disque approche de la saturation. Les notifications peuvent être envoyées via email, Slack, Discord, et d’autres services.
Architecture distribuée et faible impact sur les ressources
Netdata est conçu pour être léger et n’utilise que peu de ressources système, ce qui le rend idéal pour une utilisation sur des machines de production. En outre, il prend en charge l’architecture distribuée, vous permettant de surveiller plusieurs nœuds à partir d’un seul tableau de bord central (fonctionnalité payante).
Interface web intuitive
L’interface Web de Netdata est l’un de ses points forts. Grâce à son design simple et interactif, les utilisateurs peuvent facilement naviguer entre les différentes métriques, zoomer sur des périodes spécifiques et analyser les tendances à travers des graphiques détaillés. Cela rend le dépannage plus rapide et plus efficace.
Inscription à Netdata Cloud
Netdata Cloud propose une solution pratique et centralisée pour installer et gérer Netdata sur plusieurs systèmes, sans nécessiter de configurations locales complexes. C’est une option idéale si vous recherchez une solution clé en main avec une gestion centralisée de vos nœuds (serveurs) et un accès à une interface Cloud pour surveiller l’ensemble de vos infrastructures en temps réel.
Commencez par vous inscrire gratuitement sur Netdata Cloud. Une fois inscrit, vous aurez accès à une interface appelée “Space” où vous pourrez gérer et surveiller vos serveurs ou nœuds connectés.
Gestion des Spaces
Un Space dans Netdata est un conteneur de haut niveau utilisé pour organiser les membres de votre équipe, définir les niveaux d’accès, et gérer les nœuds à surveiller. Lors de votre inscription, un Space par défaut est automatiquement créé pour vous. Vous pouvez créer plusieurs Spaces, mais il est généralement conseillé de n’en utiliser qu’un seul pour centraliser toutes vos métriques et nœuds. Pour ajouter un nouvel Space, cliquez sur le bouton vert dans la barre latérale.
Gestion des Rooms
Chaque Space peut contenir plusieurs Rooms, qui sont des sous-sections permettant de mieux organiser vos serveurs. Un Room peut héberger aucun ou plusieurs nœuds, facilitant ainsi la gestion de votre infrastructure. Pour créer un Room, accédez à l’icône Settings dans la barre latérale, puis sélectionnez Rooms.
Cliquez sur le bouton gris à droite pour procéder à la création d’un Room. Une fois le Room créé, vous pouvez y ajouter des nœuds pour regrouper les serveurs sous une même catégorie. Pour ce faire, accédez aux détails du Room en cliquant sur le chevron dans la colonne Actions du tableau. À partir des détails du Room, vous pourrez également ajouter des utilisateurs pour gérer l’accès et les permissions, ainsi que des nœuds pour organiser vos serveurs.
Gestion des Nodes
Pour ajouter un nœud (serveur) dans le Room que vous venez de créer, allez dans Settings > Rooms, puis sélectionnez le Room approprié. Vous devrez voir une interface similaire à l’image ci-dessus. Cliquez sur le bouton gris à droite, et un pop-up s’affichera avec une commande à utiliser.
Choisissez la plateforme sur laquelle vous souhaitez installer Netdata (Linux, macOS, etc.), puis copiez le script d’installation généré par Netdata Cloud pour votre système.
Installation de Netdata
Connectez-vous à votre serveur via SSH et collez le script d’installation que vous avez copié depuis Netdata Cloud. Ce script télécharge et installe Netdata, active les services nécessaires, et connecte automatiquement votre nœud à l’interface Cloud. Voici un exemple de commande à exécuter :
Le script s’assure que Netdata est configuré correctement et qu’il est prêt à envoyer des données à l’interface Netdata Cloud.
Vérification
Sur l’interface principale de Netdata Cloud, lorsque vous appuyez sur “All nodes” en haut à gauche, vous avez la possibilité de sélectionner un Room parmi ceux que vous avez créés. Cela changera le contexte de visualisation pour n’afficher que les données relatives aux nodes du Room sélectionné.
Accès à Netdata Local
Si vous préférez accéder à Netdata directement depuis l’instance installée sur votre serveur, plutôt que via l’interface app.netdata.cloud, vous pouvez suivre les étapes ci-dessous pour consulter les métriques de votre serveur localement.
Par défaut, l’interface Web de Netdata est accessible sur le port 19999
. Pour y accéder, ouvrez votre navigateur et entrez l’adresse IP de votre serveur suivie du port :
http://your-server-ip:19999
Cependant, si vous avez configuré un pare-feu, comme UFW (Uncomplicated Firewall), l’accès au port 19999 pourrait être bloqué.
Vérification du pare-feu (UFW)
Si vous utilisez UFW, vous pouvez vérifier son statut et, si nécessaire, ouvrir le port 19999 avec la commande suivante :
sudo ufw allow 19999/tcp
Ensuite, rechargez UFW pour appliquer les changements :
sudo ufw reload
Sécurisation de Netdata en local
Pour garantir la sécurité de votre installation Netdata, il est important de protéger l’accès à l’interface de surveillance. Si vous avez précédemment ouvert le port 19999 pour accéder à Netdata depuis l’extérieur, il est recommandé de le fermer.
Pour UFW (Uncomplicated Firewall) :
sudo ufw deny 19999/tcp
Configurer un Reverse Proxy
Pour sécuriser davantage l’accès à Netdata, il est conseillé de configurer un reverse proxy. Cela permet non seulement de restreindre l’accès via un port standard (comme le port 80 pour HTTP ou 443 pour HTTPS), mais aussi d’ajouter une couche de sécurité avec SSL/TLS et une authentification basique.
Utilisation de CloudPanel
Si vous utilisez CloudPanel, vous pouvez facilement mettre en place cette configuration en suivant les instructions disponibles sur le lien suivant : Sécuriser un site avec CloudPanel. CloudPanel offre une interface graphique simplifiée pour mettre en place cette configuration de manière sécurisée.
Dans notre cas, imaginons que nous avons configuré le reverse proxy pour accéder à Netdata via le sous-domaine netdata.exemple.com
.
Dépannage
Si vous avez installé Netdata en utilisant les dépôts de paquets Ubuntu avec les commandes suivantes :
sudo apt update
sudo apt install netdata
et que, pour une raison quelconque, vous ne souhaitez pas désinstaller cette installation pour passer à la méthode décrite ci-dessous, vous pouvez suivre les étapes suivantes pour résoudre certains problèmes, comme la mise à jour vers une version plus récente de Netdata et la gestion des affichages de logs.
Voici ce à quoi vous devriez normalement vous attendre comme interface si vous avez utilisé le dépôt Ubuntu pour l’installation.
Installer le plugin systemd-journal
Vous pourriez constater l’absence de l’onglet “Logs” ainsi que de la nouvelle interface graphique offerte par Netdata Cloud. Cela est dû au fait que certains plugins, notamment celui permettant de surveiller les logs du journal système systemd, ne sont pas installés par défaut.
Pour résoudre ce problème et activer l’onglet “Logs”, suivez les étapes ci-dessous pour installer le plugin nécessaire.
Ajouter le dépôt officiel de Netdata
Tout d’abord, vous devez ajouter le dépôt officiel de Netdata à votre système. Cela garantit que vous installerez toujours la version la plus récente et complète de Netdata, y compris les plugins supplémentaires comme celui pour systemd.
Exécutez la commande suivante pour ajouter le dépôt :
curl -s https://packagecloud.io/install/repositories/netdata/netdata/script.deb.sh | sudo bash
Installer le plugin systemd-journal
Une fois le dépôt ajouté, vous pouvez installer le plugin Netdata pour systemd en utilisant la commande suivante :
sudo apt-get install netdata-plugin-systemd-journal
Cette commande installera le plugin qui permettra à Netdata de lire et afficher les journaux système à partir de journald.
Vérifier l’onglet “Logs” dans l’interface
Une fois le service redémarré, accédez de nouveau à l’interface Web de Netdata. Vous devriez maintenant avoir l’onglet “Logs” qui vous permet de visualiser en temps réel les journaux système collectés par systemd.
Vous remarquerez désormais l’apparition de nouveaux onglets dans l’interface de Netdata, améliorant ainsi l’observabilité de votre système. Cependant, pour que les logs système s’affichent pleinement et que vous puissiez bénéficier de toutes les fonctionnalités avancées, il est nécessaire de configurer Netdata Cloud.
Afficher les logs dans Netdata
Pour afficher les logs dans Netdata, il est nécessaire de prouver que vous êtes le propriétaire de l’instance Netdata que vous utilisez. Cette vérification se fait via Netdata Cloud, une étape indispensable pour garantir que seules les personnes autorisées peuvent accéder aux informations sensibles, comme les logs.
Voici les étapes détaillées pour configurer l’affichage des logs dans Netdata :
Créer un compte sur Netdata Cloud
Netdata impose de passer par leur plateforme Cloud pour accéder à certaines fonctionnalités sensibles, comme les logs. La première étape est donc de créer un compte sur Netdata Cloud si c’est pas déjà fait. Une fois inscrit, vous pourrez “revendiquer” votre instance Netdata locale.
Autoriser l’instance Netdata
Ensuite, vous devez associer votre instance locale à votre compte Netdata Cloud. Voici comment procéder :
Ouvrez l’interface Web de votre instance Netdata à travers le reverse proxy configuré (pour notre cas c’est netdata.exemple.com
). En haut à droite de l’interface ou bien au niveau de l’onglet Logs, cliquez sur le bouton “Sign in”. Lors de la connexion, Netdata vous demandera d’autoriser l’URL de votre instance locale netdata.exemple.com
. Cette étape est nécessaire pour valider que vous êtes bien le propriétaire de l’instance. Une fois cette action effectuée, Netdata génère un fichier aléatoire contenant un code secret au niveau de votre serveur.
Récupérer le code secret
Une fois l’autorisation effectuée, vous êtes redirigé sur votre instance Netdata locale, appuyez ensuite en haut à droite sur le bouton connect, dans la fenêtre qui s’affiche, sélectionnez l’espace de travail déjà existant. Netdata vous donnera une commande à exécuter sur votre serveur pour récupérer le code secret nécessaire à l’authentification. Exécutez la commande sur votre serveur, puis renseignez le champ avec le code obtenu. Cette étape permet de finaliser l’authentification et d’autoriser l’affichage des logs dans votre interface Netdata.
Affichage des logs
Une fois que le code secret a été validé par Netdata Cloud, vous pourrez actualiser l’ecran et accéder à l’onglet Logs. Vous verrez alors les journaux système et d’autres informations sensibles directement dans l’interface.
Conclusion
Netdata se présente comme une solution de surveillance puissante, flexible et en temps réel pour tous types d’infrastructures. Que vous gériez un ou plusieurs serveurs, Netdata offre une visibilité approfondie sur les performances système, les ressources réseau, et bien plus encore, grâce à son interface intuitive et ses visualisations détaillées.
En combinant l’efficacité du monitoring local avec l’accessibilité de Netdata Cloud, vous pouvez centraliser et organiser la surveillance de vos serveurs de manière structurée via les Spaces et Rooms. Cette organisation permet de gérer facilement une infrastructure complexe, tout en profitant de l’installation rapide et de la simplicité d’utilisation.
Architecte logiciel, Développeur d'application diplomé d'ETNA, la filière d'alternance d'Epitech, j'ai acquis une expertise solide dans le développement d'applications, travaillant sur des projets complexes et techniquement diversifiés. Mon expérience englobe l'utilisation de divers frameworks et langages, notamment Symfony, Api Platform, Drupal, Zend, React Native, Angular, Vue.js, Shell, Pro*C...