Comment configurer la surveillance des performances en temps réel avec Netdata sur Ubuntu 16.04

introduction

Netdata fournit une surveillance précise des performances via des tableaux de bord Web extensibles qui visualisent les processus et les services sur vos systèmes Linux. Il surveille les mesures relatives au processeur, à la mémoire, aux disques, aux réseaux, aux processus, etc.

Netdata ne nécessite aucune configuration supplémentaire une fois installée, mais offre une personnalisation importante. L’efficacité et la rapidité de l’application doivent être comparables aux outils d’administration de console natifs tels que + vmstat +, + iostat + et + htop +.

Les étapes de ce tutoriel couvrent tout ce dont vous avez besoin pour configurer avec succès un serveur Ubuntu 16.04 exécutant Netdata à l’aide de son serveur Web intégré ou, éventuellement, à l’aide de Nginx.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

Étape 1 - Installation de Netdata

Avant d’installer quoi que ce soit, assurez-vous que l’index du package système est à jour.

sudo apt-get update

Ensuite, installez les dépendances de Netdata, qui incluent les outils + gcc + (compilateur C), GNU Autoconf, https: //en.wikipedia. org / wiki / Globally_unique_identifier [GUID] gestion et bibliothèques de compression pour le serveur Web interne de Netdata.

sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl

Les prochains packages sont optionnels mais recommandés par Netdata. Ils incluent Python, des packages Python et Node.JS. La version stable de Node.js fournie avec le gestionnaire de packages système convient parfaitement à Netdata. exigences. Installez-les ensuite.

sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat

Pour installer Netdata lui-même, nous devons utiliser le référentiel GitHub du projet. Clonez le référentiel Netdata dans votre répertoire de base.

git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata

Déplacer vers le répertoire nouvellement cloné.

cd ~/netdata

Maintenant, construisez et installez l’application en utilisant le script shell + netdata-installer.sh + dans ce répertoire. Assurez-vous d’ajouter + sudo + ici, sinon la manière dont Netdata collecte les données système (via des collecteurs de données) ne fonctionnerait pas correctement.

sudo ./netdata-installer.sh

La sortie que vous verrez d’abord contient des informations sur l’emplacement où Netdata stockera tous ses composants. Vous pouvez les lire pour vous familiariser un peu avec la manière dont le programme est réparti sur le système de fichiers après son installation.

Installer Output. . .
 It will be installed at these locations:

  - the daemon    at /usr/sbin/netdata
  - config files  at /etc/netdata
  - web files     at /usr/share/netdata
  - plugins       at /usr/libexec/netdata
  - cache files   at /var/cache/netdata
  - db files      at /var/lib/netdata
  - log files     at /var/log/netdata
  - pid file      at /var/run
. . .

Appuyez sur + ENTER pour continuer l’installation. Au bout d’un moment, à la fin de la chaîne de sortie, le message suivant s’affiche:

Installer Output. . .
 ^
 |.-.   .-.   .-.   .-.   .-.   .  netdata                          .-.   .-
 |   '-'   '-'   '-'   '-'   '-'   is installed and running now!  -'   '-'
 +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->

 enjoy real-time performance and health monitoring...

Netdata est maintenant installé et fonctionne correctement et s’exécutera automatiquement lors du redémarrage du serveur.

Si vous avez activé UFW, comme indiqué dans le tutoriel https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04Initial Initial Server pour Ubuntu 16.04], vous allez: ouvrir le port + 19999 + pour le serveur Web interne de Netdata.

sudo ufw allow 19999/tcp

À ce stade, vous pouvez afficher le tableau de bord par défaut en vous rendant sur la page + http: //: 19999 / + dans votre navigateur préféré. Vous verrez un aperçu des métriques en direct du système. C’est une bonne vérification que tout fonctionne jusqu’à présent, mais avant d’explorer l’interface graphique, personnalisons un peu Netdata.

Étape 2 - Configuration de l’utilisation de la mémoire par Netdata

Vous pouvez afficher la configuration actuelle de Netdata dans votre navigateur en visitant + http: //: 19999 / netdata.conf +.

