Prototype d'analyseur de log nfcapd, pour un reporting quotidien, et détermination de saturations sur les liens IP.

README.md 3.6KB

YaPLog

Prototype d'analyseur de log nfcapd, pour un reporting quotidien, et détermination de saturations sur les liens IP.

Description

le script Bash chef/chef_d_orchestre est l'ordonnanceur qui appelle chacune des fonctions le programme cleanRAM/useRAM sert à allouer/désallouer 1/2 de la RAM de l'ordinateur le plus vite possible cpp/ contient le parser C++ qui va représenter les Packet (IP:port, poids, date, durée) sur une journée (genHourMin/genHourMin.py permet de générer les quarts d'heure de la journée) gnuplot/plotgnu.sh permet de réaliser un graph à partir d'un CSV nfcapd2ascii/ contient nfdumpall.sh qui permet de passer du format binaire nfcapd à du texte ASCII preparser/contient acsvify qui permet de passer du texte à un format CSV plus standard et plus léger. il contient aussi csvify qui met de la couleur (ajout de caractères d'échappement, ne pas utiliser pour la production, il génère beaucoup de texte)

Fonctionnement

Le script chef_d_orchestre suit les étapes suivantes pour tous les sites (Warning si les logs d'un site ne sont pas fournis) :

cp :

les archives sont copiées dans des répertoires pour éviter les mélanges entre les fichiers.
NOTE: il faut appeler l'archive ****-siteNN-*****.zip, où * n'est pas important, mais non vide, N = numéro du site (entre 01 et 135)

unzip :

le programme extrait l'archive zip
l'archive contient normlement 96 quarts d'heure.

bin2ascii/nfcapd:

le programme transforme les 96 quarts d'heure du format binaire vers du texte ASCII

cat:

le programme concatène les 96 fichiers ASCII produits

ascii2csv/pre-parser:

le programme réalise un préparsing du fichier texte ascii pour obtenir un CSV plus léger et plus facile à parser.

csv2res/graphEchantTabl:

le programme analyse chacun des paquets pour en faire une représentation générale.

graphs:

le prgramme crée des images PNG à partir de chacun des CSV produits.

FIN.

Téléchargement & Compilation

Pour télécharger le projet, taper la commande :

$ git clone https://git.hashtagueule.fr/citnop/YaPLog.git

ou

$ git clone git@htgl.fr:citnop/YaPLog.git si vous êtes le propriétaire du dépôt.

puis allez dans le répertoire :

$ cd YaPLog

et compilez tous les fichiers à l'aide de la commande :

$ make all

Dépendances

Le projet compile et tourne sur Debian 8.5 (Jessie). Il nécessite les packets/programmes suivants :

git 
flex
gcc >= 4.9 (versions précédentes non testées)
g++ >= 4.9 (compilation avec std=c++11 non testée)
bash (pas testé avec d'autres shells)
gnuplot (graphiques)
zip/unzip 
texlive-full (pour générer la documentation)
rsync (cp, en mieux, avec les dates y tout, qui vend du rêve et de la synchronisation)
make
perl

et le programme externe :

nfdump

les paquets suivants peuvent aider au débug :

gdb
htop
/usr/bin/time
valgrind

Pour les installer :

en tant que root :

# apt-get install time git flex gcc g++ gnuplot zip unzip texlive-full rsync make htop gdb valgrind perl

en tant que sudoer :

$ sudo apt-get install time git flex gcc g++ gnuplot zip unzip texlive-full rsync make htop gdb valgrind perl 

puis, il faut installer nfdump :

wget -c https://sourceforge.net/projects/nfdump/files/stable/nfdump-1.6.13/nfdump-1.6.13.tar.gz/download

(le lien peut avoir changé/ou la version n'être plus à jour) pour installer nfdump :

$ ./configure && make && sudo su
# make install && exit

suffisent.