{{ :blocks:logo-apl.png?nolink |}} ===== 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 ''/proc'' lisible, 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 ''moodleload'' dans le répertoire ''admin/tool'' de 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 ''/proc'' plus 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 exemple ''20-6'' ou ''12-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 exemple ''https://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 compte ''moodleload'' de 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=&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é. ---------- [[:tool:moodleload|Revenir à l'index du composant]] - [[:Plugins|Revenir à l'index des plugins]] - [[:start|Revenir au catalogue]]