Outils pour utilisateurs

Outils du site


netdata_monitoring_de_serveur

Netdata - Monitoring de serveur

Petite description de Netdata dans le comparatif des solutions pour le monitoring.

Pour ce tutoriel, on va considérer que l'on installe Netdata sur un sous domaine (netdata.monsite.org), sur un serveur sous Debian 10 avec Apache2. Il faut aussi que le programme certbot soit installé pour le certificat SSL (https).

Netdata écoute par défaut sur le port 19999, on choisira plutôt 15999 (par exemple) pour ne pas garder la valeur par défaut.

On protégera l'accès à Netdata derrière un login / mot de passe via le module auth_digest d'apache.

Il faut aussi que les modules d'apache rewrite et proxy soient activés.

Installation

Préliminaires

Pour faire les choses bien, on va créer un user dans lequel on aura un dossier netdata.monsite.org qui permettra à Certbot de valider le certificat SSL. De manière générale, sur un serveur hébergeant plusieurs site, on fait 1 user = 1 site pour cloisonner les droits entre les sites.

Les commandes suivantes créent un user stats, créent un dossier /home/stats/www/netdata.monsite.org et attribue les droits à Apache sur ce dossier.

adduser stats
mkdir /home/stats/www/netdata.monsite.org
chown -R www-data: /home/stats/www/netdata.monsite.org

On active les modules nécessaires dans apache :

cd /etc/apache2/mods-available
a2enmod auth_digest headers proxy rewrite
systemctl restart apache2.service

Netdata

La Documentation est assez explicite, ici on choisit une install sur la branche stable et sans envoi de données anonymes en lançant cette commande :

bash <(curl -Ss https://my-netdata.io/kickstart.sh) --stable-channel --disable-telemetry

Netdata sera installé dans les dossiers suivants :

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

Netdata sera alors automatiquement démarré et accessible sur l'IP du serveur via le port 19999, mais on va le changer avant de poursuivre :

cd /etc/netdata
./edit-config netdata.conf

Dans ce fichier, modifier la valeur 19999 par 15999 ici :

[web]
    ...
    default port = 15999
    ...

Et redémarrer Netdata :

systemctl restart netdata

Apache, virtual host et certificat SSL

On suppose que le sous domaine netdata.monsite.org pointe déjà vers le serveur, sinon, modifier vos DNS en conséquence.

D'abord on crée un virtual host sur le port 80. Pour ça, créer un fichier /etc/apache2/sites-available/netdata.monsite.org.conf et y mettre :

<VirtualHost *:80>
 
        ServerAdmin moi@monsite.org
        ServerName netdata.monsite.org
 
        DocumentRoot "/home/stats/www/netdata.monsite.org"
 
        <Directory /home/stats/www/netdata.monsite.org>
                Options -Indexes +FollowSymLinks +MultiViews
                Require all granted
                AllowOverride All
        </Directory>
 
        ErrorLog /var/log/apache2/netdata.monsite.org.error.log
        LogLevel error
        CustomLog /var/log/apache2/netdata.monsite.org.access.log vhost_combined
 
</VirtualHost>

Activer ce virtual host :

a2ensite netdata.monsite.org.conf
systemctl restart apache2.service

Créer un certificat SSL en lançant la commande suivante et suivre les instructions :

certbot --apache

Le sous domaine n'est maintenant accessible qu'en HTTPS.

Il faut maintenant afficher netdata lorsque que l'on visite le sous domaine netdata.monsite.org. On sait que netdata est accessible sur le port 15999, on va rediriger le traffic du sous domaine vers localhost:15999 grâce au module proxy d'apache.

Modifier le virtual host en ajoutant :

<IfModule mod_proxy.c>
    RewriteEngine On
    ProxyRequests Off
    ProxyPreserveHost On
 
    <Proxy *>
        Require all granted
    </Proxy>
 
    ProxyPass "/" "http://localhost:15999/" connectiontimeout=5 timeout=30 keepalive=on
    ProxyPassReverse "/" "http://localhost:15999/"
</IfModule>

Rédémarrer apache. Désormais, Netdata est accessible sur l'URL netdata.monsite.org.

Configuration et Optimisation

Protéger l'accès

Pour cacher Netdata du public, on utilise le module auth_digest d'apache.

D'abord, on crée un dossier pour ranger nos clefs, par exemple ici :

cd /etc/apache2/
mkdir monserveur_htdigests
cd monserveur_htdigests

Ensuite, dans ce dossier on crée un fichier netdata.monsite.org qui contiendra le mot de passe crypté du compte nommé netdata dans le groupe stats :

htdigest -c netdata.monsite.org stats netdata

Enfin, il faut modifier le virtual host en ajoutant :

<Location />
    AuthType Digest
    AuthName "stats"
    AuthDigestProvider file
    AuthUserFile /etc/apache2/monserveur_htdigests/netdata.monsite.org
    Require valid-user
</Location>

Rédémarrer apache et un login / mot de passe serront demandés quand on accédera à netdata.monsite.org.

Netdata

Basé sur la documentation de la config et de l'optimisation.

Pour modifier la configuration générale de Netdata, il faut aller dans son répertoire /etc/netdata et exécuter :

./edit-config netdata.conf

Il y a plusieurs sections comme [global], [web]

On a déjà vu plus haut comment changer le port, visible dans la section [web].

Penser à redémarrer Netdata à chaque modification de la config :

systemctl restart netdata

Section [global]

On change la valeur de hostname pour donner un nom au serveur :

hostname = Mon-Serveur

On coupe les logs car apache en produit aussi :

debug log = none
error log = none
access log = none

On va aussi changer la durée de conservation des données : il faut déterminer combien de place on souhaite allouer à Netdata, en fonction du nombre de metrics mesurées et d’autres paramètres. Voir le calculateur pour aider à trouver la bonne valeur, puis changer la valeur, par exemple pour 3500 metrics, toutes les secondes, conservées sur 6 mois (180 jours), cela représente 42Go. On augmente aussi le page cache size (32 par défaut) :

page cache size = 64
dbengine multihost disk space = 42000

Section [web]

Puisque Netdata est derrière un proxy Apache, on désactive la compression gzip car apache s'en occupe déjà.

enable gzip compression = no

Enfin, on autorise uniquement les connections depuis localhost, le proxy se chargeant d’afficher Netdata sur le nom de domaine choisi :

bind to = localhost

Config email

Netdata envoie des notifications d'alerte quand la charge monte trop fort sur les composants surveillés. Par défaut, c'est envoyé par mail à l'utilisateur root du serveur. Changeons ça en modifiant le fichier de configuration adéquate. Toujours dans le dossier /etc/netdata :

./edit-config health_alarm_notify.conf

Changer la valeur suivante comme suit :

DEFAULT_RECIPIENT_EMAIL="moi@monsite.org"

Commandes utiles

Arrêter / démarrer Netdata :

systemctl stop netdata
systemctl start netdata

Désinstaller complètement Netdata :

/usr/libexec/netdata/netdata-uninstaller.sh

Mettre à jour manuellement Netdata (normalement c’est automatique) :

/usr/libexec/netdata/netdata-updater.sh

Liens pratiques

netdata_monitoring_de_serveur.txt · Dernière modification: 2021/03/11 03:04 de n1c0