VNstat : Monitoring réseau (trafic) Synology/Linux

chroot 22 août 2016

Une fois n’est pas coutume, j’ai eu envie d’installer un truc totalement inutile sur mes NAS : VNstat. C’est un outil de monitoring réseau, léger et très simple, qui retourne ses résultats en CLI ou via une page Web.

En fait je voulais jouer avec mon chroot Debian et installer un truc rapide, qui ne mange pas trop de ressources. C’est qu’un NAS de stockage, j’ai pas vraiment de besoins à part FTP/SSH/SyncThing…

Ce tutoriel concerne donc un NAS Synology mais le process est le même pour un Linux “normal” hormis la partie concernant le chroot.

 

 

Synology : outils de monitoring

Le DSM de Synology dispose déjà d’outils pour voir son trafic réseau. Si on veut avoir ça sur une page Web, plutôt que d’aller sur le DSM, on peut passer par les paquets SynoCommunity et installer DarkStat en… 2 clics. Il se configure tout seul sur l’interface réseau utilisée (LAN 4 chez moi donc eth3, LAN 1 étant eth0).

Sélection_003C’est pas beau mais ça fait le job. Pour le coup je préfère VNstat qui est plus moderne. J’ai lu qu’on pouvait l’installer sur Synology mais la procédure est bien plus complexe que pour Linux, sans compter qu’avec le DSM6 je ne suis pas certain que tout fonctionne bien. D’où mon idée de l’installer via mon chroot.

 

 

Debian sur Synology

Le principe du chroot est d’utiliser la base du NAS (architecture, RAM, disques, DSM) pour y faire tourner un Debian encapsulé et indépendant. C’est comme d’avoir 2 pièces dans une maison. Chaque pièce partageant les même conduits d’eau/électricité/cheminée mais pour autant chacune étant décorée/meublée différemment.

 

Je ne vais pas réécrire cet article, vous y avez toute la procédure d’installation d’un Debian chrooté sur Synology. C’est sincèrement simple. Il n’y a aucun risque de planter son NAS en l’installant et en l’utilisant. Enfin sauf bien entendu si vous montez dedans votre disque NAS/système et que vous en effacez le contenu (mais ce genre de bévue n’arrive pas “par erreur”).

 

 

Installation et configuration de VNstat

Évidemment j’utilise des commandes Debian/*buntu mais VNstat existe pour toutes les distributions. Et je suis en root.

apt-get install vnstat vnstati

Installé, on le configure pour l’interface qui nous intéresse (dans mon cas LAN 4 donc eth3)

vnstat -u -i eth0

Vous pouvez déjà voir ce que ça donne, en CLI, via cette commande. Bien entendu, comme vous venez de l’installer ne vous attendez pas à avoir beaucoup de statistiques…

root@Home:/var# vnstat -i eth3
Database updated: Mon Aug 22 13:15:17 2016

   eth3 since 08/22/16

          rx:  19 KiB      tx:  30 KiB      total:  49 KiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Aug '16        19 KiB |      30 KiB |      49 KiB |    0.00 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        --     |      --     |      --     |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
         today        19 KiB |      30 KiB |      49 KiB |    0.01 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        --     |      --     |      --     |

 

 

Rendu Web

Je veux l’avoir en graphiques, sur une page Web. Pour çail faut installer un moteur Web sur le chroot Debian et ajouter un code permettant de transcrire les statistiques VNstat en graphiques. Enncore une fois du très simple, rapide et léger.

 

J’installe Apache2. Sur une machine Linux ayant déjà un moteur Web (Apache2, Nginx ou autre) il vous suffirait d’ajouter un vhost.

apt-get install apache2

Le port 80 est déjà occupé sur Synology, par le DSM. Il convient donc de modifier notre moteur pour afficher les statistiques sur le port de notre choix. Dans mon cas, le 89. A la fin j’irai donc sur http://IP_du_NAS:89

nano /etc/apache2/ports.conf

Et j’y remplace le port 80 par 89

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 89

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Puis on relance Apache2

service apache2 restart

Il faut ensuite simplement remplacer l’index.html par défaut dans /var/www/html avec un code permettant d’afficher les statistiques

cd /var/www/html/
rm index.*
nano index.html

Et y coller ce code. Pensez à adapter le titre de la page (<title>…).

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Stats Synology - NAS3</title>
</head>

<body>
<h2 align="center">Statistiques réseau</h2>
<hr align="center">
<p align="center"><img src="summary.png" alt="Résumé"/><br/>
Résumé
</p>
<hr align="center">
<p align="center"><img src="hourly.png" alt="Par heure, sur les 24 dernières heures"/><br/>
Par heures, sur les 24 dernières heures
</p>
<hr align="center">
<p align="center"><img src="daily.png" alt="Par jour, sur les 30 derniers jours"/><br/>
Par jours, sur les 30 derniers jours
</p>
<hr align="center">
<p align="center"><img src="monthly.png" alt="Par mois, sur les 12 derniers mois"/><br/>
Par mois, sur les 12 derniers mois
</p>
<hr align="center">
<p align="center"></p>
<p align="center"><img src="top10.png" alt="Top 10 jours"/><br/>
Top 10 jours</p>
<hr align="center">
</body>
</html>

Comme vous le voyez ces graphiques sont des images.png. Ce n’est donc pas du temps réel (ça ne consomme donc rien) et elles sont à générer à intervalle régulier. Pour ça on va créer un script et l’ajouter en cron. Mettez-le où vous voulez, moi c’est dans un /home du NAS.

nano /home/ayx/vnstat.sh

On y colle ensuite notre code devant générer chaque image, pour l’interface que nous voulons.

#!/bin/bash
vnstat -u -i eth3
vnstati -s -i eth3 -o /var/www/html/summary.png
vnstati -h -i eth3 -o /var/www/html/hourly.png
vnstati -d -i eth3 -o /var/www/html/daily.png
vnstati -t -i eth3 -o /var/www/html/top10.png
vnstati -m -i eth3 -o /var/www/html/monthly.png

Plus qu’à l’ajouter en cron. Toujours en root sur mon chroot Syno bien entendu.

crontab -e

Et y ajouter cette ligne. Le 0 * * * * = toutes les heures. Mais pour tester on peut mettre toutes les minutes avec * * * *

0 * * * * sh /home/ayx/vnstat.sh

Puis relancer le cron

service cron restart

 

Et voilà !

Sélection_004

Sélection_003

 

C’est carrément overkilled comme truc, je sais ;-)

 

Mots clés