CloudFlare est un fournisseur DNS formidable, mais en ce qui a trait au CDN, je ne suis finalement plus trop convaincu de son utilité pour un site à bas trafic comme le mien. D'ailleurs, essayer de comprendre et suivre ses utilisateurs avec CloudFlare devient extrêmement difficile sauf si on paie pour le forfait Entreprise qui permet l’accès aux fichiers de logs bruts générés par leurs serveurs proxys.
Afin de pouvoir visualiser vos statistiques de requêtes HTTP avec précision grâce à un logiciel tel que GoAccess, il nous faut activer le logging de CloudFront. Voici donc comment faire en utilisant la console d’AWS.
Il faut d’abord créer un bucket S3 dans lequel tous les fichiers logs vont être envoyés:
S3
.Create a bucket
.myname-cloudfront-logs
.Ensuite, il nous faut activer la génération de logs pour qu’ils se rendent dans le bucket S3:
Services
, cliquez sur CloudFront
.General
, cliquez sur Edit
.Logging
en sélectionnant On
.Log Prefix
qui correspond à votre site ce qui vous permettra de mettre tous vos logs dans un seul bucket (ex : votrenomdedomain.com.Yes, Edit
pour sauvegarder vos changements.Vous avez désormais une distribution CloudFront qui log toutes les requêtes et envoie le tout dans votre bucket S3.
Si vous travaillez sur Linux ou Mac Os X, installez simplement GoAccess comme indiqué sur leur site Web, sinon, utilisez mon setup Vagrant qui préinstallera tout ce qu’il vous faut.
Voici le lien du setup Vagrant: https://github.com/fredbourni/vagrant-goaccess-awscf
Si vous installez vous-même, il vous faudra changer la configuration de base de GoAccess pour accepter le format de log de CloudFront. Vous pouvez aussi vous faciliter la tâche et télécharger et patcher grâce à cloudfront.diff (commande exacte: patch goaccess.conf cloudfront.diff
).
Configurez premièrement AWS CLI pour avoir accès à vos logs. Ensuite, en utilisant la VM Vagrant dans cet exemple, roulez ces commandes afin d’obtenir tous les fichiers de logs en local:
Exécutez ces commandes:
$ cd /vagrant
$ mkdir logs
$ cd logs
$ aws s3 sync s3://myname-cloudfront-logs ./
Celles-ci vont résulter à télécharger tous les fichiers logs contenus dans votre bucket pour laisser GoAccess les analyser.
GoAccess vous permet de générer un rapport en command line ou de créer un rapport en HTML prêt à être visualisé avec votre fureteur préféré. Créez votre premier rapport HTML…
$ zcat /vagrant/logs/yoursite.com/*.gz | goaccess -o /usr/share/nginx/html/yoursite.html
Il suffit ensuite d'aller à l'aide votre fureteur sur http://localhost/yoursite.html
Pour créer un rapport en command line ou pour vous amuser avec GoAccess davantage, rendez-vous sur leur site pour plus de détails: https://goaccess.io/faq, https://goaccess.io/man.
CloudFlare est le plus souvent utilisé comme CDN, un proxy qui cache les requêtes autour de la planète afin de vous sauver un nombre considérable de requêtes, du moins en théorie. Le problème est que si vous cachez les requêtes HTTP chez CloudFlare, seulement une portion des requêtes se rendent sur CloudFront, donc vous analysez seulement une fraction de votre trafic.
Il vous faut donc désactiver la fonctionnalité de proxy en cliquant sur le nuage dans la section DNS pour tous les domaines pointant sur CloudFront (normalement votresite.com et www.votresite.com). Si vous voyez un nuage avec une flèche qui contourne celui-ci, le tour est joué. Vous avez maintenant CloudFlare en place pour vos DNS mais ne servant plus de CDN interfaçant CloudFront et vos utilisateurs. Du même coup, toutes les requêtes, sans exception, vont aller chez AWS vous permettant d’analyser chaque visite, et évidemment chaque visiteur.
Ah, j'oubliais SSL. Si votre site est en HTTPS, assurez-vous d'avoir un certificat SSL de configuré chez AWS et attribué à votre distribution CloudFront tel qu'expliqué sur ce blog français. C'est gratuit en passant depuis un bon bout de temps!