Vous verrez ici que toutes (ou la plupart) des options configurables sont commentées (c.-à-d. préfacé par un + # +). En effet, la configuration de Netdata fonctionne en utilisant un ensemble de valeurs par défaut supposées. Tous les paramètres désactivés utilisent la valeur par défaut de Netdata; si un paramètre n’est pas commenté, la valeur spécifiée remplacera la valeur par défaut. Ainsi, le fichier de configuration ne contient que ce que vous avez modifié.

De retour sur votre serveur, le fichier de configuration lui-même est + / etc / netdata / netdata.conf +. L’option que nous allons personnaliser dans ce tutoriel est le paramètre + history +. Ceci contrôle la taille maximale de la base de données de mémoire utilisée par Netdata.

Vous devez déterminer ici la quantité de RAM que vous souhaitez consacrer à Netdata ou la durée pendant laquelle vous souhaitez conserver les données de graphique enregistrées avant qu’elles ne soient perdues:

  • 3600 secondes (1 heure de conservation des données du graphique) utilise 15 Mo de RAM

  • 7200 secondes (2 heures de conservation des données du graphique) utilise 30 Mo de RAM

  • 14400 secondes (4 heures de conservation des données du graphique) utilise 60 Mo de RAM

  • 28800 secondes (8 heures de conservation des données du graphique) utilise 120 Mo de RAM

  • 43200 secondes (12 heures de conservation des données du graphique) utilisent 180 Mo de RAM.

  • 86400 secondes (24 heures de conservation des données du graphique) utilise 360 ​​Mo de RAM

N’oubliez pas que les estimations ci-dessus sont basées sur le nombre de graphiques utilisés par le tableau de bord boursier. La suppression ou l’ajout de graphiques personnalisés à l’avenir influencera ces estimations.

Ouvrez le fichier de configuration principal de Netdata avec + nano + ou votre éditeur de texte préféré.

sudo nano /etc/netdata/netdata.conf

Recherchez l’option + history + dans la section + [global] +.

/etc/netdata/netdata.conf

. . .
[global]
       # glibc malloc arena max for plugins = 1
. . .
       # hostname = test-netdata

       # update every = 1
. . .

Remplacez la valeur + 3600 + par celle définie précédemment. Nous utilisons ici + 14400 +, ce qui nous laisse 4 heures de rétention de données. Veillez également à ne pas commenter la ligne en supprimant le symbole + # + afin que cette option ne soit plus ignorée par Netdata.

/etc/netdata/netdata.conf

. . .
[global]
       # glibc malloc arena max for plugins = 1
. . .
       # hostname = test-netdata

       # update every = 1
. . .

Enregistrez et fermez le fichier après avoir effectué cette modification.

Bien que cette modification augmente probablement la quantité de RAM utilisée par Netdata, la prochaine modification que nous implémenterons à la prochaine étape devrait la réduire considérablement.

Étape 3 - Activer la fusion de pages identiques du noyau

Même si Netdata fonctionne et fonctionne immédiatement, nous pouvons apporter davantage de modifications à la manière dont Netdata utilise les ressources système, ce qui accélérera et optimisera ses performances. Nous allons commencer par activer Kernel Same-page Merging, ou KSM en abrégé. Les développeurs de Netdata estiment que cela réduirait l’utilisation de la mémoire de Netdata de 40 à 60%.

Une fois activé, le démon KSM analyse périodiquement la mémoire, à la recherche de pages de contenu identique pouvant être remplacées par une seule page protégée en écriture. Dans ce contexte, il permet le partage de pages de mémoire identiques entre différents processus ou programmes exécutés sur le système. Cela réduit la création de contenu de mémoire en double inutile.

Pour activer de manière permanente cet aspect du noyau du système Linux, ouvrez le fichier + / etc / rc.local avec un éditeur de texte.

sudo nano /etc/rc.local

Ce fichier + / etc / rc.local ou ce fichier de contrôle d’exécution est exécuté après le démarrage de tous les autres services et processus système Linux normaux. C’est utile pour spécifier des services personnalisés - ou, dans notre cas, pour activer KSM au moment de l’exécution du serveur.

Ajoutez les deux commandes surlignées ci-dessous à la fin du fichier, avant la dernière ligne + exit 0 +, comme indiqué ci-dessous:

/etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.




exit 0

La première commande ajoute un 1 dans le fichier du noyau KSM + run +, ce qui active la fonctionnalité. La deuxième commande demande au démon KSM de s’exécuter une fois par seconde et d’évaluer 100 pages pour la déduplication.

Une fois que vous avez sauvegardé et fermé le fichier, KSM sera désormais activé lors du prochain redémarrage du serveur et persistera lors des prochains redémarrages. Pour l’activer pour le reste de la disponibilité de ce serveur, vous devez exécuter manuellement les deux commandes que vous avez ajoutées à + ​​rc.local + sur la ligne de commande.

Commencez par lancer et entrer une nouvelle session shell en tant qu’utilisateur root du serveur en utilisant l’indicateur + -s + avec + sudo +. Cela est nécessaire car les deux commandes de la précédente utilisent la redirection de sortie (via l’opérateur +> +) et doivent être exécutées par un shell root pour réussir.

sudo -s

Maintenant, entrez les deux commandes précédentes:

echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs

Ensuite, quittez le shell root et retournez votre session shell normale.

exit

Enfin, pour appliquer toutes les modifications apportées à cette étape et à l’étape précédente, vous devez redémarrer Netdata.

sudo systemctl restart netdata

Vous pouvez vérifier que KSM est maintenant activé en recherchant le graphique KSM actif ajouté récemment dans le tableau de bord Netdata. Cela se trouve dans l’arborescence du menu de droite, sous * Memory> Memory Deduper *.

image: https: //assets.digitalocean.com/articles/netdata/ec5ef7ee507b9c9920958055d9752273.png [Image du graphique KSM]

Maintenant que nous savons que le tableau de bord et KSM fonctionnent, cela vaut la peine d’accorder l’accès au tableau de bord via un serveur Web tel que Nginx au lieu du serveur Web intégré. Ce n’est pas tout à fait nécessaire, mais cela est recommandé. Vous devez donc suivre l’étape suivante pour le configurer.

Étape 4 - Hébergement du tableau de bord via Nginx (facultatif)

L’hébergement de Netdata via Nginx facilite la sécurisation de l’accès au tableau de bord et vous permet également, le cas échéant, de pointer vers les tableaux de bord Netdata d’autres serveurs. Vous pouvez suivre le tutoriel https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 pour Nginx] pour l’installer maintenant, si vous ne l’avez pas déjà fait. .

