Analytics
Introduction
FUN met à la disposition des participants au hackathon une quantité de logs extraits de ses machines de productions à fins d’analyse.
Téléchargement des fichiers de logs
Les fichiers de logs sont disponibles au téléchargement pour la période du 1er février au 30 avril 2015 : http://files.alt.openfun.fr/analytics/anonymized/. (Compter ~120 Mo/jour, soit ~4 Go/mois).
Source des logs
Les logs proviennent des appels à tracker.emit
qui parsèment le code d’edX et
de FUN :
https://github.com/edx/event-tracking/blob/0.2.0/eventtracking/tracker.py#L65
Chaque évènement loggé se présente sous la forme d’un blob JSON contenant au
moins un champ time
.
Format des logs
Les logs fournis par FUN sont anonymisés, ce qui signifie que les champs
email
, address
, etc. ont été retirés des blobs JSON. Par ailleurs, le
champs username
a été chiffré à l’aide d’une méthode de chiffrage à sens unique :
encrypted_username = hmac.new(secret_key, username, hashlib.sha256).hexdigest()
Analyse des logs à l’aide de ElasticSearch
Les logs fournis par FUN se prêtent particulièrement bien à l’analyse via ElasticSearch. Si vous décidez de charger les logs fournis dans un cluster ElasticSearch, nous vous recommandons d’installer la pile ELK : ElasticSearch + Logstash + Kibana.
- ElasticSearch est le moteur d’indexation et de recherche de vos données.
- Kibana est le frontend qui vous permettra de visualiser vos données dans le navigateur.
- Logstash permet d’envoyer vos logs à ElasticSearch en les convertissant en évènements au format ad-hoc.
Installation
L’installation des trois composants de la stack ELK est bien documentée :
- https://www.elastic.co/downloads/elasticsearch
- https://www.elastic.co/downloads/logstash
- https://www.elastic.co/downloads/kibana
Envoi des logs vers ElasticSearch
Une fois que vous avez correctement installé Logstash et ElasticSearch, vous
pouvez insérer les logs de FUN dans ElasticSearch à l’aide du fichier de
configuration logstash.conf
fourni dans ce dépôt :
cat fun_tracking_logs.log | logstash --config static/logstash.conf
Visualisation des résultats dans Kibana
Après avoir inséré quelques évènements dans ElasticSearch, vous pouvez lancer Kibana et observer ces évènements en ouvrant http://localhost:5601 dans votre navigateur. N’oubliez pas de sélectionner un intervalle de temps couvert par les logs (en haut à droite).
Réaliser des requêtes manuelles sur ElasticSearch
Vous pouvez souhaiter réaliser des requêtes complexes sur ElasticSearch et en récupérer le résultat brut au format JSON sans passer par Kibana. Pour ça, le mieux est de :
- créer une requête via Kibana, dans l’onglet “Discover”.
- récupérer cette requête au format JSON, en repliant le graphe de résultats, puis sous l’onglet “Request”. Par exemple :
{
"size": 500,
"sort": {
"@timestamp": "desc"
},
"query": {
"filtered": {
"query": {
"query_string": {
"query": "*",
"analyze_wildcard": true,
}
}
}
}
}
-
Copier-coller cette requête dans un fichier
query.json
, puis réaliser la requête à l’aide du script fourni dans ce dépôt :static/es.py query.json > result.json