Les flux réseaux, comment qu'c ?
Par Xam, vendredi 19 mai 2006 à 17:21 :: General :: #22 :: rss
Ca fait bien longtemps que je voulais me pencher sur l'analyse des flux réseaux passant par mon serveur, en particulier vers ma connexion Internet. Avoir des stats sur mes quantités de données téléchargées / uploadées chaque jour, sur quels ports, quels protocoles, combien me bouffe tel ou tel truc, quand, que, que, quoi, d'où, pourquoi la vie, quand est-ce qu'on mange et d'autres questions existentielles du même genre.
Et bien après quelques jours de motivation, j'ai enfin ce que je voulais, en partie tout du moins. Attention, les explications qui suivent sont longues, j'ai activé le mode roman sans m'en rendre compte. Peut être l'approche du rapport de stage qui a activé mon mode vent sans prévenir ? C'est une question intéressante.
J'avais commencé, il y a quelques mois déjà, par regarder du côté de ntop, qui fait tout ça tout seul comme un grand. Il capture le traffic, fais des rapports, stocke tout ca, peut générer des graphes rrd, possède un système de plugins, bref, le truc qui p00tre vous allez m'dire. Oui, mais en fait non. C'était beaucoup trop complet pour moi, avec des tonnes d'informations et de stats dans tous les sens. Et, c'est bien connu, trop de stats tue les stats. J'ai pas particulièrement cherché en profondeur, mais j'ai pas trouvé de moyens simples et rapides de faire des rapports sur des choses bien ciblées, pour avoir un truc plus lisible et facile à consulter (sans avoir à bloquer 2h tous les soirs dans mon planning pour consulter mes stats LOL).
Du coup, ca m'avait un peu découragé et j'avais laissé tomber. J'avais bien imaginer me faire un truc perso, avec des bidouilles sur iptables et du PHP qui serait venu lire les compteurs... Mais bon, c'était pas top comme solution.
Il y a quelques jours, je suis tombé sur de la doc concernant NetFlow. J'avais déjà souvent entendu parler de ce terme, mais sans savoir ce qu'il signifiait, à quoi ça servait, etc. Pour faire simple (et si j'ai bien tout compris :p), il s'agit à la base d'un protocole développé par Cisco permettant d'obtenir des stats sur les flux transitant par les routeurs. Les routeurs enregistrent les différents flux, transmettent ces informations à un collecteur qui les filtre / stocke, et ensuite un analyseur peut faire mumuse pour nous sortir les infos que l'on veut. Tout ca s'est visiblement imposé de lui-même comme un standard (en gros) et réutilisé dans pas mal d'équipements de la concurrence et dans d'autres systèmes d'exploitation.
En voyant ça, j'ai donc sauté sur l'occaz' pour voir si y'avait moyen de moyenner concernant ce que je voulais faire depuis longtemps.
Il s'avère donc qu'on trouve des "captureurs" de flux sur pas mal de bordel et évidemment sous Linux. On trouve aussi des collecteurs et des analyseurs, bref, c'est le festival intégral.
Alors mon bordel fonctionne ainsi :
- les flux sur eth0 (ma connexion au net) sont capturés avec fprobe.
- fprobe envoit ses infos à un collecteur en local, à savoir flow-capture.
- flow-capture stocke les flux par période de 5 minutes dans des fichiers.
- Tout est nominal, c'est génial, y'a plus qu'à analyser.
Pour l'analyse, j'avais commencé par me pencher sur le truc qui s'impose de lui-même d'habitude apparemment, à savoir flowscan. Mais là encore un peu comme ntop, c'est un truc pas vraiment adapté à mes besoins, et pas facilement modifiable (en tout cas pas assez pour moi, la flemme quoi, pas que ca à faire non plus, y'a des choses plus importantes dans la vie, comme jouer régulièrement à BF par exemple).
Du coup, j'ai regardé plus du côté des flow-tools qui comme le nom l'indique sont un ensemble d'outils pour manipuler les fichiers de flux. Au final, j'utilise flow-report. J'ai configuré des rapports pile-poil comme je les voulais, ces rapports utilisant des filtres que j'ai également configuré. Ca me permet de ne tenir compte que de certains trucs, de différencier certaines choses, etc. Chaque nuit à 6h du matin, un cron de flow-report génère deux fichiers, un pour l'upload et un pour le download.
En fait, je considère que mes journées s'étalent de 6h du matin à 5h59 le lendemain suivant. C'est plus logique et ca colle plus à ma façon de vivre que des journées de minuit à 23h59 (je suis rarement couché à minuit, et inversement, il m'arrive rarement de me coucher après 6h du mat' :-D)
Enfin, il suffit de mettre une petite interface en PHP développé par mes soins qui vient parser ces fichiers pour présenter ça de façon sympathique. L'interface en question est sur http://xam.ixene.net/flows/. Je pense rajouter deux trois fonctionnalités sur cette interface dans les jours qui viennent (notamment des stats sur des mois entiers).
Voilà, je crois avoir tout dit. J'ai enfin mes stats, c'est super fun, j'me sens mieux dans ma peau et j'ai dit non à la drogue grâce à ce projet.
Si vous avez des idées d'améliorations du bouzin, n'hésitez pas. 
Et à bientôt pour d'autres geekeries toutes aussi inutiles donc indispensables.
Commentaires
1. Le vendredi 19 mai 2006 à 21:49, par Pep
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.