Vous devrez également installer le paquet + apache2-utils +. Ce paquet contient le programme + htpasswd +, dont nous aurons besoin ultérieurement pour sécuriser l’accès à la page du tableau de bord.

sudo apt-get install apache2-utils

Ensuite, créez un nouveau fichier de configuration d’hôte Nginx. Notez que ici, nous utilisons un fichier dans le répertoire + / conf.d +, mais vous pouvez utiliser + / sites-available + et + / sites-enabled + si vous utilisez Nginx pour autre chose que Netdata. Pour en savoir plus sur les fichiers et les répertoires Nginx, consultez la page https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04#step-5-get-familiar-with- important-nginx-fichiers-et-répertoires [le tutoriel d’installation].

sudo nano /etc/nginx/conf.d/default.conf

Ce fichier de configuration indiquera à Nginx d’autoriser les requêtes entrantes pour la page de tableau de bord. Nous ajouterons également une simple invite d’authentification afin que seules les personnes ayant le nom d’utilisateur et le mot de passe corrects puissent y accéder.

Vous trouverez ci-dessous le fichier de configuration complet à copier et coller. Remplacez les deux éléments en surbrillance rouge des directives + listen + et + nom_serveur + ci-dessus par l’adresse IP de votre serveur et le nom de domaine attribué, respectivement. Veillez à inclure le signe +; + à la fin de chacun. Si vous n’avez pas de nom de domaine, vous pouvez laisser la directive + nom_serveur + sous la forme + exemple.com +.

/etc/nginx/conf.d/default.conf

