Récupérer ses logs d’accès Kimsufi Web

tbowan , aryliin

19 Mars 2020

Je ne sais pas ce que vous feriez sans vos logs d’accès web, alors pour vous aider, voici comment les récupéré chez OVH.

Lorsqu’on administre une application web, on a toujours besoin d’accéder aux journaux du serveur web. Les journaux d’accès, d’un côté, qui permettent un suivi statistique des visiteurs, font plaisir à l’égo et permettent de savoir ce qui marche mieux et ce qui marche moins bien. Les journaux d’erreur, de l’autre, qui permettent de suivre la bonne exécution de l’application, mais surtout de détecter et corriger des problèmes.

Lorsqu’on héberge @home, c’est facile, ces journaux sont dans des fichiers faciles d’accès qu’on peut ouvrir ou copier pour les exploiter. Les choses sont un peu différentes si vous louez un serveur dédié puisque tout est à distance mais rien de bien compliqué en fait.

Les choses se compliquent lorsqu’on utilise un hébergement mutualisé (ou toute autre truc as a service) car cette fois, rien ne garanti que les journaux soient dans les fichiers habituels ni même que vous y aillez accès. Chaque fournisseur ayant ses propres contraintes et habitudes, vous devrez vous adapter pour les obtenir ces logs, ou pleurer lorsqu’il n’y en a pas…

Récupération périlleuse… illustration de EliasSch

C’est ce que nous avons découvert lorsqu’on est passé chez kimsufi web, les journaux ne sont pas accessible ni via l’application, ni via FTP mais sur un portail https spécifique qu’il a fallu apprivoiser. Et comme on est des gens bons, on vous partage la démarche et les scripts nécessaires.

Parce qu’ils sont comme ça les arsouyes…

Où sont les logs ?

Si vous n’avez besoin que d’un accès manuel à vos logs, c’est plutôt facile. L’interface de gestion de votre hébergement a tous les liens et boutons pour obtenir les fameux fichiers.

Pour ça, il faut d’abord se connecter en allant sur le site officiel ovh.com puis, dans le menu en haut, cliquer sur mon compte client. Je suppose que vous avez déjà un compte, c’est donc la zone de gauche que vous complétez pour vous connecter.

Écran de connexion au compte client OVH

La page d’accueil ne vous aidera pas énorme, il faut aller dans le menu en haut à gauche, choisir « Web » puis « Hébergement » et enfin cliquer sur votre hébergement spécifique (ici, arsouyes.org).

Menu pour aller à votre hébergement

Si vous avez un écran ou une fenêtre trop étroite, après avoir cliqué, on reste sur ce menu et le reste de la page reste grisé. Il faut cliquer n’importe où dans la zone grise, ça quitte le menu et on peut voir la page (qui s’est chargée entre temps). C’est dommage mais que voulez-vous ?

J’aime beaucoup cet écran, surtout les stats en bas mais ça n’est pas ici qu’on trouvera le liens vers les logs. Pour ça, il faut aller au dernier onglet (qui s’appelle « Plus + ») puis choisir « Statistiques et logs ».

Onglet pour obtenir les journaux

On se rapproche, mais on n’y est pas encore. Cette fois, l’écran nous propose soir d’aller voir les statistiques (avec urchin6), soit d’aller voir les logs, ça tombe bien, c’est ce qu’on voulait.

Prémonition : Notez l’adresse du lien vers les logs, vous en aurez besoin pour l’automatisation.

Écran des statistiques et des logs

Le navigateur ouvre alors un nouvel onglet (genre je sais pas choisir tout seul quand je veux un nouvel onglet…) et commence par nous rappeler deux liens pour voir des statistiques (des fois qu’on ait cliqué sur logs par erreur).

Mais on touche au but, la page vous proposes de télécharger les logs du jour (premier encart) ou ceux des mois précédents. Notez que les boutons (en fait, des liens) ne sont bleus que s’il y a effectivement des événements qui ont été journalisés.

Écran principal des journaux

Que vous cliquiez sur la première zone ou la deuxième, vous obtenez une nouvelle page avec un tableau contenant les fichiers disponibles (un seul si c’est aujourd’hui et ça dépend des mois sinon).

Prémonition : Notez qu’OVH trie vos fichiers dans un répertoire pour chaque mois (dont le nom se compose de l’année puis du mois). Et que chaque fichier regroupe les logs d’un jour (dont le nom contient la date au format jour, mois, année, séparés par des tirets). Le format ISO 8601 aurait été plus pratique, on va devoir faire avec.

Liste des fichiers journaux disponibles

Vous pouvez maintenant cliquer sur le fichier que vous voulez pour le télécharger ou le visualiser.

Tourisme : Les fichiers sont compressés au format gzip mais comme c’est aussi un format standards pour compresser des réponses web, votre navigateur peut (et va) vous le décompresser pour vous afficher directement le contenu.

Créer un nouvel utilisateur

Si, par contre, vous voulez récupérer vos logs régulièrement, et automatiquement, il va falloir créer un utilisateur spécifique.

Personnellement, je trouve que « créer un compte » serait plus juste car pour créer un utilisateur, il faut un papa et une maman, ou du personnel médical qualifié. Remplir trois popup, mis à part sur des sites illégaux, ça suffit généralement pas.

Pour ça, il faut repartir de la page Statistiques et logs, celle avant que le navigateur n’ouvre un onglet, ce qui, du coup, est pratique.

Vous devriez alors voir un bouton « créer un nouvel utilisateur ». Sur la droite lorsque la fenêtre est large, en bas sinon.

créer un nouvel utilisateur

Cliquer sur ce bouton va vous ouvrir une série de popup à compléter. Le premier concerne l’identifiant du compte (et une petite description pour savoir pourquoi vous l’avez créé).

