NtopNG

NtopNG jpp

Ntop    
C'est un logiciel assez ancien dont la maintenance et l'évolution sont suivis et continus, le projet est très actif en 2023/2024. De nouvelles versions sont présentées assez souvent et donnent toujours de nouvelles possibilités de suivi et d'analyse, la plus marquante, déjà ancienne était la première version "NG".

NtopNG : version 1.2

NtopNG : version 1.2 jpp

Note Juin 2016 : un test d'une version plus récente (2.2) est disponible ici. 
Note Octobre 2016 : notes sur la version 2.4 disponibles ici. 
Note Avril 2018 : Présentation de la version 3.5 c'est lài. 
Utilisateur de longue date de NTOP j'ai voulu tester cette nouvelle version 1.2 NG, comme elle n'existe pas dans les dépôts Debian standard je l'ai donc compilée depuis les sources. 

Première chose : vérifier les pré-requis : 
autotools-dev libtool 
libgeoip1 libgeoip-dev 
libsqlite3-dev libxml2-dev 
redis-server 
libglib2.0-dev 
Si cette dernière n'est pas chargée vous aurez un message à la compilation (cf ci-dessous). 
Charger le paquet (1.2.1 à ce jour) dans un répertoire tranquille : 
cd MON_REPERTOIRE_SOURCES 
wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.2.1.tgz 
cd MON_REPERTOIRE_BUILD 
tar -xvf ../ntopng-1.2.1.tgz 
cd ntopng-1.2.1 
./autogen.sh 
./configure 2>&1 | tee CONFIGURE.LOG 
qui vous rappelle à la fin de faire un "make geoip" qui charge les fichiers de données de localisation, on l'effectuera après la compilation. 
make 2>&1 | tee MAKE.LOG 
qui se termine cette première fois par une erreur : 
configure: error: Please fix the library issues listed above and try again. 
make[1]: Entering directory `/usr/src/PGM/BUILD/ntopng-1.2.1/third-party/rrdtool-1.4.8/src' 
make[1]: *** No rule to make target `librrd_th.la'.  Stop. 
make[1]: Leaving directory `/usr/src/PGM/BUILD/ntopng-1.2.1/third-party/rrdtool-1.4.8/src' 
make: *** [third-party/rrdtool-1.4.8/src/.libs/librrd_th.a] Error 2 
En remontant un peu dans le LOG on trouve quelques warnings concernant glib2.0 : 
I could not find a working copy of glib-2.0. 
Check config.log for hints on why this is the case. Maybe you need to set 
LDFLAGS and CPPFLAGS appropriately so that compiler and the linker can find 
libglib-2.0 and its header files. If you have not installed glib-2.0, 

Il semble manquer les fichiers de développement de GLIB2 --> 
apt-get install libglib2.0-dev 
et on relance : 
make clean 
./configure 
make 2>&1 | tee MAKE.LOG 

La compilation est assez longue sur ce brave CoreI3. Comme je n'ai pas utilisé de paramètres spécifique de répertoires l'installation se fera dans "/usr/local". 
On peut constater que de nombreuses extensions tierces parties sont aussi compilées. 
On lance maintenant le "make geoip" qui nous récupère sans problèmes les fichiers de localisation géographique. 
Le fichier "Makefile" est très instructif, on y voit par exemple que ce paquet contient de quoi fabriquer ".deb" et ".rpm" pour installation sur d'autres machines. 

On passe en "root" pour le "make install" qui s'effectue sans aucun problème. 
Une étude plus détaillée des répertoires montre "packages/etc" avec deux répertoires "init" et "init.d" comprenant le script de démarrage et le répertoire "ini" la mise en place est rapide : 
cd packages/etc/init.d 
cp ntopng /etc/init.d 
mkdir /etc/ntopng 
cp ../init/ntopng.conf /etc/ntopng 
update-rc.d ntopng defaults 

Comme notre installation a été faite en mode "développement" (programmes dans /usr/local) il faut rectifier légèrement le script de lancement et modifier la variable NTOPNG_BINARY de "/usr/bin/ntopng" en "/usr/local/bin/ntopng". 
Ne pas "oublier" de créer le fichier "ntopng.start" dans /etc/ntopng : 
touch /etc/ntopng/ntopng.start 
Il faut ajouter quelques "broquilles" a "/etc/ntopng/ntopng.conf" : 
--user=ntopng 
User qui sera utilisé, c'est important pour les droits sur le répertoire "data" et le fichier "PID". 
-G=/var/lib/ntopng/ntopng.pid 
Avec un seul tiret ! Celui-ci fixe le nom du fichier "pid", utilisé pour stopper le démon, mais attention le fichier est ouvert par le user "nobody" qui, au moins sur une Debian, n'a pas de droits sur /run (ou /var/run). 
Avec un user personnalisé et un répertoire propre aucun problème. 
--local-networks "192.168.1.0/24" 
Pour fixer le ou les réseaux locaux (liste entre " séparée par des virgules) 
--interface eth0 
--interface eth1 
Pour fixer les interfaces à utiliser (une ligne par interface), ici je laisse tomber l'interface "lo". 
--data-dir /var/lib/ntopng 
Un répertoire  à créer avec droits lecture/écriture pour le user choisi : Ntop stocke ici les fichiers nécessaires y compris les RRD, il faut prévoir un peu d'espace disque. 
--packet-filter="ip and not proto ipv6 and not ether host ff:ff:ff:ff:ff:ff and not net (224.0.0.0/8 or 239.0.0.0/8)" 
Pour éliminer beaucoup de trafic "inintéressant", je n'ai pas IPV6 et les broadcast prennent de la place. 
--http-port 3001 
Si le port standard de 3000 vous déplaît. 
--daemon 
A ne pas louper ....

Avant de lancer le démon il faut encore :

  • Créer le user ntopng
  • Créer le répertoire /var/lib/ntopng et rendre "ntopng" propriétaire : chown ntopng:ntopng /var/lib/ntopng
  • Cataloguer le démon :  update-rc.d ntopng default
  • Lancer le démon : service ntopng start


On peut ensuite se connecter sur localhost:3001 avec les mots de passe par défaut admin/admin, comme c'est original ! 
Depuis cet interface on peut créer d'autres utilisateurs et modifier le mot de passe par défaut de "admin".

L'interface est très riche et dispose de nombreuses fonctions, la génération d'alertes est parfois gênante ... et je n'ai pas encore testé les fonctions LUA.

NtopNG : version 2.2

NtopNG : version 2.2 jpp

Note Août 2016 : il existe une version plus récente, (2.4) voir ici l'article correspondant. 
Note Avril 2018 : voir ici les détails sur la version 3.5.

Cette nouvelle version permet entre autres choses l'historisation des flux dans une base Mysql. 
Les tests ont été réalisés dans une Machine Virtuelle fraîchement créée afin de mieux cerner les pré-requis. 
J'ai d'abord installé un ensemble de compilation (make ... gcc-4.9), et Vim mon editeur préféré. 
Ah, au passage mettez votre utilisateur "standard" dans la liste des "sudoers" avec la maximum de droits (on est sur une MV de tests), cela servira plus tard.

Pour les pré-requis il suffit de : 
build-essential git libglib2.0 libxml2-dev libpcap-dev 
libtool libtool-bin rrdtool librrd-dev 
autoconf automake autogen 
redis-server wget libsqlite3-dev libhiredis-dev libgeoip-dev 
libcurl4-openssl-dev libpango1.0-dev libcairo2-dev libpng12-dev 
libmysqlclient-dev ethtool 
Un "apt-get toute_cette_liste" est à lancer ... qui installe plein de trucs supplémentaires (#72Mo à télécharger).

Il faut aussi un serveur de base de données Mysql ou MariaDB, pour faire bonne mesure un "apt-get mysql-server-5.5 mysql-client-5.5" installe le gestionnaire de BDD. 
Petite remarque, l'installation de Mysql signale une valeur "deprecated" : 
Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead. 
Autant modifier ce paramètre tout de suite dans la config : remplacer "key_buffer" par "key_buffer_size".

Après cette petite parenthèse on peut, en continuant la lecture du "README.compilation" se lancer dans la compilation du logiciel.

A partir d'ici abandonner le user "root" et utiliser le user avec droits "sudo", "sudo" pourra être utilisé lorsque le besoin s'en fait sentir, mais "sudo" est de toute façon utilisé au cours de certains scripts. 
D'abord, récupérer les sources (c'est un gros paquet de plus de 90Mo), à la date d'écriture de cet article c'est la version 2.2 : 
wget https://sourceforge.net/projects/ntop/files/ntopng/ntopng-2.2.tar.gz/download -O ntopng-2.2.tar.gz 
La version installée est, en fait, une version 2.3 : 
ntopng --version 
v.2.3.160619 [Community Edition]

On le détare ensuite dans un répertoire tranquille et on est (presque) prêts. 
Le répertoire "doc" contient plein de fichiers README dont l'un contient tous les pré-requis à la compilation et au fonctionnement de Ntopng, cela semble être le pied! 
=========================================== 
cd le_repertoire_ntopng 
./autogen.sh 
./configure 
Beaucoup de choses se passent et à la fin on vous rappelle de lancer : "make geoip" pour mettre à jour la base géographique. Je m'empresse de lancer cette commande avant toute chose et cela charge les bases "Lite" de Maxmind pour IPV4 et IPV6. 
On peut enfin lancer le "make" en gardant les traces : 
make 2>&1 | tee LOG.MAKE 
La compilation est assez longue, mais elle compile plusieurs applications : 
detectxsslib 
hiredis 
json-c 
lsqlite3 
LuaJIT-2.0.3 
mongoose 
patricia 
rrdtool-1.4.8 
snmp 
zeromq-4.1.3 
On est ainsi certain d'utiliser des versions spécifiques nécessaires au bon fonctionnement du logiciel. 
L'option "install" de make vous recommande de créer un package à installer et fournit les outils nécessaires : 
Make sure you have already run 'make geoip' to also install geoip dat files 
While we provide you an install make target, we encourage you 
to create a package and install that 
rpm - do : 
make build-rpm 
deb - do : 
cd packages/ubuntu 
./configure 
make 
J'essaye le paquet Debian/Ubuntu 
Le "./configure" a créé un fichier README qui conseille d'installer quelques paquets complémentaires "apt-get install debhelper fakeroot dpkg-sig" qui dans mon cas n'installe que "dpkg-sig libconfig-file-perl". 
Je m'empresse de lancer le "make" 
make 2>&1 | tee MAKE.LOG 
qui démarre très fort en utilisant "sudo", la package est créé et à la fin, la signature échoue car aucune signature GPG n'est disponible. A part cette erreur le paquet semble OK et un contrôle du paquet donne un résultat correct : 
dpkg -I  ntopng_2.3.160619-757_i386.deb 
 new debian package, version 2.0. 
 size 4648220 bytes: control archive=12748 bytes. 
      47 bytes,     1 lines      conffiles             
     309 bytes,    10 lines      control               
   30016 bytes,   357 lines      md5sums               
     667 bytes,    38 lines   *  postinst             #!/bin/sh 
     101 bytes,     9 lines   *  postrm               #!/bin/sh 
     664 bytes,    35 lines   *  preinst              #!/bin/sh 
     387 bytes,    16 lines   *  prerm                #!/bin/sh 
 Package: ntopng 
 Version: 2.3.160619-757 
 Architecture: i386 
 Maintainer: Luca Deri <deri@ntop.org> 
 Installed-Size: 19479 
 Depends: libsqlite3-0, libgeoip1, redis-server, librrd4, logrotate, libcurl3 
 Recommends: ntopng-data, pfring-dkms 
 Section: free 
 Priority: optional 
 Description: Web-based traffic monitoring. 
Il est maintenant temps d'essayer ce paquet : 
dpkg -i ntopng_2.3.160619-757_i386.deb 
Sélection du paquet ntopng précédemment désélectionné. 
(Lecture de la base de données... 138081 fichiers et répertoires déjà installés.) 
Préparation du dépaquetage de ntopng_2.3.160619-757_i386.deb ... 
Dépaquetage de ntopng (2.3.160619-757) ... 
Paramétrage de ntopng (2.3.160619-757) ... 
Rebuilding ld cache... 
Adding the ntopng startup script 
Making the /etc/ntopng directory... 
Traitement des actions différées (« triggers ») pour systemd (215-17+deb8u4) ... 
Traitement des actions différées (« triggers ») pour man-db (2.7.0.2-5) ... 
Traitement des actions différées (« triggers ») pour libc-bin (2.19-18+deb8u4) ... 
C'est tout ? Pas d'installation de base de données .... ni rien ? 
Un script d'init a été installé, donnons lui un petit coup de "service ntopng start" ... le service se lance et crée un fichier minimal de config  "ntopng.conf" de 1 ligne dans /etc/ntopng : 
-G=/var/tmp/ntopng.pid 
Le programme est bien lancé et attends sur le port 3000, voyons donc ce qui se passe sur ce port --> Iceweasel, pardon Firefox, sur le port 3000. 
Un écran de login tout à fait semblable à celui de la version précédente ... un admin/admin (user/mot de passe par défaut) plus loin l'écran des "top flow talkers" s'affiche, tout a l'air de fonctionner, l'aspect général est semblable à celui de NtopNG 1.2. 
En allant voir les préférences je trouve bien trace d'une base Mysql et d'une durée d'historisation, mais pas de couple user/password ? Un certain nombre de paramètres utiles pour les fichiers RRD afin de na pas épuiser son espace disque tout en gardant le détail voulu. 
En examinant les logs (fichier "messages") quelques lignes concernent Ntopng : 
ntopng: [NetworkInterface.cpp:950] WARNING: If you have TSO/GRO enabled, please disable it 
ntopng: [NetworkInterface.cpp:952] WARNING: Use: sudo ethtool -K eth0 gro off gso off tso off 
Je m'empresse de lancer la commande citée : 
ethtool -K eth0 gro off gso off tso off 
et de redémarrer Ntopng.

Au niveau de Mysql, aucune base n'a été créée et je n'ai pas trouvé les scripts de création ni les paramètres correspondants. 
Pour utiliser Mysql il faut lancer Ntopng avec une option '-F mysql paramètres" et pour cela aucune il suffit de modifier le fichier de config en y ajoutant une ligne : 
Les paramètres sont sous la forme : 
mysql;<host>;<dbname>;<table name>;<user>;<pw> 
soit pour moi : 
-F=mysql;localhost;ntopng;ntopng;userntop;passntop 
Les tables seront donc dans une base "ntopng" (à créer) et aurons pour préfixe "ntopng" et Ntopng se connectera avec "userntop/passntop". 
Les tables sont ici :

  • ntopngV4_0 pour les IP V4 "externes" 
    ntopngV4_1 pour les IP V4 "locales", ici 127.0.0.1 sans autre paramétrage
  • ntopngV6_0 pour les IPV6 "externes"
  • ntopng_V6_1 pour les IPV6 "locales"

Ces tables comportent toutes les infos nécessaires, adresses,ports,nombre de paquets, nombre d'octets transférés, date de début et de fin (unix "epoch" format) une partie "INFO" dont le contenu est très intéressant car il contient, par exemple, le contenu de la demande dans le cas des appels à un DNS. Pour la partie "Json" je n'ai pas analysé le contenu exact.

Voir en annexe quelques scripts sql simples pour commencer.

Attention, la taille de la base peut rapidement devenir conséquente selon l'activité, un délai de conservation est d'ailleurs prévu dans les paramètres et fixé par défaut à 1 jour. Il faudra certainement créer des tables d'historisation condensées si on veut conserver un historique plus long. 
Je vais rapidement générer et installer un paquet Debian 64 bits pour remplacer la version 1.2 précédente sur la machine "pont" vers Internet.

NtopNG : version 2.4

NtopNG : version 2.4 jpp

Cette dernière version apporte un plus intéressant (déjà présent en version 2.2) mais je n'ai pratiquement pas testé la 2.2 car la 2.4 Stable est parue peu après mes tests. 
Note 2017 : voir tests de la version 3.1. 
Les tests de cette version sont présentés dans plusieurs "chapitres" :

NtopNG version 2.4 : Installation

NtopNG version 2.4 : Installation jpp

Télécharger la version 2.4 Stable par : 
https://sourceforge.net/projects/ntop/files/ntopng/ntopng-2.4-stable.tar.gz/dow… 
Les pré-requis de la 2.2 (voir article précédent) sont déjà installés, on va essayer de compiler la 2.4 directement : 
./autogen.sh 
Qui se passe bien et nous invite à lancer "configure". 
./configure 2>&1 | tee LOG.CONFIGURE 
Qui semble se dérouler sans accroc et nous rappelle de lancer "make geoip" avant d'utiliser le logiciel. On le lance tout de suite pour être sûr de ne pas oublier ! Cela se dépêche de charger les fichiers de maxmind (IPV4 et IPV6), puis on lance le make final : 
make 2>&1 | tee LOG.MAKE 
Et ... tout se termine correctement.  
Donc si vous avez installé les pre-requis de la version 2.2 il n'y aura probablement aucun problème lors de la compilation. 
Avant de lancer la nouvelle version on détruit les tables de notre user "NtopNG" de la base Mysql car ce n'est pas la meme structure de tables (1 table par interface en 2.2) et quelques champs supplémentaires. 
Comme indiqué en fin de compilation il est aussi possible de générer un paquet (RPM ou DEB) et cette option est même conseillée. A part un petit problème avec la "clef" qui déclenche une petit erreur, le package Debian se génère parfaitement et je l'ai installé sur une autre machine. Je vous conseille cette méthode, tout est expliqué dans le message ... :

cd packages/ubuntu 
./configure 
make 
........ 
Processing ../ntopng_2.4.161017-1373_amd64.deb... 
gpg: error reading key: public key not found 
gpg: no default secret key: secret key not available 
gpg: /tmp/debsigs-ng.eP5yVK/digests: clearsign failed: secret key not available 
E: Signing failed. Error code: 512 
Makefile:10: recipe for target 'ntopng' failed 
make: *** [ntopng] Error 1

L'erreur ne gêne pas la réalisation du paquet, elle ne concerne que la signature,  qui est alors disponible dans le répertoire ".../packages" : 
-rw-r--r-- 1 root root     698 oct.  17 22:42 ntopng_2.4.161017-1373_amd64.changes 
-rw-r--r-- 1 root root 4903998 oct.  17 22:42 ntopng_2.4.161017-1373_amd64.deb

On peut aussi procéder de manière traditionnelle, un petit "su root" et on lance le non moins traditionnel : 
make install 2>&1 | tee LOG.INSTALL 
et on relance le service sans changer nos paramètres de la version 2.2 : 
service ntopng start 
Pour rappel le fichier cd config "/etc/ntopng/ntopng.conf" est minimal : 
-G=/var/tmp/ntopng.pid 
-F=mysql;localhost;ntopng;flows;userntop;passntop 
Le fichier log (/var/log/ntopng/ntopng.log) nous signale que tout va bien et que tous les interfaces sont pris en compte. 
Du coté de la base Mysql seules deux tables on été créées :

show tables; 
+------------------+ 
| Tables_in_ntopng | 
+------------------+ 
| flowsv4          | 
| flowsv6          | 
+------------------+ 
2 rows in set (0.00 sec)

L'analyse sera plus simple qu'en 2.2 car seules deux tables contiennent les données. Changement important dans la structure, les volumes échangés (bytes) sont subdivisés en IN_BYTES et OUT_BYTES. 
Les interfaces étant en mode "promiscuous" tous les paquets passant sur le réseau aux alentours de vos interfaces sont enregistrés. 
La zone "INFO" contient souvent des infos intéressantes, notamment pour le protocole DNS. Le champ INTERFACE_ID permet de repérer les différents interfaces, le champ NTOPNG_INTERFACE_NAME contient le nom de la machine d'origine, on pourra ainsi utiliser une seule base Mysql pour plusieurs capteurs NtopNG. Le numéro de VLAN est enregistré, ici c'est toujours zéro car je n'utilise pas de VLAN sur mon tout petit réseau. 
Pour le champ "PROTOCOL" c'est le standard (TCP = 6, UDP = 17, ICMP = 1) on trouve cela dans tous les bons Wikipedia. 
Attention, le volume de données dans la base est assez conséquent, sur un réseau un peu fréquenté on dépassera rapidement les 200 000 rangs prévoir le stockage adéquat ! 
Il faudra aussi prévoir une petite purge des tables au cas ou celle de Ntop ne soit pas suffisante. Il faut ensuite faire un peu de SQL pour exploiter les données enregistrées. 
Après quelques minutes d'activité vous devriez voir quelques rangs dans votre base Mysql, pour commencer essayez  le scripts SQL suivant :

select inet_ntoa(IP_SRC_ADDR) as IP_SRC, 
inet_ntoa(IP_DST_ADDR) as IP_DST,L4_DST_PORT, 
sum(IN_BYTES) as IN_BYTES,sum(OUT_BYTES) as OUT_BYTES,PACKETS 
from flowsv4 
where IP_DST_ADDR not in (inet_aton('127.0.0.1'),inet_aton('192.168.1.31') ) 
group by IP_SRC_ADDR, IP_DST_ADDR,L4_DST_PORT 
order by IP_SRC

ou encore celui-ci :

SELECT INTERFACE_ID,L7_PROTO,inet_ntoa(IP_SRC_ADDR) as IPSRC,L4_SRC_PORT, 
inet_ntoa(IP_DST_ADDR) as IP_DST,L4_DST_PORT, 
IN_BYTES,OUT_BYTES,PACKETS, 
FROM_UNIXTIME(FIRST_SWITCHED),FROM_UNIXTIME(LAST_SWITCHED), 
INFO,JSON 
FROM ntopng.flowsv4 
order by FIRST_SWITCHED,IP_SRC_ADDR

qui devraient vous afficher les résultats de manière claire et avec des adresses lisibles !

NtopNG : Myisam à Innodb

NtopNG : Myisam à Innodb jpp

Note : valable aussi en V2.4 et V3.0. 
Les deux tables créées par NtopNG sont d'office en MyISAM, si, comme moi, vous avez d'autres tables en InnoDB dans votre base vous allez vouloir profiter des buffers de InnoDB pour vos traitements. 
Par ailleurs, en cas de crash, InnoDB est plus "sûr" que MyISAM.
Mais, car il y a un "mais", si vous faites cette modification "à la main" pour passer les deux tables de MyISAM en InnoDB, ce qui est simple, un simple "alter table truc engine = innodb" ne suffit pas ! 
Si vous le faites, NtopNG s'empressera lors du prochain démarrage de repasser la table en MyISAM ! Et ce sans rien vous demander. 
La seule manière pour réaliser l'exploit de passer en InnoDB est d'aller modifier les sources du paquet. 
Le module "MySQLDB.cpp" vous tend les bras dans le répertoire "src". Il suffit de modifier quelques constantes "MyISAM" --> "InnoDB" aux environs de la ligne 310 pour ressembler à ceci :

// Modify database engine to MyISAM (that is much faster in non-transactional environments) 
  for (u_int16_t i = 0; i < sizeof(ipvers); i++){ 
    snprintf(sql, sizeof(sql), 
         "SELECT 1 " 
         "FROM information_schema.TABLES " 
         "WHERE TABLE_SCHEMA='%s' " 
         "AND TABLE_NAME='%sv%hu' " 
         "AND ENGINE='MyISAM' ", 
         ntop->getPrefs()->get_mysql_dbname(), 
         ntop->getPrefs()->get_mysql_tablename(), 
         ipvers[i]); 
    if(exec_sql_query(&mysql, sql, true, true) > 0){ 
      // if here, the table has enging InnoDB so we want to modify that to MyISAM 
      ntop->getTrace()->traceEvent(TRACE_NORMAL,

    ntop->getTrace()->traceEvent(TRACE_NORMAL, 
                   "MySQL schema update. Altering table %sv%hu: " 
                   "changing engine from Myisam to InnoDB.", 
                   ntop->getPrefs()->get_mysql_tablename(), ipvers[i]);

      snprintf(sql, sizeof(sql), 
           "ALTER TABLE `%sv%hu` ENGINE='InnoDB'", 
           ntop->getPrefs()->get_mysql_tablename(), ipvers[i]); 
      exec_sql_query(&mysql, sql, true, true);

  
Après une petite recompilation et la régénération du paquet on ré-installe et au premier démarrage nos tables sont migrées en InnoDB, automatiquement et sans rien demander ! 
Attention; si vos tables sont un peu volumineuses, cela dure un certain temps ! Et demande de l'espace disque (environ le double de l'espace occupé par la table MyIsam.

NtopNG : début d'analyse des données

NtopNG : début d'analyse des données jpp

J'ai installé NtopNG, par le paquet Debian généré lors de la compilation, sur la machine qui me sert de frontal internet et j'ai commencé à analyser un peu les données enregistrées. D'abord, ça crache épais, je suis actuellement seul à la maison et donc le trafic est un peu réduit. Quelques procédures exemples sont téléchargeables en fin de page. 
Le petit ordre SQL suivant donne un comptage sans prétentions :

SELECT DAY(from_unixtime(FIRST_SWITCHED)),count(*) 
 FROM ntopng.flowsv4 
group by 1

Ramène : 
2   22037 
3   77469 
On est le 3 août vers 20h00 et j'ai démarré le zinzin hier soir, j'ai bossé toute la journée ... et quand même plus de 100000 flux enregistrés ! 
J'ai aussi extrait les adresses IP et j'ai crée une table  IP,PAYS,AS,nom de domaine (voir en fin de page les liens de téléchargement) .... sur ces deux jours j'ai déjà "repéré" plus de 1700 adresses différentes ... provenant de 88 pays. Quand on parle de mondialisation ... 
Bien sûr certains pays sont représentés par une seule adresse. Le petit tableau suivant montre les pays pour lesquels j'ai "collecté" plus de 10 adresses ... :.

                                      PAYS                  

                        count(*)

US     

535

CN     

133

FR     

122

VN     

94

BR     

94

RU     

79

KR     

64

TW     

63

NL     

60

IN     

36

EU     

34

DE     

30

JP     

28

RO     

24

CO     

22

TR     

21

MX     

17

UA     

16

ES     

13

PL     

12

GB     

12

CA     

12

ID     

12

IT     

10

C'est déjà pas mal.

Les Chinois, les russes et les vietnamiens sont systématiquement bloqués par le pare-feu, mais NtopNG enregistre toutes les connexions. Attendons 23:59 pour avoir une journée complète. 
Il est 23:59, statistique sur une journée complète.

 

Visiblement il n'y a pas d'heures pour les braves, il y en a toute la journée.

Télécharger les scripts : 
La création de la table IPV4_DOMAINE, renommez le en ".sql" pour faire bien ! 
La création des index complémentaires sur la table "flowsv4", idem pour le ".sql" 
Le script bash "MAJ_DOMAINE" à renommer en .sh  (nécessite le script DNS_RES) 
Le script bash DNS_RES à renommer en .sh, qui cherche les PAYS,noms DNS, FAI à intégrer dans la base. 
Ce dernier script nécessite l'installation des outils "geoip".

NtopNG : version 3.1

NtopNG : version 3.1 jpp

Note Avril 2018 : voir l'article sur la version 3.5. 
Note décembre 2017 : cet article reste valable pour les versions 3.2 et 3.3.

Depuis quelques temps chaque connexion à l'interface WEB de NtopNG me rappelle qu'il existe une version 3.x ... que je vais essayer d'installer et de tester. 
Pour mémoire paquets de dev installés pour la V2.4 : 
apt-get install build-essential git bison flex libglib2.0 libxml2-dev libpcap-dev libtool rrdtool librrd-dev autoconf automake autogen redis-server wget libsqlite3-dev libhiredis-dev libgeoip-dev libcurl4-openssl-dev libpango1.0-dev libcairo2-dev libpng-dev libmysqlclient-dev libnetfilter-queue-dev libmysqlclient-dev zlib1g-dev libzmq3-dev

A priori quelques nouvelles bibliothèques ou include de développement a résoudre par : 
apt-get install default-libmysqlclient-dev libmariadbclient-dev libmariadbclient-dev-compat libpng-dev libcap-dev libldap2-dev 
En principe mes systèmes sont "à jour" de la dernière version. 
Par contre, pas de "tar.gz" à télécharger directement, tout passe par clonage de dépots "git". 
Créer un répertoire de compilation, par exemple "ntopng-3.0" dans un endroit tranquille, ici /usr/src/PGM/BUILD. 
Attention à l'ordre des opérations ! 
On récupère les sources de nDPI dans le dépot github :

cd le_répertoire_de_compilation 
git clone https://github.com/ntop/nDPI.git

On les compile :

cd nDPI 
./autogen.sh 2>&1 | tee LOG.AUTOGEN 
./configure 2>&1  | tee LOG.CONFIGURE 
make 2>&1         | tee LOG.MAKE

La lecture des fichiers résultats permet de repérer les erreurs éventuelles. 
Pour moi, tout s'est bien passé ... 
Si chacune des deux étapes s'est exécutée sans erreurs on peut passer à la suite. 
Récupérer les sources de Ntop :

cd le_répertoire_de_compilation ( ou cd .. si vous étiez dans nDPI) 
git clone https://github.com/ntop/ntopng.git 
cd ntopng 
Ici corriger éventuellement MyISAM --> InnoDB (détails ici). 
./autogen.sh 2>&1 | tee LOG.AUTOGEN 
./configure 2>&1  | tee LOG.CONFIGURE 
make 2>&1         | tee LOG.MAKE

Un petit message en fin d'exécution vous rappelle qu'il faudra charger les données GeoIP : 
Please do not forget to download GeoIP databases doing: "make geoip" 
On peut même le faire de suite ... 
La compilation se passe bien avec juste quelques "warnings" à la fin : 
/usr/bin/ld: warning: libssl.so.1.0.2, needed by /usr/lib/x86_64-linux-gnu/libcurl.so, may conflict with libssl.so.1.1 
/usr/bin/ld: warning: libssl.so.1.0.2, needed by /usr/lib/x86_64-linux-gnu/libcurl.so, may conflict with libssl.so.1.1 
/usr/bin/ld: warning: libcrypto.so.1.0.2, needed by /usr/lib/x86_64-linux-gnu/libcurl.so, may conflict with libcrypto.so.1.1 
Effectivement les systèmes Debian actuels disposent aujourd'hui de trois versions de libssl et libcrypto (1.0.0, 1.0.2 et 1.1), ce qui pourrait poser parfois des problèmes. 
Mais peut-être plus grave les warnings suivants : 
src/Utils.cpp:1468:67: warning: ‘int readdir_r(DIR*, dirent*, dirent**)’ is deprecated [-Wdeprecated-declarations] 
   for (ret = readdir_r(d, &entry, &result); result && !ret; ret = readdir_r(d, &entry, &result)) {                                                                   ^~~~~~~~~ 
In file included from /usr/include/features.h:364:0, 
                 from /usr/include/stdio.h:27, 
                 from /usr/src/PGM/BUILD/ntopng-3.0/ntopng/include/ntop_includes.h:33, 
                 from src/Utils.cpp:22: 
/usr/include/dirent.h:189:12: note: declared here 
 extern int __REDIRECT (readdir_r,

Il est possible que vous obteniez, comme moi, des messages lors du "make" tels que : 
"aclocal-1.11: command not found" 
En effet Debian Stretch est construit avec aclocal-1.15, une solution brutale : 
sudo ln -s /etc/alternatives/aclocal /usr/bin/aclocal-1.11

Lorsque vous exécuter le fatidique "make install 2>&1 | tee LOG.INSTALL"

  • Le binaire "ntopng" est copié dans /usr/local/bin
  • On vous rappelle de faire un "make geoip"
  • On vous donne au passage la méthode pour réaliser un RPM ou un DEB : 
            rpm - do 'make build-rpm' 
            deb - do 'cd packages/ubuntu;./configure;make

Si vous voulez créer un paquet Debian il faudra installer le paquet "dpkg-sig" ou modifier le Makefile.in en commentant les lignes "dpkg-sig .....". 
J'ai ensuite généré le package Debian, et obtenu deux paquets : 
ntopng_3.1.171028-3630_amd64.deb 
ntopng-data_3.1.171028_all.deb 
Que je me suis empressé d'installer, sans succès car il me manque "PF_RING" ! 
Remarque : les fichiers "GeoIP" sont chargés et installés dans le paquet "data". Il faudra néanmoins penser à les rafraîchir de temps en temps. 
Note : après usage NtopNG recharge régulièrement les données pour les "blacklisted hosts", je n'ai pas vu de rechargement des données GeoIP --> les rafraîchir ne peut pas faire de mal ! 
J'ai téléchargé un stock de ".deb" depuis : 
http://packages.ntop.org/debian/stretch/x64/PF_RING 
J'ai téléchargé le paquet le plus récent : pfring_7.1.0-1515_amd64.deb 
qui dépends de pfring-dkms-7.1.0 que l'on peut charger avec : 
http://packages.ntop.org/ubuntu/16.04/all/PF_RING-dkms 
et prendre la version 7.1.0 compatible avec la précédente. Son installation génère un module de kernel qui est installé dans la foulée, on peut alors installer "pfring_7.1.0-1515_amd64.deb" puis les deux paquets "ntopng". 
Le lancement semble OK et le port HTTP (3002 pour moi) est activé. 
Vite quelques essais !

Ntopng 3.1 tests

Ntopng 3.1 tests jpp

Avant le premier lancement il est conseillé de lire la doc .... surtout s'il s'agit d'une nouvelle version majeure comme ici. 
Après vérification du format des paramètres (il ne semble pas avoir changé) dans la doc PDF fournie parmi les sources (doc/UserGuide.pdf) je m'aperçois que pas grand chose n'est changé. A part une possibilité de permettre une connection sans user/password pour tout le monde ou pour "localhost" seulement, je mets donc "--disable-login=1" dans le fichier paramètres puisque l'interface n'est accessible que sur le réseau interne. 
Je lance donc NtopNG et me connecte sur http://localhost:3002 avec Firefox et j'obtiens un beau message : 
Database schema migration in progress, waiting for database ntopng to become operational. You will be redirected as soon as the database is ready. Depending on the size of the existing database, this operation can take a long time. Migrations are performed only once and only during major version upgrades. If in doubt, please contact the developers at info@ntop.org. 
J'attends quelque peu en examinant le log dans /var/tmp/ntopng/ntopng.log et j'y trouve, entre autres, 
MySQL schema update. Altering table flowsv4: changing OUT_BYTES data type to unsigned int. 
Après quelques instants je relance la connexion et miracle ... j'accède à l'interface. 
Il est recommandé d'aller faire un tour dans les préférences pour régler l'application, notamment la durée de conservation des données et un certain nombre d'options.

A première vue cela ressemble beaucoup à l'ancien interface, mais en regardant d'un peu plus près il y a beaucoup de nouveautés. Par exemple dans les "flows" les connexions provenant de certaines IP sont signalées d'une petite étiquette rouge "blacklisted host" et on retrouve cette indication dans les alertes. Ces "blacks IP" sont reconnues d'après les données du site EmergingThreats (http://rules.emergingthreats.net). 
Le "traffic dashboard" est plein d'options intéressantes :

  • "Hosts" : camembert des "top hosts"
  • "Ports" : deux camemberts sur les ports utilisés (client et serveur). camemberts top ports
  • "Applications" : camembert sur les protocoles utilisés. 
    camembert top applications

Le menu "Hosts" offre (les adresses sont suivies du drapeau de chaque pays) :

  • "Hosts", avec option de tri par clic sur les en têtes de colonnes, ici aussi les "blacklisted hosts" sont signalés.
  • "Networks" : liste condensée des réseaux, cliquer sur "Remore Networks" pour obtenir le détail.
  • "host pools" : lié à la possibilité d'attribuer chaque adresse à un "pool", attention le nombre de pools et d'adresses par pool sont limités (au moins dans la version "open".
  • "Autonomous Systems" : tri par AS avec possibilité d'obtenir un graphe du débit sur chaque AS, les graphes sont "cliquables" pour zoomer ! La granularité du graphe va de 5minutes à 1 an ! On peut ici obtenir les flows correspondant à cet AS.
  • "Countries" : comme son nom l'indique.
  • "Operating system" : le seul repéré est mon téléphone ??? A suivre.
  • "Geomap" : nécessite d'avoir été compilé avec une option spéciale ... et éventuellement une clé API Google.
  • "Local flow matrix" : comme son nom l'indique une matrice des flux locaux. 
    Image local flow matrix

Dans les "outils" l'option "Export Data" permet de récupérer les données au format JSON qui contient énormément d'informations dont je n'ai pas fait l'inventaire car le format a l'air assez complexe. 
Autres possibilités :

  • Déclencher des alertes sur certaines conditions.
  • Propager des alertes sur "Slack".
  • Dump paramétrable de flux.

En bref, énormément de possibilités de visualisation de ce qui passe dans les tuyaux.

Notes :

  1. Attention à l'espace disque (RRDs dans /var/tmp/ntopng et Mysql) et à la charge de la base Mysql/MariaDB, bien ajuster la durée de conservation à vos besoins. Si vous souhaitez garder un historique long (des mois ...) de la base Mysql faites le sur une autre machine avec report périodique automatisé.
  2. J'ai du désactiver "Network Discovery" car j'ai utilisé la possibilité de lancer NtopNG en non-root sur un user "ntopng" disposant de peu de droits. Network Discovery me générait des erreurs dans les logs '" : 
    [NetworkDiscovery.cpp:48] ERROR: Unable to create pcap socket [1/Operation not permitted] 
    ou encore : 
    ntopng: [Lua.cpp:2147] ERROR: Unable to enable capabilities

Je dois investiguer l'origine de ce message.

NtopNG : utilisateur non root

NtopNG : utilisateur non root jpp

Si vous voulez que NtopNG soit lancé en utilisateur non privilégié il faut utiliser l'option : 
"--user=....". 
J'ai donc créé un user "ntopng" du même groupe sans droits particuliers. Il ne faut dans ce cas pas oublier d'adapter les droits sur le répertoire de travail de NtopNG :  
cd /var/tmp chown -R ntopng:ntopng ntopng chmod -R 755 ntopng  
Toutefois cette possibilité déclenche des erreurs telles que :  
[Lua.cpp:2147] ERROR: Unable to enable capabilities 
[NetworkDiscovery.cpp:48] ERROR: Unable to create pcap socket [1/Operation not permitted] 
[NetworkDiscovery.cpp:231] ERROR: MDNS Send error [1/Operation not permitted 
[NetworkDiscovery.cpp:261] ERROR: Send error [1/Operation not permitted]  
J'ai du désactiver l'option "Network Discovery" en attendant de trouver une solution car OSSEC me signalait chacune de ces erreurs ... toutes le 15 minutes et OSSEC envoyait un message d'alerte à ce sujet. 
Recherche en cours (problème de "capabilities" ? Lié à libcap ?). 
Finalement le problème s'est réglé tout seul ?

NtopNG : version 3.5

NtopNG : version 3.5 jpp

Compilation de NTOPNG 3.5, dernière version issue du git du projet (2018/03). 
Mon installation est toujours en version 3.3, mais à chaque connexion sur l'interface je reçois un message m'invitant à installer la version 3.4 stable. J'ai donc décidé d'installer la dernière version, je décris ci-après les opérations exécutées. 

Créer un répertoire "ntopng-3.5". 
cd ntopng-3.5

Exécuter le script en annexe (ici), d'abord en mode "LOAD", effectuer les modifications nécessaires (Makefile). 
Dans ntopng-3.5/ntopng/packages/ubuntu je modifie le fichier "Makefile" en commentant les appels à "dpkg-sig" pour éviter les problèmes de signature d'un package "officiel". 
On peut ensuite lancer le script en mode "COMPILE". 
En fin de compilation un warning sur les librairies "ssl" et "crypto" car NtopNG utilise encore des version "anciennes" :

/usr/bin/ld: warning: libssl.so.1.0.2, needed by /usr/lib/x86_64-linux-gnu/libcurl.so, may conflict with libssl.so.1.1 
/usr/bin/ld: warning: libssl.so.1.0.2, needed by /usr/lib/x86_64-linux-gnu/libcurl.so, may conflict with libssl.so.1.1 
/usr/bin/ld: warning: libcrypto.so.1.0.2, needed by /usr/lib/x86_64-linux-gnu/libcurl.so, may conflict with libcrypto.so.1.1

Vérifier que les versions 1.0.2 et 1.1 sont bien présentes sur mon système :

cd /usr/lib/x86-64 
find ./ -name 'libssl*so*1.0.2' 
./libssl.so.1.0.2 
find ./ -name 'libcrypto*so*1.0.2' 
./libcrypto.so.1.0.2

Ne pas oublier de faire un :

cd ntopng-3.5/ntopng 
make geoip

avant de lancer la création du package. 
Ah, j'oubliais, corriger le fichier 'ntopng.service' du répertoire "ntopng-3.5/ntopng/packages/ubuntu/debian.ntopng/ntopng/etc/systemd/system"  (car le standard "traîne" à l'arrêt durant au moins 1 minute 30) : 
Avant :

[Service] 
Type=simple 
ExecStartPre=/bin/sh -c '/bin/sed "/-e.*$\\|-G.*\\|--daemon.*\\|--pid.*/s/^/#/" /etc/ntopng/ntopng.conf > /run/ntopng.conf' 
ExecStart=/usr/local/bin/ntopng /run/ntopng.conf 
ExecStopPost=-/bin/rm -rf /run/ntopng.conf 
Restart=on-abnormal 
RestartSec=5

Après :

[Service] 
Type=simple 
ExecStartPre=/bin/sh -c '/bin/sed "/-e.*$\\|-G.*\\|--daemon.*\\|--pid.*/s/^/#/" /etc/ntopng/ntopng.conf > /run/ntopng.conf' 
ExecStart=/usr/local/bin/ntopng /run/ntopng.conf 
ExecStopPost=-/bin/rm -rf /run/ntopng.conf 
Restart=always 
RestartSec=5 
TimeoutStartSec=10 
TimeoutStopSec=10

On peut maintenant générer les paquets Debian, il doit en être de même pour d'autres distributions mais le fichier "ntopng.service" n'est pas placé dans le même répertoire. Il faut aussi commenter les appels à "dpkg-sig" dans le fichier "ntopng-3.5/ntopng/packages/debian/Makefile.in" car nous ne disposons pas de clefs Debian/Ubuntu.

cd package/debian 
./configure 
make 2>&1 | tee MAKE.LOG

Après quelques instants deux paquets sont disponibles dans "ntopng-3.5/ntopng/packages/debian" :

ls -al ntop* 
-rw-r--r-- 1 jppRR jppRR  4937636 avril 24 11:29 ntopng_3.5.180424-4347_amd64.deb 
-rw-r--r-- 1 jppRR jppRR 23997248 avril 24 11:29 ntopng-data_3.5.180424_all.deb

Il ne resta plus qu'à les installer ... avec sudo bien sûr :

sudo dpkg -i ntopng*deb 
(Reading database ... 305480 files and directories currently installed.) 
Preparing to unpack ntopng_3.5.180424-4347_amd64.deb ... 
Unpacking ntopng (3.5.180424-4347) over (3.3.171219-3926) ... 
Preparing to unpack ntopng-data_3.5.180424_all.deb ... 
Unpacking ntopng-data (3.5.180424) over (3.3.171219) ... 
Setting up ntopng (3.5.180424-4347) ...

Configuration file '/etc/ntopng/ntopng.conf' 
 ==> File on system created by you or by a script. 
 ==> File also in package provided by package maintainer. 
   What would you like to do about it ?  Your options are: 
    Y or I  : install the package maintainer's version 
    N or O  : keep your currently-installed version 
      D     : show the differences between the versions 
      Z     : start a shell to examine the situation 
 The default action is to keep your current version. 
*** ntopng.conf (Y/I/N/O/D/Z) [default=N] ? n 
Rebuilding ld cache... 
(Re)Starting ntopng... 
Setting up ntopng-data (3.5.180424) ... 
Processing triggers for man-db (2.7.6.1-2) ...

Et maintenant le moment de vérité ! Je lance un browser sur "localhost:3002" (3002 chez moi, voir paramétrage du fichier /etc/ntopng/ntopng.conf) et magnifique ... tout apparaît normal, même les alertes générées par la version précédente sont présentes et un petit tour dans le panneau hosts/hosts montre une liste complète.  
Du coté de la base de données les nouvelles connexions sont bien enregistrées. 
Tout ceci a été réalisé sur une machine de test, il ne reste plus qu'à installer les deux paquets sur une "vraie" machine ... et cela fonctionne aussi bien. 
Autre vérification : le plugin NtopNG de Grafana fonctionne normalement. 
Version parfaitement compatible, au niveau des données, avec les précédentes de la série 3.x. 
Télécharger mon script de compilation.

Scripts SQL simples

Scripts SQL simples jpp

Quelques scripts permettant de répondre à quelques questions simples sur ce qui "passe" sur votre réseau.

Qu'a fait l'adresse XXX.XXX.XXX.XXX ? 
Avec appoint de la table personnelle IPV4_DOMAINE, cf en fin de page pour le téléchargement des scripts).

SELECT FW.INTERFACE_ID NIC,inet_ntoa(FW.IP_SRC_ADDR) SRCIP ,FW.L4_SRC_PORT SPORT, inet_ntoa(FW.IP_DST_ADDR) DSTIP,FW.L4_DST_PORT DPORT, 
FW.PROTOCOL TCPIP, FW.IN_BYTES, FW.OUT_BYTES,FW.PACKETS, 
DATE_FORMAT(FROM_UNIXTIME(FW.FIRST_SWITCHED), '%H:%i:%s %d-%m-%Y') DEBUT, 
DATE_FORMAT(FROM_UNIXTIME(FW.FIRST_SWITCHED), '%H:%i:%s %d-%m-%Y') FIN, 
FW.INFO,DO.CODPAYS,DO.SRV,DO.DOM,DO.COMPAGNIE 
FROM ntopng.flowsv4 FW 
left join ntopng.IPV4_DOMAINE DO on ( FW.IP_SRC_ADDR = DO.IP_V4 or FW.IP_DST_ADDR = DO.IP_V4= 
where (    FW.IP_SRC_ADDR = inet_aton('XXX.XXX.XXX.XXX') 
        or FW.IP_DST_ADDR = inet_aton('XXX.XXX.XXX.XXX') 
       ) 
  and FW.L4_DST_PORT != 123 
order by 10 
 limit 32

Bien sûr la clause "limit 32" peut être modifiée ! Pour voir plus de 32 heureux sélectionnés.

Plus simple une statistique par jour.heure :

select (DATE_FORMAT(FROM_UNIXTIME(FIRST_SWITCHED),'%Y-%m-%d')) jour, 
(DATE_FORMAT(FROM_UNIXTIME(FIRST_SWITCHED),'%H')) heure,count(*) 
from ntopng.flowsv4 
group by 1,2

Plus drôle (??), quels sont les ports des visiteurs classés en décroissant :

SELECT FW.L4_SRC_PORT, count(*) 
FROM ntopng.flowsv4 FW 
where FW.IP_SRC_ADDR <> inet_aton('127.0.0.1') 
  and FW.IP_SRC_ADDR not between inet_aton('192.168.1.0') and inet_aton('192.168.3.255') 
  and FW.IP_DST_ADDR not between inet_aton('224.0.0.1') and inet_aton('224.255.255.255') 
  and FW.IP_DST_ADDR not between inet_aton('239.0.0.1') and inet_aton('239.255.255.255') 
  and FW.IP_DST_ADDR <> inet_aton('255.255.255.255') 
group by 1 
order by 2 desc

Celui-ci utilise aussi la table "IPV4_DOMAINE" que j'ai créée pour conserver les renseignements sur les IP que l'on retrouve dans les DNS et avec "geoiplookup". (Des liens de téléchargement des procédures en fin de la page suivante) :

select inet_ntoa(FW.IP_DST_ADDR) DSTIP,FW.L4_DST_PORT DPORT,inet_ntoa(FW.IP_SRC_ADDR) SRCIP,FW.INTERFACE_ID ETH, 
DATE_FORMAT(FROM_UNIXTIME(FW.FIRST_SWITCHED), '%Y-%m-%d') DEBUT,FW.INFO,DO.CODPAYS, 
sum(FW.IN_BYTES) INB,sum(FW.OUT_BYTES) OUTB,sum(FW.PACKETS) PAQ, 
DO.CODPAYS,DO.SRV,DO.DOM,DO.COMPAGNIE 
from ntopng.flowsv4 FW 
    left join ntopng.IPV4_DOMAINE DO on FW.IP_DST_ADDR = DO.IP_V4 
where FW.IP_DST_ADDR not between inet_aton('127.0.0.1') and inet_aton('127.255.255.255') 
and   FW.IP_DST_ADDR not between inet_aton('192.1.0.1') and inet_aton('192.168.3.255') 
and   FW.IP_DST_ADDR not between inet_aton('224.0.0.1') and inet_aton('224.255.255.255') 
and   FW.IP_DST_ADDR not between inet_aton('239.0.0.1') and inet_aton('239.255.255.255') 
and      FW.IP_DST_ADDR <> inet_aton('255.255.255.255') 
group by 1,2,3,4,5,6 
order by IP_DST_ADDR,L4_DST_PORT,3

Pour rendre les listes plus lisibles ajoutez une table "PAYS" :

CREATE TABLE PAYS ( 
  CODPAYS          char(2)     NOT NULL     DEFAULT '', 
  CODPAYS_3        char(3)     DEFAULT NULL, 
  ENG_NAME         varchar(40) DEFAULT NULL, 
  FR_NOM           varchar(40) DEFAULT NULL, 
  PRIMARY KEY (CODPAYS) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Cette table est disponible en téléchargement pour MySQL/MariaDB.

Allez, cela suffit pour aujourd'hui !

NtopNG : plugin Grafana

NtopNG : plugin Grafana jpp

Plugin NtopNG pour Grafana.

Note 2019 : ce plugin n'est plus maintenu et ne fonctionne plus avec les versions récentes de Grafana. Pour utiliser les données de NtopNG dans Grafana voir ICI. 

Ce plugin permet l'accès aux données de NtopNG par Grafana en tant que "datasource". 
Installer le plugin. 
Dans la machine "supportant" Grafana lancer la commande : 
grafana-cli plugins install ntop-ntopng-datasource 
installing ntop-ntopng-datasource @ 1.0.0 
from url: https://grafana.com/api/plugins/ntop-ntopng-datasource/versions/1.0.0/download 
into: /var/lib/grafana/plugins 
Failed downloading. Will retry once. 
✔ Installed ntop-ntopng-datasource successfully  
Pour vérification : ls -al /var/lib/grafana/plugind montre un répertoire ntop-ntopng-datasource. 
Puis "systemctl restart grafana-server" et connexion à Grafana. 
Menu Datasource --> Add data source. 
Dans la boîte de dialogue "Type" on trouve bien "ntopng" que l'on sélectionne, pour le reste voir l'image écran suivante : 
Ecran création datasource NtopNG 
Pour créer un graphique dans Grafana c'est assez standard sauf pour une chose : la boite de sélection des métriques.  
NtopNG propose deux types de métrique : "host" et "interface" mais la boite de dialogue ne présente pas l'intégralité des données il faut fournir au moins le début du critère recherché afin de préciser l'affichage. L'affichage original commence par les données "host" et ne les montre même pas toutes et sans tri apparent, il faut frapper "host_" suivi du début de l'adresse IP pour limiter l'affichage et pouvoir choisir ce que l'on désire. 
Pour voir les métriques "interface" il faut frapper "i" pour voir apparaître la liste et effectuer son choix.  
Certaines métriques donnent un message "Data points outside time range", ceci concerne notamment les métriques "total_packets" et "total_bytes". Les métriques "pps" (paquets) et "bps" (bytes), elles, fonctionnent normalement. Beaucoup de métriques "host" retournent "No data points", c'est le cas de nombreuses adresses n'ayant eu que peu de trafic, par contre pour les machines locales ou connectées souvent les indications semblent fiables. 
On peut ainsi présenter des graphes de débit réseau de machines ne possédant pas de "senseur", le débit est celui constaté sur la machine équipée de NtopNG (en général la passerelle Internet). 
A noter pour les interfaces une métrique "allprotocols_bps" présente des graphes pour les principaux types de flux : SSL, HTTP, SNMP,Google, SSH ... 
Remarque : l'utilisation d'échelles "log" est souvent nécessaire pour garder mieux voir les grandes variations de débit. 
Exemple de graphes "réseau" issus des données de NtopNG, au passage ces graphes sont effectués avec la version 5 de Grafana qui s'est installée sans douleur. 
Graphe réseau Grafana issu de donénes NtopNG

Les graphiques sont presque aussi beaux que ceux obtenus avec Omeganoc.