upstream netdata-backend {
   server 127.0.0.1:19999;
   keepalive 64;
}

server {
   listen :80;
   server_name ;

   auth_basic "Authentication Required";
   auth_basic_user_file netdata-access;

   location / {
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass http://netdata-backend;
       proxy_http_version 1.1;
       proxy_pass_request_headers on;
       proxy_set_header Connection "keep-alive";
       proxy_store off;
   }
}

Une fois que vous êtes certain que votre propre fichier correspond à ce bloc de code, vous pouvez enregistrer et quitter pour revenir à l’invite de commande.

Expliquons ce fichier pour que vous compreniez ce qu’il fait. Ceci est la première section:

/etc/nginx/conf.d/default.conf

upstream netdata-backend {
   server 127.0.0.1:19999;
   keepalive 64;
}

Ce module + amont + nommé + netdata-backend + cible le serveur Web Netdata intégré en utilisant l’adresse de bouclage du serveur, + 127.0.0.1 + , et le port de Netdata, '+ 19999 +. Une directive + keepalive + définit le nombre maximal de connexions inactives en amont pouvant rester ouvertes à tout moment (pour chaque processus de travail Nginx). Cette définition de module + amont + est requise ultérieurement par la directive + proxy_pass +.

Juste après, se trouve le bloc + serveur + principal.

/etc/nginx/conf.d/default.conf

server {
   listen :80;
   server_name ;

   auth_basic "";
   auth_basic_user_file netdata-access;

Les deux premières lignes du bloc définissent l’adresse IP externe que Nginx devrait utiliser pour "+ écouter " lorsque les clients tentent de se connecter. La directive ` nom_serveur +` indique à Nginx d’exécuter ce blocage de serveur lorsqu’un client utilise le nom de domaine spécifié.

Les deux dernières lignes de cet extrait définissent la simple authentification du nom d’utilisateur et du mot de passe HTTP. Pour cela, il utilise le module + auth_basic + pour afficher une invite de nom d’utilisateur et de mot de passe. Vous pouvez personnaliser le message pour l’invite. ici, il est réglé sur * Authentification requise *. + auth_basic_user_file + désigne un nom de fichier et un emplacement pour stocker les identifiants de connexion de l’invite d’authentification, créés ultérieurement dans cette étape.

Le dernier bloc + location n, imbriqué dans le bloc` + server`, gère le traitement proxy et la transmission des demandes entrantes à Nginx.

/etc/nginx/conf.d/default.conf

   location / {
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass http://netdata-backend;
       proxy_http_version 1.1;
       proxy_pass_request_headers on;
       proxy_set_header Connection "keep-alive";
       proxy_store off;
   }
}

En résumé, c’est ce code qui transmet les demandes des clients au serveur Web Netdata, puis au tableau de bord. La ligne de directive + proxy_pass + fait référence au module + amont + au début du fichier doit y pointer son nom, + netdata-backend +.

Si vous ne l’avez pas déjà fait, vous pouvez sauvegarder et fermer ce fichier de configuration. Voici où le programme + htpasswd + du paquetage + apache2-utils + nous aide à créer les informations de connexion de l’utilisateur pour l’invite de connexion du tableau de bord.

Tout d’abord, nous allons créer un nom d’utilisateur et un mot de passe. Exécutez la commande suivante en remplaçant * sammy * par le nom d’utilisateur que vous souhaitez utiliser dans Netdata. Lorsque vous y êtes invité, entrez le mot de passe que vous souhaitez utiliser.

sudo htpasswd -c /etc/nginx/netdata-access

Cela crée un fichier dans + / etc / nginx / netdata-access + qui contient le nom d’utilisateur et le mot de passe que vous avez fournis. Le mot de passe généré est crypté dans le fichier, il ne peut donc pas être vu comme du texte brut.

Redémarrez Nginx pour rendre active la nouvelle configuration ajoutée.

sudo systemctl restart nginx

Pour tester la configuration de Nginx pour la première fois, visitez le site + http: // + de votre navigateur Web préféré. Vous verrez une invite d’authentification. Entrez le nom d’utilisateur et le mot de passe que vous avez fournis précédemment dans cette étape pour accéder au tableau de bord, que nous explorerons à l’étape 5.

