P0pR0cK5's Blog

Pentest, Challenges, Tests and more ...

View on GitHub

Un monitoring Linux rapide avec Netdata !

Retour

netdata.png

Dans ce post, je vais détailler ma technique pour installer rapidement Netdata sur une machine Debian.

Installation

L’installation se déroule en tois étapes :

  1. Installation des dépendances
  2. Installation de netdata
  3. Création d’un service

1 - Installation des dépendances

curl -Ss 'https://raw.githubusercontent.com/firehol/netdata-demo-site/master/install-required-packages.sh' >/tmp/kickstart.sh && bash /tmp/kickstart.sh -i netdata-all

2 - Installation de netdata

# download it - the directory 'netdata' will be created
git clone https://github.com/firehol/netdata.git --depth=1
cd netdata

 # run script with root privileges to build, install, start netdata
 ./netdata-installer.sh

3 - Création de service

# stop netdata
killall netdata

# copy netdata.service to systemd
cp system/netdata.service /etc/systemd/system/

# let systemd know there is a new service
systemctl daemon-reload

# enable netdata at boot
systemctl enable netdata

# start netdata
service netdata start

Le monitoring est maintenant disponible sur http://localhost:19999

netdata.png

TODO Script d’installation pour Debian

Configuration des alertes par mail

Cette partie se déroule en plusieurs parties :

  1. Installation et configuration de SSMTP
  2. Configuration des alertes dans netdata

SSMTP

SSMTP permet à des applications d’envoyer des courriels via la commande /usr/sbin/sendmail. Contrairement à postfix, il ne fait que rediriger les courriers vers un serveur SMTP externe. C’est donc un outil très léger et rapide, et qui ne demande que très peu de paramétrage.

Installation (facile)

Sur Debian, un paquet existe dans les dépots :

apt install ssmtp

Configuration (pas vraiment plus compliqué)

On va simplement paramétrer un compte Gmail (mais n’importe quel serveur SMTP fera largement l’affaire). Pour ce faire :

# Config file for sSMTP sendmail
# Fichier /etc/ssmtp/ssmtp.conf
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=yourmail@mail.com #<-- ICI on met son email 

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587 #<-- ICI on met le serveur de mail SMTP de google .*[AVEC LE PORT]*.

# Where will the mail seem to come from?
rewriteDomain=

# The full hostname
hostname=yourserver.example.com #<-- ICI l'hostname de notre serveur

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

# Username and password for Google's Gmail servers
# From addresses are settled by Mutt's rc file, so 
# with this setup one can still achieve multi-user SMTP
AuthUser=username@gmail.com #<-- On met son email ici aussi
AuthPass=password # Le password 

#other parameters for google.com 
UseTLS=YES
UseSTARTTLS=YES
AuthMethod=LOGIN

Note: ce fichier contient ici notre identifiant en clair ainsi que notre mot de passe. Voici donc comment faire pour sécuriser un peut les choses (l’idéale étant de créer un compte mail spécifiquement pour nos alertes)

 chown root:mail /etc/ssmtp/ssmtp.conf
 chmod 640 /etc/ssmtp/ssmtp.conf
 usermod -a -G mail netdata

Testons maintenant que tout fonctionne :

user@yourmachine ~ $ echo "corp de mail" | mail -s "testing ssmtp setup" une.adresse@unDomaine.com

Paramétrage de netdata :

vi /etc/netdata/health_alarm_notify.conf

Rendez-vous ligne 91 (:91 dans vi)

#------------------------------------------------------------------------------
 # email global notification options
 
 # multiple recipients can be given like this:
 #              "admin1@example.com admin2@example.com ..."
 
 # enable/disable sending emails
 SEND_EMAIL="YES"
  
 # if a role recipient is not configured, an email will be send to:
 DEFAULT_RECIPIENT_EMAIL="une.adresse@unDomaine.com"
 # to receive only critical alarms, set it to "root|critical"

On modifie Revaliases :

# /etc/ssmtp/revaliases

# Format:   local_account:outgoing_address:mailhub
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
netdata:contact@smartfizz.fr:mail.bla.net:587
~                                                 

On test :

sudo su -s /bin/bash netdata
/usr/libexec/netdata/plugins.d/alarm-notify.sh test

Mise en place d’un proxy :

Note: ici on utilise Nginx mais on peut faire la même chose avec Apache.

Voici une configuration permettant d’accéder a Netdata via un sous dossier (Mondomaine.com/netdata):

#Monitoring
	location /netdata {
		rewrite /netdata(.*) /$1 break;
		proxy_redirect off;
		proxy_set_header Host $host;
		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_http_version 1.1;
		proxy_pass_request_headers on;
		proxy_set_header Connection "keep-alive";
		proxy_store off;
		proxy_pass http://172.18.0.1:19999;
		gzip on;
		gzip_proxied any;
		gzip_types *;
	}
}

Conclusion

Comme vous le voyez, il devient trés simple de mettre en place un monitoring de sa machine sous linux grace au travaille du créateur de Netdata.

Bien entendus il existe un moyen de faire son dashboard personalisé, d’ajouter ses propres plugins ou encore de monitorer plusieur machines depuis une seule instance de Netdata.

Prochaine étape

  • Crée notre propre plugin
  • Mettre en place un mode partagé pour monitorer plusieur machines depuis une instance de netdata

Written on October 3, 2017 by


Retour