Auteur Sujet: Analyser la progression d'IPv6 via les logs Apache2  (Lu 13633 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #12 le: 24 avril 2015 à 20:06:52 »
La dimension temporelle, le mois ou le trimestre me semble suffisant, donc géré manuellement (je fais chaque mois ou chaque trimestre et je rentre les résultats des AS représentatives dans un autre tableau.

Il y aura forcèment de très nombreux AS avec seulement quelques hits (des petits réseaux, des réseaux étrangers)
C'est pour cela que je pense qu'il y aura plus de 1000 AS.

Maintenant, c'est vrai qu'il serai possible de géré dans l'outil les dates, mais le ration IPv4 vs IPv6 évolue lentement et on a intérêt à agréger pas mal de données pour ne pas avoir trop de fluctuations.

corrector

  • Invité
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #13 le: 24 avril 2015 à 22:40:56 »
Je pense que des données journalières seraient intéressantes.
« Modifié: 22 décembre 2015 à 16:31:51 par corrector »

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #14 le: 24 avril 2015 à 22:42:10 »
tu devrais regarder du coté de http://piwik.org/ aussi. Il peut importer des logs et il y a un module IPv6 : https://plugins.piwik.org/IPv6Usage

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #15 le: 25 avril 2015 à 09:06:43 »
Piwik nécessite de mettre un tracker sur le site web et cela ne fonctionne que sur les site web (un truc de plus à charger).

Pour avoir des stats sur les fichiers téléchargés sur testdebit.info, avec les SpeedTest ou les miroirs que j'héberge, les analyses se font obligatoirement au niveau des log apache2.

buddy

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 15 094
  • Alpes Maritimes (06)
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #16 le: 25 avril 2015 à 09:57:31 »
tu peux bien "donner" à manger à piwik des logs apache.
http://piwik.org/docs/log-analytics-tool-how-to/#how-to-run-the-log-file-analysis-script-with-default-options

Je ne l'ai pas testé encore, je testerai éventuellement si j'arrive à obtenir des résultats corrects sur des fichiers 100 % statiques.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #17 le: 25 avril 2015 à 16:42:24 »
oui je mentionnais Pikwik en mode import et pas en mode tracker. Reste a voir si c'est praticable.

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #18 le: 28 avril 2015 à 19:02:24 »
Récupération d'un AS en perl :

use Geo::IP;
my $gi = Geo::IP->open( "/usr/local/share/GeoIP/GeoIPASNum.dat", GEOIP_STANDARD );
print $gi->name_by_addr('24.24.24.24') || '';

use Geo::IP;
my $gi = Geo::IP->open( "/usr/local/share/GeoIP/GeoIPASNumv6.dat", GEOIP_STANDARD );
print $gi->name_by_addr_v6('::ffff:24.24.24.24') || '';

Pour distinguer une IPv4 d'une IPv6, la bonne solution c'est bien :
- rechercher si ":" est présent au minimum trois fois dans le champ => Si positif, c'est une IPv6
- rechercher si "." est présent trois fois dans le champ => Si positif, c'est une IPv4
- autre cas : loger l'IP dans un fichier log (il devrait être vide)

Du code en perl tout fait qui distingue une IPv4 d'une IPv6 avec un port optionnel, ce qui est inutile pour des logs apache : (en IPv6, on rajoute le port de cette façon : [2605:2700:0:3::4713:93e3]:80 )

sub parse_ip {
my $str = shift;
$str =~ s/^\s*//;
$str =~ s/\s*$//;
 
if ($str =~ s/^((?:\d+\.)+\d+)(?::(\d+))?$//) {
return 'v4', parse_v4($1, $2);
}
 
my ($ip, $port);
if ($str =~ /^\[(.*?)\]:(\d+)$/) {
$port = $2;
$ip = parse_v6($1);
} else {
$port = -1;
$ip = parse_v6($str);
}
 
return unless $ip;
return 'v6', $ip, $port;
}

Source : http://rosettacode.org/wiki/Parse_an_IP_Address

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #19 le: 21 décembre 2015 à 19:33:08 »
J'ai un peu repensé a ton probleme: tu peux utiliser la stack ELK (Elasticsearch, Logstash, Kibana) c'est suffisamment puissant pour ce que tu veux faire.

Le principe et les produits requis:

Logstash: https://www.elastic.co/products/logstash . C'est un outil de collecte, analyse et stockage de journaux (logs) (un ETL dans le jargon: Extract-Transform-Load). En entrée il sait géré et connait plein de types de format de logs comme syslog ou les logs d'apache2. Puis il analyse les données et les met dans un format commun via des filtres programmables. On peut ensuite exporter les données vers ce qu'on veut pour stockage ou traitement. Notamment ici on va exporter vers Elasticsearch.

Elasticsearch: https://www.elastic.co/products/elasticsearch . C'est moteur de recherche distribué basé sur Apache Lucene. Il va stocker les données et permettre tout sorte de requêtes, recherches et analyses dessus.

Kibanahttps://www.elastic.co/products/kibana . C'est la partie graphique/visuelle d'Elasticsearch qui permet d'afficher presque tout ce qu'on souhaite. Ca permet de faire des Dashboards temp réel par exemple ou des graphes/rapports analytiques.

Bases Maxmind Geolite: http://dev.maxmind.com/geoip/legacy/geolite/ . Ce sont les bases de geoloc gratuites de Maxmind. il y a 3 bases: pays, ville et AS. chacune avec sa version IPv4 et IPv6. donc 6 bases en tout. Elles sont mises a jour tout les mois.

Les trucs a lire pour comprendre puis faire soi-meme (histoire de s'occuper pendant les vacances...):

A. https://www.linode.com/docs/databases/elasticsearch/webserver-logs-with-elk-stack
C'est une simple demo de comment installer et configurer ELK pour visualiser des infos sur les logs d'Apache. Y'a la tout ce qu'il faut pour commencer et faire une config simple. Si on ne veut pas 'saloper' une machine réelle on peut faire tourner tout dans Docker. On trouve des compositions Docker toute prêtes comme : https://github.com/deviantony/docker-elk  par exemple.

B. https://www.digitalocean.com/community/tutorials/how-to-map-user-location-with-geoip-and-elk-elasticsearch-logstash-and-kibana
Un exemple pour ajouter un traitement dans Logstash pour utiliser une base Geolite pour obtenir les coordonnées geo des IP présentes dans les logs d'un serveur web NGinx. Suivi d'une visualisation en carto dans Kibana.

Le boulot à  faire (ou trouver sur le Net si quelqu'un a déjà fait ca mais j'ai rien trouvé):
- adapter B (nginx) a A (Apache) puis modifier le tout pour obtenir l'AS avec les 2 bases qui vont bien (IPv4 et IPv6)
- en option: adapter A pour injecter aussi les anciens logs archivés (opération à  faire qu'une fois).
- créer les stats voulues dans Kibana.

Ca ne me semble pas bien compliqué à  faire et ca m’intéresse pour un autre projet. Mais pendant les 2 semaines qui viennent la je n'ai vraiment pas le temps de me pencher la dessus plus que ca.
Donc si Vivien ou quelqu'un d'autre se sent d'attaque pour tenter le coup , a vous de jouer. Sinon je verrais en janvier pour bricoler un truc.

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #20 le: 21 décembre 2015 à 20:48:18 »
Cela me semble complexe, mais c'est vrai que l'outil est sympa pour visualiser les infos.

Les points qui me semble importants c'est le fait d'afficher :
- le nombre de hits (nombre d'éléments chargés) par FAI (donc AS)
- le pourcentage IPv6 vs IPv4 par FAI
- classement des FAI par taux de pénétration IPv6
- Taille (en Go / To) envoyé par FAI par jour (important pour testdebit.info, pas pour lafibre.info)

En bonus, en exploitant le user agent :
- répartition des différents systèmes d'exploitations
- répartition des différents navigateurs utilisés
- répartition des différents navigateur utilisés par système d'exploitation
- répartition fixe / mobile

Et en super bonus des croisements :
- pourcentage d'IPv6 par système d’exploitation
- pourcentage d'IPv6 par navigateur

Idéalement il serait possible de visualiser des graphes montrant l’évolution sur plusieurs années.

Par contre si les données ne sont pas agrégées, cela va être très lent et prendre beaucoup de place.
Il ne me semble de supprimer les logs après post-traitement (post-traitement qui incrèmente des compteurs permettant de faire les calculs).

J'imagine trois tables produites quotidiennement (on va dire que la 3ème dimension sera le temps)
- Table FAI avec 5 colonnes : AS ; hits IPv4 ; hits IPv6 ; taille IPv4 ; taille IPv6
- Table os / navigateur avec 5 colonnes : mixte OS/Navigateur ; hits IPv4 ; hits IPv6 ; taille IPv4 ; taille IPv6
- Table géolocalisation avec 5 colonnes : Pays ; hits IPv4 ; hits IPv6 ; taille IPv4 ; taille IPv6

Chaque ligne de log va incrèmenter des compteurs dans les 3 tables.
Il est impossible d'utiliser les 3 tables simultanèment : savoir quel est le navigateur le plus utilisé chez Free n'est pas possible.

Ce que j’appelle mixte OS/Navigateur, c'est une donnée avec les couples OS / Navigateurs les plus utilisés. La liste n'est pas longue si on propose "autre" :
- Windows 10 / server 2016 + Chrome
- Windows 10 / server 2016 + Firefox
- Windows 10 / server 2016 + Edge
- Windows 10 / server 2016 + Internet Explorer
- Windows 10 / server 2016 + autre navigateur
- Windows 8.x / server 2012 + Chrome
- Windows 8.x / server 2012 + Firefox
- Windows 8.x / server 2012 + Internet Explorer
- Windows 8.x / server 2012 + autre navigateur
- Windows 7 / server 2008 R2 + Chrome
- Windows 7 / server 2008 R2 + Firefox
- Windows 7 / server 2008 R2 + Internet Explorer
- Windows 7 / server 2008 R2 + autre navigateur
- Vista / server 2008 + Chrome
- Vista / server 2008 + Firefox
- Vista / server 2008 + Internet Explorer
- Vista / server 2008 + autre navigateur
- vieux Windows + Chrome
- vieux Windows + Firefox
- vieux Windows + Internet Explorer
- vieux Windows + autre navigateur
- MacOS X + Safari
- MacOS X + Chrome
- MacOS X + Firefox
- MacOS X + autre navigateur
- Linux + Chrome
- Linux + Firefox
- Linux + wget
- Linux + curl
- Linux + autre navigateur
- Android + Chrome
- Android + Firefox
- Android + autre navigateur
- iOS + Safari
- iOS + Firefox
- iOS + autre navigateur
- Autre système d'exploitation + Chrome
- Autre système d'exploitation + Firefox
- Autre système d'exploitation + Safari
- Autre système d'exploitation + Internet explorer
- Autre système d'exploitation + Edge
- Autre système d'exploitation + autre navigateur

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #21 le: 21 décembre 2015 à 22:25:51 »
Par contre si les données ne sont pas agrégées, cela va être très lent et prendre beaucoup de place.

oui et non. agrégées des données c'est perdre de l'information quelque part.
Elasticsearch est fait pour ca. C'est très costeau, distribuable sur plusieurs machines et on peut créer des aggregations au besoin.
Beaucoup de gros du web utilisent Elasticsearch, notamment Deezer, Soundcloud, Github, Docker, etc et meme Orange et Netflix.

Il faut bien voir qu'on est dans le monde "NoSQL" ou avoir des gros volumes est très courant. C'est fait pour ca.

L'important , a mon avis, est d'avoir tes logs, augmentés des info geoloc, dans Elasticsearch. A partir de la tu verra comment optimiser éventuellement les données si la performance des requêtes pose un probleme.

Mais je ne mettrais pas la charrue avec les bœufs comme on dit.

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #22 le: 22 décembre 2015 à 13:53:56 »
Même sans parler de performance, avec 300 Mo par jour, cela fait 9 Go par mois, 216 Go pour deux ans d'historique.

corrector

  • Invité
Analyser la progression d'IPv6 via les logs Apache2
« Réponse #23 le: 22 décembre 2015 à 15:37:00 »
Sous quel format?