Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Nous en profitons pour extraire davantage d'informations ce qui rend les indicateurs plus parlants. Il est nécessaire pour intégrer cette solution de travailler côté moodle mais elle présente l'avantage de ne pas être intrusive et de n'utiliser que la consultation de la base moodle.

Travail côté moodle

Info

Si vous ne souhaitez pas effectuer de traitement côté moodle, vous pouvez regarder la solution mise en place par l'université de La Réunion et disponible en bas de cette page.

Récupération des cours et des noms de modules

La récupération des noms de modules n'est à faire qu'une seule fois. Le script python liste_modules.py (à paramétrer) permet de générer un fichier yaml (moodle-activites.yml) qui sera utilisé dans le traitement logstash pour associer un nom lisible à un module.
Vous pouvez compléter/modifier la liste générée, y compris en ajoutant le wildcard *. Exemple :

...

Lorsque vous exécuterez ce script et enverrez le résultat sur le serveur Agimus, prenez garde à ne pas exécuter le traitement logstash avant que l'envoi ne soit fait.

Mise en place d'une table des logs temporaire (facultatif)

Cette étape est facultative mais a le mérite de faciliter le traitement des logs. Nous utilisons la possibilité offerte par moodle de stocker une partie des logs dans une base externe en plus de la base habituelle.
Ceci va nous permettre de traiter quotidiennement la totalité des logs depuis notre dernier traitement. Il suffira de supprimer les logs de cette nouvelle base à la fin du traitement logstash.

Pour mettre en place cette nouvelle base, connectez-vous à la page de gestion des stockages d'historiques (moodle.univ.fr/admin/settings.php?section=managelogging)

 

Image RemovedImage Added

Puis dans Paramètres, vous renseignerez les paramètres d'accès à cette base ainsi que les filtres suivants :

Image RemovedImage Added

 

Intégration dans Agimus

Envoi des données dans elasticsearch

  1. Logstash va devoir se connecter à la base de données de moodle pour récupérer ses informations. Pour cela, nous utilisons le plugin input jdbc. Pour qu'il puisse fonctionner il faut télécharger le driver correspondant à votre installation et paramétrer correctement les configurations logstash correspondantes. Un exemple est donné dans les fichiers sur github.
  2. Il faut copier le fichier de mapping des activités (moodle-activites.yml généré par liste_modules.py) que vous avez créé précédemment dans le dossier /opt/agimus-ng/build/logstash/maps/ de votre serveur agimus. Il sera utilisé dans le traitement des logs de la base logstash-moodle-from-db.conf.
  3. Il faut exécuter le script de récupération des catégories moodle. Vous pouvez l'intégrer dans le traitement quotidien ou l'exécuter ponctuellement. L'important est que le fichier résultat (logstash/maps/moodle-activites.yml) soit présent

    Bloc de code
    /opt/logstash/bin/logstash -f /opt/agimus-ng/build/logstash/logstash-moodle-categories.conf


  4. Vous devez soit relancer le script de déploiement soit recopier les nouveaux fichiers liés à moodle (dans scripts/moodle et dans logstash/logstash-moodle-*) et les adapter à votre environnement
  5. Ajouter le nouveau template elasticsearch

    Bloc de code
    languagejs
    titletemplate moodle pour elasticsearch
    collapsetrue
    PUT  _template/moodle 
    {
        "order": 2,
        "template": "logstash-*",
        "settings": {},
        "mappings": {
          "coursmoodle": {
            "dynamic_templates": [
              {
                "type_activites_as_int": {
                  "mapping": {
                    "type": "integer"
                  },
                  "path_match": "mdl_type_activites.*"
                }
              }
            ],
            "properties": {
              "mdl_nom_cat": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_activites": {
                "properties": {
                  "nom_activite": {
                    "index": "not_analyzed",
                    "type": "string",
                    "fields": {}
                  },
                  "id_activite": {
                    "type": "integer"
                  }
                },
                "type": "nested"
              },
              "mdl_nom_niv2": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_id_niv2": {
                "type": "integer"
              },
              "mdl_actif": {
                "type": "boolean"
              },
              "mdl_nom_niv1": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_courseid": {
                "type": "integer"
              },
              "mdl_id_cat": {
                "type": "integer"
              },
              "mdl_nom_cours": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_id_niv1": {
                "type": "integer"
              }
            }
          },
          "moodledblog": {
            "properties": {
              "uid": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_nom_niv2": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_nom_niv1": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_objectid": {
                "type": "integer"
              },
              "mdl_contextid": {
                "type": "integer"
              },
              "mdl_nom_cours": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_target": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_objecttable": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_nom_cat": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_actif": {
                "type": "boolean"
              },
              "mdl_courseid": {
                "type": "integer"
              },
              "mdl_crud": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_id": {
                "type": "integer"
              },
              "mdl_action": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_component": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_activite": {
                "index": "not_analyzed",
                "type": "string",
                "fields": {}
              },
              "mdl_contextinstanceid": {
                "type": "integer"
              }
            }
          }
        },
        "aliases": {}
    }


  6. Il faut également activer le traitement quotidien dans le fichier de batch daily_batch.sh

Création du nouveau tableau de bord

Le nouveau tableaux de bord est disponible sur le github : https://github.com/EsupPortail/agimus-ng/blob/master/kibana/dashboard/Moodle.json

Il faut également importer les visualisations associées disponibles ici : https://github.com/EsupPortail/agimus-ng/tree/master/kibana/visualization

Exemple de mise en pratique

Université de La Réunion

L'université de La Réunion a également intégré un tableau de bord moodle basé sur la table des logs. Vous pouvez en voir le rendu sur la page 5 - Les tableaux de bord disponibles

...