Table des matières
Moodle Load Monitor : Installation et configuration
Ce guide décrit l'installation de l'outil tool_moodleload sur le site Moodle à tester, la préparation du compte technique utilisé par le moteur MoodleLoad et le raccordement au front MoodleLoad.
Le composant est en maturité alpha. Ne l'installez pas sur un site de production : il expose des métriques système, autorise des tests de charge et crée un compte technique doté de droits étendus.
Prérequis
- Moodle 4.3 ou supérieur (testé sur 4.5).
- PHP 8.1 ou supérieur.
- Un serveur Linux avec un système de fichiers
/proclisible, pour les mesures CPU et mémoire. Sous Windows, seules certaines mesures sont disponibles (pas de charge moyenne). - Les web services activés dans Moodle, avec le protocole REST.
- Un front MoodleLoad accessible depuis le site (URL, et jeton de service fourni par MoodleLoad) pour la vue d'état et le lancement de tests.
Installation
- Copiez le dossier
moodleloaddans le répertoireadmin/toolde votre installation Moodle (chemin final :admin/tool/moodleload). - Connectez-vous en administrateur et allez à Administration du site / Notifications pour terminer l'installation.
- Activez les web services s'ils ne le sont pas : Administration du site / Fonctionnalités avancées / Activer les services web.
- Activez le protocole REST : Administration du site / Serveur / Services web / Gérer les protocoles.
- Videz les caches (Administration du site / Développement / Purger les caches).
Les étapes 3 et 4 ne sont pas faites par le plugin : sans elles, le jeton du compte technique est refusé.
Ce que l'installation crée
L'installation prépare automatiquement le compte utilisé par le moteur MoodleLoad. Elle est rejouée à la mise à jour sur les sites installés avant cette fonction, et elle peut être relancée sans risque.
| Élément | Détail |
|---|---|
| Service web | Moodle Load Monitor (nom abrégé moodleload_monitor), réservé à des utilisateurs autorisés, avec dépôt de fichiers activé et téléchargements désactivés. |
| Utilisateur | moodleload (« Moodle Load Test Engine »), authentification manuelle, mot de passe aléatoire inconnu, adresse fictive moodleload@moodleload.invalid, courriels désactivés. Un compte moodleload préexistant est conservé. |
| Autorisation | Le compte est ajouté aux utilisateurs autorisés du service. |
| Rôles | Rôle Gestionnaire au niveau système (le moteur gère cours, catégories et utilisateurs), et un petit rôle dédié Moodle Load web service (nom abrégé moodleloadws) qui porte uniquement webservice/rest:use. Sans lui, le jeton serait refusé pour un utilisateur qui n'est pas administrateur du site. |
| Jeton | Un jeton permanent sur le service, valable 3 mois. Il n'est affiché nulle part. |
| Catégorie de cours | Une catégorie de premier niveau Tests de charge (Load Tests), nommée selon la langue du site. Elle sert de destination par défaut aux cours de test restaurés. |
Le compte moodleload dispose de droits de gestion : ne lui attribuez pas d'autre rôle et surveillez son usage.
Récupérer le jeton
Le jeton est lu dans Administration du site / Serveur / Services web / Gérer les jetons, sur la ligne de l'utilisateur moodleload et du service Moodle Load Monitor. Il est à transmettre au front MoodleLoad, jamais à publier ni à envoyer par courriel non chiffré.
Le jeton n'est pas renouvelé automatiquement. Au bout de trois mois, créez-en un nouveau pour le même utilisateur et le même service, et mettez à jour le front.
Capacités
| Capacité | Contexte | Défaut | Rôle |
|---|---|---|---|
tool/moodleload:readmetrics | Système | Gestionnaire | Lire les métriques de l'hôte (tableau de bord et web service tool_moodleload_get_metrics) |
tool/moodleload:setuptests | Système | Gestionnaire | Préparer le matériel de test (dépôt de fichiers, restauration de cours, création d'utilisateurs en masse) |
La vue d'état du moteur (view.php) est réservée aux administrateurs du site (moodle/site:config).
Configuration
Chemin : Administration du site / Plugins / Outils d'administration / Réglages Moodle Load Monitor.
Mesures
- Durée de vie du cache de mesure CPU (
cache_ttl, 5 secondes par défaut) : durée pendant laquelle la mesure CPU est conservée dans le cache universel de Moodle. Une valeur plus courte donne des écarts plus précis mais lit/procplus souvent.
Autorisation des tests de charge
MoodleLoad ne lance un test sur ce site qu'après une poignée de main signée avec le plugin (service web tool_moodleload_authorize_load). Ces réglages limitent l'exposition du site :
- Autoriser les tests de charge (
allowload) : décoché, MoodleLoad refuse tout nouveau test et arrête ceux en cours à leur prochain contrôle. - Charge maximale (
maxload) : nombre maximal de sessions utilisateur simultanées. 0 pour aucune limite. - Heures autorisées (
allowedhours) : plages horaires, en heure du serveur, par exemple20-6ou12-14,20-23. Une plage qui finit avant son début passe minuit. Vide pour toute heure.
Raccordement au front MoodleLoad
- URL du front MoodleLoad (
frontendurl) : URL de base sans barre oblique finale, par exemplehttps://load.example.com. - Jeton de web service (
token) : jeton fourni par MoodleLoad pour interroger l'état du moteur et des jobs. Il doit être généré pour le service Moodle Load Monitoring API du front : un jeton du service Moodle Load Collector API est refusé. Ne le confondez pas avec le jeton du comptemoodleloadde ce site. - Délai maximal de requête (
timeout, 10 secondes par défaut) : temps d'attente de la réponse du front.
Authentification HTTP du front (optionnelle)
À renseigner seulement si le front est lui-même protégé par une authentification HTTP (une préproduction derrière un .htpasswd, par exemple). Laissez l'utilisateur vide sinon.
- Utilisateur HTTP et Mot de passe HTTP.
- Méthode : Basic (par défaut), Digest ou Automatique (négociée par curl, au prix d'une requête supplémentaire).
Si le front est sur un réseau interne, autorisez son hôte et son port dans les réglages de sécurité de Moodle (curlsecurityblockedhosts et curlsecurityallowedport).
Vérifier l'installation
- Tableau de bord : ouvrez la page de l'outil (Administration du site / Serveur ou lien du plugin) : les métriques de l'hôte s'affichent et se rafraîchissent. Le premier relevé CPU est vide (valeur −1) : il faut deux mesures espacées d'environ 5 secondes.
- Web service : avec le jeton du compte
moodleload, appelez la fonction de mesure. La réponse contient l'horodatage, le CPU, la mémoire et la charge moyenne.
GET /webservice/rest/server.php?wstoken=<JETON>&wsfunction=tool_moodleload_get_metrics&moodlewsrestformat=json
- Vue d'état : Administration du site / Développement / Testeur de charge MoodleLoad : état du moteur et des injecteurs : l'état du moteur et les jobs du propriétaire du jeton s'affichent si l'URL et le jeton du front sont corrects.
Dépannage
| Symptôme | Cause probable |
|---|---|
| Jeton refusé | Web services ou REST non activés ; jeton expiré (3 mois) ; utilisateur moodleload non autorisé sur le service. |
| Réponse CPU à −1 | Premier appel : rappelez après quelques secondes. |
| Pas de mesures mémoire / CPU | Hôte non Linux ou /proc illisible. |
| Vue d'état : HTTP 401 | Authentification HTTP du front : vérifiez utilisateur, mot de passe et méthode. |
| Vue d'état : hôte bloqué | Front sur réseau interne : ajustez curlsecurityblockedhosts et curlsecurityallowedport. |
| Vue d'état : jeton refusé par le front | Jeton généré pour le mauvais service du front (Collector au lieu de Monitoring API). |
| Fonctions de test absentes après une mise à jour | Visitez les notifications d'administration (la définition du service est mise à jour), puis purgez les caches. |
Mise à jour et désinstallation
Après chaque mise à jour du dossier, passez par les notifications d'administration puis purgez les caches. Les mises à jour qui modifient la définition du service (ajout de fonctions, dépôt de fichiers) l'exigent.
À la désinstallation, le plugin retire les jetons, l'autorisation du service, les affectations de rôles, le rôle dédié, la catégorie Tests de charge si elle est vide, les fichiers de test déposés et le compte moodleload s'il l'a lui-même créé. Un compte préexistant n'est pas supprimé : seul ce que le plugin lui a ajouté est retiré.
Revenir à l'index du composant - Revenir à l'index des plugins - Revenir au catalogue
