Mise en oeuvre des statistiques dans esup-portail


Auteur : Vincent MATHIEU (Université Nancy 2)

Généralités


Cette page décrit comment sont activées les informations statistiques dans le moteur esup-portail.

Consulter préalablement le document décrivant globalement l'ensemble des mécanismes de stats d'esup-portail.

La mise en oeuvre de statistiques esup-portail s'appuie sur le moteur uportal. En fait, aucune modification de source d'origine n'est faite, il suffit d'indiquer à uportal qu'on désire traiter les infos statistiques d'une manière personnalisée.

C'est fait dans le fichier properties/beanRefFactory.xml , en décommentant l'entrée correspondant aus traitements statistiques :

<value>properties/statsContext.xml</value>

Ceci permet d'activer l'utilisation du fichier properties/statsContext.xml .

Il est prévu, dans la distribution native uPortal d'activer ou non les traces de certains évènements ; l'activation de ces évènements à l'aide de propriétés du fichier statsContext.xml permet de les tracer ensuite à l'aide de l'outil spécifique esup-portail.

Le package org.esupportail.portal.services.stats a été développé afin de fournir des indicateurs pertinents à l'environnement esup-portail (et compatibles avec les demandes de notre ministère).

Le développement est en fait très léger : il se contente d'intercepter les différentes 'portes' prévues à cet effet dans uportal, et de formater la sortie pour qu'elles répondent à notre demande.

Les demandes fonctionnelles d'indicateurs sont principalement de deux ordres (qui se traduisent par trois réponses techniques) :

Ce document décrit les dispositifs techniques mis en oeuvre pour exporter les informations de session, les informations d'accès aux services internes esup-portail (les canaux) et les informations d'appel à des services externes.

Cette description est informative, la distribution esup-portail se charge de mettre en oeuvre les différents paramètres lors de son déploiement, via les propriétés esup.stats.* du fichier esup.properties .

Fonctionnement global


La classe org.esupportail.portal.services.stats.StatsRecorder.java récupére les informations statistiques d'uportal validées dans le fichier statsContext.xml , les formatte et les redirige vers le 'Logger' uportal.

Pour les différents types d'indicateurs, il est nécessaire de pouvoir déterminer la catégorie de l'utilisateur (étudiant, enseignant, ...).

Ceci est fait à l'aide d'un attribut uPortal lié à la personne.

Cet attribut est paramétré dans le fichier portal.properties : org.esupportail.portal.services.stats.attributeType .

Dans le package esup-portail, il suffit de valuer dans esup.properties la propriété esup.stats.attributeType ( eduPersonPrimaryAffiliation par défaut).

Indicateurs globaux


Ils s'appuient sur les informations d'ouverture et de fermeture de sessions.

Il suffit juste d'activer dans statsContext.xml les propriétés recordSessionCreated et recordSessionDestroyed , ce qui est fait par défaut dans le package esup-portail.

Voici un extrait de logs concernant les informations de sessions :

2004-10-31 11:57:21,000 esup1 SSTART student 17 vmath999 20
2004-10-31 11:57:52,812 esup1 SSTART UNKNOWN 7 null 21
2004-10-31 11:58:10,859 esup1 SSTOP UNKNOWN 7 null 21
2004-10-31 11:59:26,046 esup1 SSTART employee 18 vmathieu 22
2004-10-31 11:59:27,156 esup1 SSTOP student 17 vmath999 20
2004-10-31 11:59:28,375 esup1 SSTOP employee 18 vmathieu 22

Dans cet exemple, les logs marquées UNKNOWN concernent un login avec le compte admin, qui n'est pas déclaré dans LDAP (et n'a donc pas d'attribut eduPersonPrimaryAffiliation ).

Les différents champs sont séparés par une tabulation. La valeur de ces champ est la suivante :


Ce sont des indicateurs traçant les actions liées à des canaux esup-portail.

Il est activé dans statsContext.xml la propriété recordChannelTargeted .

Cette propriété indique à uportal de faire appel à la classe de gestion des statistiques à chaque action dans un canal.

Il est possible de limiter la production de logs à certains canaux spécifiques ; ceci est fait à l'aide de la propriété org.esupportail.portal.services.stats.channelFnames dans le fichier portal.properties .

Cette propriété contient la liste des 'fnames' des canaux à surveiller ; les 'fnames' sont séparés par le caractère virgule (,).

Exemple : ...channelFnames=esup-webdav,pers-esup-annu,esup-mailto, ... .

Dans la distribution esup-portail, valuer la propriété esup.stats.fnames .

Les événements comptabilisés sont le nombre d'actions (de clics) et le nombre d'accès à un service.

L'accès à un service est pris en compte lors d'une premiere action dans un canal, ou lors d'une action dans ce canal alors que l'action précédente n'était pas dans celui-ci.

Afin de limiter l'écriture de logs, ces informations statistiques ne sont pas éditées au fur et à mesure des évènements, mais comptabilisées et écrites lors de la fermeture de session de l'utilisateur.

Deux informations sont produites pour chaque canal lors de la fin de session d'un utilisateur : le nombre d'actions (clic de souris, validation de formulaire, ...) global dans ce canal, et le nombre de fois ou un accès au service a eu lieu.

La fin de session d'un utilisateur donne donc lieu à enregistrement de plusieurs informations liées aux canaux auquel il a pu accéder.

Voici un extrait de logs qui peuvent être enregistrés lors de la fin de session d'un utilisateur :

2004-11-10 15:53:59,437 esup1 SSTOP employee 20 user0003 6
2004-11-10 15:53:59,438 esup1 CTARG employee 20 user0003 pers-esup-annu 2 10
2004-11-10 15:53:59,438 esup1 CTARG employee 20 user0003 esup-webdav 1 25

Le format est similaire aux logs précédentes. Le code d'évènement est CTARG (Channel TARGetetd). On retrouve le fname du canal concerné, le nombre d'accès au canal et le nombre d'actions dans le canal pour la session de l'utilisateur.

Indicateurs d'accès aux services externes


Il s'agit ici de tracer l'accès à des services externes au portail, comme le webmail, le robot de listes sympa, ...

Pour celà, il faut paramétrer le canal faisant appel au service externe afin que cet appel se fasse via la servlet /ExternalURLStats s'exécutant dans le contexte uportal.

Par exemple, pour le canal webmail, remplacer dans le fichier de configuration CImap.xml la chaine

urlWebmail="http://webmail.univ.fr/imp/mailbox.php?mailbox=%m"

par

urlWebmail="/ExternalURLStats?fname=webmail&service=http://webmail.univ.fr/imp/mailbox.php?mailbox=%m"

Voici un extrait du fichier de statistiques, lorsqu'un utilisateur accède au webmail depuis le canal imap :

2004-11-10 15:50:49,100 esup1 CCALL_EXT employee 20 user0003 webmail 1

Le code d'évenement est CCALL_EXT (Channel CALL EXTernal).

Le format est identique à celui des services internes : on obtient le fname de l'application externe (ici webmail), et le nombre d'accès ; ce nombre est toujours égal à 1, l'enregistrement étant fait au fil de l'eau et non en fin de session.