Prémonition : Notez le nom du compte, vous allez en avoir besoin ensuite.

Configuration de l’identifiant

Le deuxième popup configure l’authentification en vous demandant d’entrer un mot de passe. Deux fois pour éviter les erreurs de saisies.

Prémonition : Normalement, vous devriez avoir pensé à noter ce mot de passe pour plus tard, mais je vous le dit quand même histoire de ne rien oublier.

Configuration de l’authentification

Le dernier popup vous demande de confirmer la création du nouvel utilisateur.

Confirmation de création de l’utilisateur

Notez que si vous vous êtes trompé, vous pourrez toujours modifier ces paramètre ou supprimer le compte. L’écran des statistiques ayant aussi la liste des comptes créé et un bouton en fin de chaque ligne.

Liste des utilisateurs et bouton de configuration

Un script pour les récupérer tous

À ce stade, vous disposez de toute les informations nécessaires pour récupérer automatiquement vos logs :

  1. Le lien vers la page des logs,
  2. Le nom d’utilisateur,
  3. Le mot de passe de l’utilisateur.

On va enfin pouvoir scripter. Cette fois, on va faire du bash parce que c’est largement suffisant, on va utiliser wget parce qu’il est plus sexy que curl, et sed parce qu’il est plus chouette que awk (avis totalement subjectifs et assumés).

Par convention, mon script récupérera les logs de la veille, sauf si on lui passe une date (au format OVH) en argument. Et comme je préfère les dates en ISO 8601 (année, mois, jour), c’est sous cette forme que je sauvegarderai le résultat.

Pour utiliser ce script, changez les 5 variables globales avec les valeurs correspondant à votre hébergement.

#!/bin/bash

#-------------------------------------------------------------------------
# Paramètres à compléter
#
URL="https://logs.clusterXXX.hosting.ovh.net/votresite.org/"
LOGIN="votre_login"
PASS="votre_motdepasse"
SITE="votresite.org"
LOG_DIR=/quelque/part

#-------------------------------------------------------------------------
# Calcul de l'URI pour la requête
#
if [[ $# -eq 0 ]] ; then
    # Si aucun argument, on récupère la veille
    DATE=`date '+%d-%m-%Y' --date '1 day ago'`
    MOIS=`date '+%m-%Y' --date '1 day ago'`
else
    # Sinon, on détermine le mois depuis l'argument
    DATE=$1
    MOIS=$(echo $DATE | sed -e "s/...//")
fi
URI=$URL/logs/logs-$MOIS/$SITE-$DATE.log.gz

#-------------------------------------------------------------------------
# Calcul du nom du fichier local
#
ISODATE=$(echo $DATE | sed -e "s/\(..\)-\(..\)-\(....\)/\3-\2-\1/")
OUTPUT=$LOG_DIR/$SITE.org-$ISODATE.log

#-------------------------------------------------------------------------
# Récupération du fichier
#
rm -f $OUTPUT
wget "$URI" --http-user=$LOGIN --http-password=$PASS -O $OUTPUT.gz

Tourisme : Si vous voulez récupérer tout un mois d’un coup, vous pouvez bâtir l’URL correspondance puis utiliser wget avec l’option -r pour être récursif et récupérer le contenu du répertoire et éventuellement -nd pour que wget ne recrée par l’arborescence des répertoire d’OVH et vous mette tout à plat là où vous voulez (i.e. un répertoire dans votre système spécifié par l’option -P).

On peut alors rendre le script exécutable :

chmod a+x /quelque/part/votre_script.sh

Automatiser

Comme le but, c’est que tout se fasse tout seul sans qu’on ait besoin d’intervenir, on va ajouter une tâche planifiée dans la crontab via la commande suivante :

crontab -e

Ce qui vous ouvre la liste des tâches planifiées vous permettant d’en ajouter et d’en supprimer. Pour le coup, vous pouvez simplement ajouter la ligne suivante :

00 03 * * * /quelque/part/votre_script.sh

OVH met à jour ses fichiers de logs « tôt le matin ». Il fut un temps où c’était peu après 3h puis ce fut peu après 1 heure (heure locale, UTC+2 ou UTC+1 suivant la saison…). Pour éviter les problèmes, regardez la date de génération des fichiers de logs puis l’heure de votre système et adaptez votre crontab en conséquent.

Avertissement : N’oubliez pas que tous vos chemins doivent être absolus (dans la crontab mais aussi dans le script) car dans une tâche planifiée, vous ne savez pas forcément où vous êtes (et ce serait une mauvaise pratique que de se baser là dessus).

Et après ?

Sachez que ces fichiers contiennent des adresses IP et sont donc couvert par le RGPD. Mis à part si vous êtes un particulier, vous ne pouvez pas faire n’importe quoi avec à moins de les anonymiser.

Anonymiser les adresses IP pour faire des statistiques

23 Mars 2020 Je ne sais pas vous, mais moi, j’adore faire des statistiques. Le problème, c’est lorsqu’on traite de données personnelles. Aujourd’hui, je vais vous expliquer pourquoi et comment anonymiser ces adresses.


Déployer un site web via sftp et Gitlab

10 juin 2019 Avec notre nouvel hébergement, nous avons du revoir nos scripts de déploiement continu. Remplacer rsync par lftp n’est pas compliqué mais nécessite de fournir les données d’authentifications à l’environnement de déploiement. Heureusement, gitlab fournit une méthode sécurisée pour protéger ces informations sensibles.

Sécuriser son Kimsufi Web avec SFTP et Let’s Encrypt

1er juillet 2019 Une fois son hébergement web activé, il est utile de configurer certains paramètres incontournables liés à la sécurité de votre site : SFTP pour vos transferts de fichiers et TLS pour vos visiteurs.