Étape 5 - Exploration du tableau de bord

Si vous n’avez pas suivi l’étape facultative 4, visitez le site Web + http: //: 19999 / + de votre navigateur favori pour accéder au tableau de bord.

Vous verrez le tableau de bord et un aperçu des statistiques en direct du système. Les indicateurs de style de la palette en haut de la page changent lorsque vous passez la souris sur chaque période dans les graphiques suivants.

image: https: //assets.digitalocean.com/articles/netdata/fc92c985b0197ff491a209b22b71f2cf.png [Image d’indicateurs de HUD]

Les graphiques et diagrammes individuels de cette section présentent des comptes détaillés de chaque aspect du système, du processeur à la mémoire, en passant par le trafic réseau.

image: https: //assets.digitalocean.com/articles/netdata/177189ddcc6f564df3e508c5e982973c.png [Exemple de graphique de CPU]

Les graphiques sont interactifs et peuvent être déplacés vers la gauche ou vers la droite avec le bouton de la souris pour faire défiler les différents intervalles de temps.

image: https: //assets.digitalocean.com/articles/netdata/9b740f1fb166dd13d723146b14d85f11.png [Exemple de graphique RAM]

Maintenez la touche + SHIFT enfoncée et faites défiler le graphique avec la molette de la souris pour réduire ou élargir les repères de temps. Double-cliquez sur un graphique pour le réinitialiser à son apparence et à sa vue par défaut.

image: https: //assets.digitalocean.com/articles/netdata/c52bf377d51ee3c3aa22efd8f8f67035.png [Exemple de graphique de réseau]

Le moyen le plus rapide de naviguer dans le tableau de bord consiste à utiliser l’arborescence de menus située à droite de la page. Cela change le focus et la couleur en fonction de la section de la page que vous visualisez actuellement.

image: https: //assets.digitalocean.com/articles/netdata/c89039d87928cafd736f4386c021f7aa.png [Arborescence du menu]

Faire défiler la page ou utiliser l’arborescence du menu donne accès à des graphiques encore plus détaillés. Celles-ci sont très détaillées et sont contrôlées de la même manière que les graphiques de la section de vue d’ensemble initiale.

image: https: //assets.digitalocean.com/articles/netdata/c4b85431138b134b489faef238b89356.png [Image de l’arbre de menu]

Bon nombre de ces graphiques supplémentaires spécifiques aux statistiques sont disponibles via Netdata.

Une partie importante de l’interface graphique est la page de mise à jour. Netdata reçoit des mises à jour assez régulièrement et il est facile de maintenir votre installation à jour. Le tableau de bord contient un bouton * Mise à jour * en haut qui vous permet de vérifier si une nouvelle version est disponible au téléchargement.

image: https: //assets.digitalocean.com/articles/netdata/0b091543f92ecf2e3b1e31e4702d674b.png [Mettre à jour l’image du bouton]

Cliquez sur ce bouton pour ouvrir un nouveau menu avec plus de détails et un bouton * Vérifier maintenant * pour vérifier manuellement les mises à jour.

image: https: //assets.digitalocean.com/articles/netdata/0dabcc4147e36ed75307628f964659b5.png [Mettre à jour l’image de contrôle]

Si une mise à jour est disponible, il vous suffit d’exécuter le script de mise à jour fourni à partir du référentiel Netdata Git, que nous avons cloné dans le répertoire de base de l’utilisateur Linux à l’étape 1. C’est-à-dire que lorsqu’une mise à jour est disponible, exécutez simplement + sudo ~ / netdata / netdata-updater.sh + à partir de la ligne de commande.

Conclusion

Pour en savoir plus sur le projet Netdata et sur la manière de développer davantage ce qui a été configuré ici, visitez le projet Netdata GitHub. Les informations sur le registre Netdata, la configuration des alarmes et l’installation de diagrammes / modules personnalisés sont couvertes dans le Netdata wiki, qui traite également de sujets tels que la création de badges HTML ou la gestion des fichiers journaux de Netdata. .