Tutorial pour migrer ses données de Google Analytics vers Piwik
30 Juil 2012
écrit parAprès quelques discussions avec d'autres SEO concernant l'utilisation d'applications autres que Google Analytics big brother is watching you pour la mesure d’audience de sites Web, j'ai décidé de me tourner récemment vers une solution Open-Source du nom de Piwik dont @rudy_som avait d'ailleurs parlé au Barcamp BlackHat 2012.
Le problème? Repartir de zéro sans avoir les données précédentes de Google Analytics intégrées à Piwik...
Heureusement, l'API de Google Analytics est là ainsi qu'un script en Python que nous allons adapter afin de pouvoir tout récupérer.
Avant de commencer
Sur http://clearcode.cc/offer/open-source-projects/google2piwik/, vous trouverez un script d'importation qui fera le travail comme un grand. Son seul inconvénient est qu'il utilise une ancienne version de l'API ce qui provoque rapidement des "rate limit exceeded" en raison des quots de l'API d'Analytics.
La nouvelle API autorise 50 000 requêtes par jour et va nous demander quelques modifications dans les différents scripts utilisés.
Ce tutorial a été réalisé sous Debian Squeeze, il s'adaptera facilement aux différentes distributions.
1 - Installation des applications requises
Voici les différents ingrédients nécessaires pour la bonne importation de nos données de Google Analytics vers Piwik:
- Une instance de Piwik
- Un compte Google Analytics
- Python et son module python-mysqldb pour se connecter à la base de données
- La librairie Google Python API (gdata-python-client)
- Le script d'importation Google2piwik
- Un projet dans l'API de Google Analytics
et un accès SSH (of course!)
A - Python et son module Mysqldb:
Si Python n'est pas encore installé sur votre serveur, voici les commandes à lancer pour l'installer
apt-get install python
ainsi que le module Mysql
apt-get install python-mysqldb
B - Gdata python client:
Il nous faudra également installer la librairie Python gdata-python-client pour accéder à l'API Google, la dernière version étant la 2.0.17. (http://code.google.com/p/gdata-python-client/)
cd /tmp wget http://gdata-python-client.googlecode.com/files/gdata-2.0.17.zip tar xvzf gdata-2.0.17.tar.gz cd gdata-2.0.17 ./setup.py install
C - Script d'importation Google2Piwik:
Le script est disponible à cette adresse: Google2Piwik, merci à la société http://clearcode.cc qui l'a développé au passage 🙂
cd /home/aymeric wget http://clearcode.cc/google2piwik-1.2.5.tgz tar xvzf google2piwik-1.2.5.tgz
(pensez à changer le chemin vers votre home)
2 - Adaptation du script d'importation Google2Piwik
Afin d'utiliser le script d'import et le client Gdata avec l'API v2.4, quelques modifications dans le code sont nécessaires afin d'utiliser une API key.
Plusieurs fichiers vont subir des corrections:
- google2piwik.conf (infos de connexion)
- config.py (fichier de configuration du script)
- google2piwik.py (script d'importation)
A - Le fichier de configuration google2piwik.conf
Il faut ajouter les identifiants de votre compte ayant accès à Analytics en modifiant les paramètres user + password
[google] user_login = user user_pass = password table_id = ga:XXXXXXXX
et juste en dessous (sous table_id) la ligne suivante:
api_key = xxxxxxxxxxxxxxxxxxxxxxxx
On pourra compléter l'API Key à la fin du tutorial, quand votre projet sera configuré dans la console Google Code API.
Il faut ensuite ajouter les informations de connexion à la base de données MySQL de Piwik avec vos paramètres
# MySQL Piwik Database configuration [mysql] db = piwik host = localhost port = 3306 user = piwik passwd = xxxxxxxxxxxxxxxxxxx table_prefix = piwik
A la fin du fichier, renseigner la date de début -> date de fin des données à importer ainsi que l'ID du site Piwik et son URL
# Set export date range [export] start = 2012-06-01 end = 2012-07-29 ## Piwik configuration of site. # For default Piwik installation with one website, site_id should be set to 1 [piwik] site_id = 3 site_url = http://www.yapasdequoi.com
B - Le fichier config.py
Ensuite, il faut cherche les lignes suivantes (l.13 à 15):
MYSQL_CREDENTIALS = {} GOOGLE_USER = "" GOOGLE_PASS = ""
et y ajouter cette ligne
GOOGLE_KEY = ""
On modifiera également cette ligne (l.20):
global MYSQL_CREDENTIALS, GOOGLE_USER, GOOGLE_PASS
en la remplaçant par
global MYSQL_CREDENTIALS, GOOGLE_USER, GOOGLE_PASS, GOOGLE_KEY
enfin, il est nécessaire d'ajouter sous ces lignes (l.30 à 32):
GOOGLE_TABLE_ID = conf.get("google", "table_id") GOOGLE_USER = conf.get("google", "user_login") GOOGLE_PASS = conf.get("google", "user_pass")
la ligne suivante
GOOGLE_KEY = conf.get("google", "api_key")
C - Script d'import google2piwik.py
Par défaut, le script vérifie la présence de "@gmail.com" dans le nom d'utilisateur du fichier de configuration google2piwik.conf. Nous n'avons plus besoin de cette vérification puisque le nom d'utilisateur suffit pour se connecter avec l'API key.
Il faut commenter les lignes suivantes en mettant un # en debut de ligne (l.577 à 579):
# if not config.GOOGLE_USER.split("@")[1] == "gmail.com": # print "Your e-mail address should be ending with @gmail.com" # exit()
Maintenant, il va falloir passer la clé (Api Key) dans différents appels à l'API. Cela sera possible en spécifiant un paramètre supplémentaire dans la fonction de requête datafeed.
Il faut donc remplacer ces lignes (l.471 à 477)
data_query = gdata.analytics.client.DataFeedQuery({ 'ids': self.table_id, 'start-date': day_start, 'end-date': day_end, 'dimensions': dimensions, 'metrics': metrics, 'max-results': '10000'})
par
data_query = gdata.analytics.client.DataFeedQuery({ 'ids': self.table_id, 'start-date': day_start, 'end-date': day_end, 'dimensions': dimensions, 'metrics': metrics, 'max-results': '10000', 'key': config.GOOGLE_KEY})
et faire cette modification à nouveau pour la fonction FeedFetch à partir de la ligne 482.
Malheureusement, l'interrogation des Table-IDs ne fonctionne plus de la même manière. Ils sont nécessaires pour l'importation, afin que le script sache quelles données exporter. Afin de permettre la lecture des Table-ID, une autre partie du script doit être adaptée (env. à la ligne 518):
Il faut remplacer:
def PrintTableIDs(self): account_query = gdata.analytics.client.AccountFeedQuery() table_feed = self.client.GetAccountFeed(account_query) print "Google Analytics Table IDs for your Account\n" for entry in table_feed.entry: print "Site: %30s \t table_id: %s" % (entry.title.text, entry.table_id.text)
par
def PrintTableIDs(self): account_query = gdata.analytics.client.ProfileQuery('~all', '~all', {'key': config.GOOGLE_KEY}) table_feed = self.client.GetManagementFeed(account_query) print "Google Analytics Table IDs for your Account\n" for entry in table_feed.entry: print "Site: %30s \t table_id: %s" % (entry.GetProperty('ga:profileName').value, entry.GetProperty('dxp:tableId').value)
3 - Modification de la librairie Gdata en Python
Dans ce module Google, il ne faut pas modifier trop de choses, juste le nom du serveur (hôte) et les chemins pour les requêtes qui doivent être ajustés.
Voici une liste des modifications apportées au fichier gdata-python-client client.py. Le fichier se trouve dans mon installation /usr/local/lib/python2.6/dist-packages/gdata/analytics/client.py
Ligne 116:
host = 'www.google.com'
par
host = 'www.googleapis.com'
Ligne 135:
path = '/analytics/feeds/accounts/default'
par
path = '/analytics/v2.4/management/accounts'
Ligne 158:
path = '/analytics/feeds/data'
par
path = '/analytics/v2.4/data'
Ligne 179:
path = '/analytics/feeds/datasources/ga/accounts'
par
path = '/analytics/v2.4/management/accounts'
Ligne 248:
return ('/analytics/feeds/datasources/ga/accounts/%s/webproperties'
par
return ('/analytics/v2.4/management/accounts/%s/webproperties'
D'autres lignes utilisent les anciens chemins mais comme elles ne sont pas utilisées par le script d'importation Google2Piwik, il est inutile de les modifier.
4 - Création d'un projet pour l'API
Pour accéder à la nouvelle API, nous avons besoin d'une clé API. Vous allez pouvoir la créer dans la console des API Google:
https://code.google.com/apis/console/ -> Accès à l'API
Créez d'abord un nouveau projet que vous pourrez nommer "google2piwik" par exemple à l'aide du menu déroulant:
Ensuite, une fois votre nouveau projet sélectionner, il faudra activer l'API de Google Analytics en la mettant sur Position Marche (en passant par le lien "Services"):
Vous trouverez maintenant votre clé d'API via le lien "Api Access"
Il ne vous reste plus qu'à rajouter la clé d'API dans dans le fichier de configuration google2piwik.conf déjà modifié précédemment.
5 - Importation des données
Notre fichier de config est bientôt complet afin de procéder à l'exportation des données de GA suivie de l'importation dans Piwik: il ne manque plus que la table_id correspondant à votre site dans Google Analytics.
Pour trouver la valeur ga: XXXXXXXX, il suffit de lancer la commande qui permettra de lister les ID de toutes les sites Analytics reliées au compte
./google2piwik.py -p
Il ne reste plus qu'à reporter la valeur correspondante dans le fichier google2piwik.conf qui est maintenant complet.
A - Vérification
Pour vérifier que tous les paramètres sont correctes, la commande -c vérifira que les connexions à l'API Analytics ainsi qu'à votre base de données Piwik sur MySQL sont bien OK (croisez les doigts!!)
./google2piwik.py -c
Vous devriez obtenir quelque chose comme ça:
Go!
Nous pouvons enfin lancer le script d'importation, ça peut être assez long.......soyez patients!
./google2piwik.py
Vous verrez ensuite dans la console d'API Google un joli pic apparaître dans la section "Reports", it works !
Bonne importation à tous 😉
Sources et ressources utiles
Ce tutorial est en partie une adaptation de cet article : Import von Google Analytics Daten zu Piwik Analytik mit google2piwik mit der Google API v2.4 und API Key, merci à son auteur: Marius Cramer.
Pour une installation de Piwik, je vous recommande de suivre cet article de @nicolargo à cette adresse: Remplacer Google Analytics par Piwik.
écrit dans Outils par |