====== Référence pour le développement de Pandora FMS ====== {{indexmenu_n>1}} ===== Développement Pandora FMS ===== ==== Architecture générale du code de Pandora FMS ==== Pour une explication distincte et détaillée de la structure de la base de données Pandora FMS, consultez l'article [[:fr:documentation:pandorafms:complex_environments_and_optimization:09_pandorafms_engineering#tables_principales_de_la_base_de_donnees|Ingénierie Pandora FMS]]. === Comment faire des liens compatibles === Pour tous les liens, vous devez utiliser la fonction ui_get_full_url. * Comment utiliser ui_get_full_url \\ Avant d'appeler la fonction, vous devez inclure « functions_ui.php ». * Lorsque vous avez besoin de l'URL pour rafraîchir : \\ Par exemple $url_refresh = ui_get_full_url(); * Vous avez besoin d'une URL pour un chemin relatif \\ Par exemple //Méthode ancienne// $url = $config['homeurl'] . "/relative/path/file_script.php"; //Nouvelle méthode// $url = ui_get_full_url("/relative/path/file_script.php"); * Et en javascript ? C'est aussi simple que ça. \\ Par exemple //Méthode ancienne// * Cas particuliers : * Dans les liens directs vers index.php, il n'est pas nécessaire d'utiliser cette fonction. \\ Par exemple echo === Points d'entrée d'exécution de la console Pandora FMS === La Console Pandora FMS ne dispose que de quelques points d'entrée d'exécution de l'application Web. Contrairement à d'autres applications Web telles que Wordpress qui a à peine un point d'entrée pour le frontend et un backend pour l'administration. Ou le développement de sites Web de PME qui, normalement, chaque fichier php est un point d'entrée possible. == Installation == Ce point d'entrée est pour effectuer une installation de la Console Pandora FMS et la base de données. Une fois l'installation terminée, Pandora FMS Console demande la suppression du fichier par sécurité. install.php == Exécution normale == Toute interaction des utilisateurs dans la console se fait par ce point d'entrée. index.php == Pétitions AJAX == Toutes les requêtes Ajax pour les sécuriser (car les autorisations utilisateur sont vérifiées) et les rendre cohérentes et faciles à maintenir sont effectuées à travers ce fichier en passant par GET ou POST le paramètre page l'adresse relative du script à exécuter. ajax.php == Console mobile == Pour les terminaux mobiles dont l'écran est nettement plus petit que celui d'un ordinateur, Pandora FMS dispose d'une version réduite de la console pour ces appareils, dont l'aspect visuel est réduit et les fonctionnalités simplifiées. mobile/index.php {{ :wiki:pfms-mobile_web_console-example-00.png }} == API == Depuis la version Pandora FMS 3.1, il dispose d'une API de type REST avec laquelle des applications tierces peuvent interagir via un simple canal sur le port 80 et avec le protocole HTTP. La sécurisation de ce script se fait au moyen de trois paramètres, en validant les trois : * Que l'adresse IP du client qui l'exécute soit dans la liste des adresses IP valides réglées dans la configuration de la Console Pandora FMS ou corresponde avec l'expression régulière également enregistrée au même endroit. * Vous avez passé par paramètre l'API password qui est également configurée dans le setup de la Console Pandora FMS. * Faites passer par paramètre l'utilisateur et le mot de passe de l'utilisateur qui va effectuer l'action de l'API. include/api.php == Cas particuliers == Dans la Console Pandora FMS, il existe plusieurs cas spéciaux pour les points d'entrée, généralement en évitant les connexions ou les traitements généraux effectués au point d'entrée principal (index.php de la racine). **Extension Tâches Cron** Cette extension à l'aide d'une commande wget dans le cron peut exécuter les tâches cron qui lui ont été assignées sans demander de connexion de manière interactive. Bien sûr, l'ensemble des tâches est délimité et connu empêchant l'exécution de code malveillant sans connexion. enterprise/extensions/cron/cron.php **Console visuelle vue externe** Il génère une page avec la vue d'une console visuelle en plein écran sans avoir besoin d'une connexion, bien que pour l'authentification si un hachage généré pour chaque vue publiée de cette manière soit nécessaire. operation/visual_console/public_console.php **Console Networkmap Popup détail** Une fenêtre contextuelle qui affiche la vue détaillée d'un agent qui a un élément dans la console Networkmap. Permet d'authentifier la session de l'utilisateur qui s'est connecté à la Console Pandora FMS. enterprise/operation/agentes/networkmap_enterprise.popup.php **Graphique de modules Popup** Une fenêtre contextuelle qui affiche un graphique d'un module en détail et qui permet également de configurer plusieurs paramètres d'affichage. Elle utilise les données de l'utilisateur qui s'est connecté à la Console Pandora FMS pour l'authentification. operation/agentes/stat_win.php **Graphiques statiques** Les graphiques statiques sont des fichiers image qui sont générés à l'aide de scripts PHP, les données à afficher, si elles sont étendues sont sérialisées dans un fichier spécial qui traite le script, ce fichier a une durée de vie pour éviter les accès malveillants et les attaques par DEUX. Pour exécuter ce script, il n'est pas nécessaire d'être authentifié dans Pandora FMS. include/graphs/fgraph.php **Rapports** **Rapport sur CSV** Le script génère un fichier texte contenant les données CSV, pour l'authentification utilise les données de l'utilisateur connecté. enterprise/operation/reporting/reporting_viewer_csv.php **Rapport en PDF** Le script génère un fichier texte contenant les données PDF, pour l'authentification il utilise les données de l'utilisateur connecté. enterprise/operation/reporting/reporting_viewer_pdf.php **Événements** **Événements sonores Popup** Fenêtre contextuelle qui vérifie périodiquement s'il existe un événement pour le montrer de manière sonore et visuelle. L' authentification se fait à l'aide des données de l'utilisateur connecté. operation/events/sound_events.php **Événements en CSV** Le script génère un fichier texte contenant les données CSV, pour l'authentification il utilise les données de l'utilisateur connecté. operation/events/export_csv.php **Événements en RSS** Le script génère un fichier texte contenant les données CSV, pour l'authentification il utilise les données de l'utilisateur connecté dans un hash en tant que paramètre. operation/events/events_rss.php ==== Fonctions de base pour obtenir l'état de l'agent, du module et des groupes ==== === Critère pour les États et codification dans la base de données === Description des états de l'agent : * Critique (couleur rouge) : 1 ou plusieurs modules dans un état critique. * Avertissement (couleur jaune) : 1 ou plusieurs modules en état d'avertissement et aucun en état critique. * Inconnu (couleur grise) : 1 ou plusieurs modules dans un état inconnu et aucun dans un état critique et d'avertissement. * Normal (couleur verte) : Tous les modules sont à l'état nominal. Code interne de l'état dans la base de données : * Critique : 1 * Avertissement : 2 * Inconnu : 3 * Normal : 0 === Agents === == Fonctions d'État == Ces fonctions renvoient le nombre de modules et d'alertes déclenchées par un agent en appliquant un filtre en option. Toutes les fonctions ont l'option **filter** qui a été ajoutée pour rendre la fonction plus flexible. Le contenu du filtre est ajouté à la fin de la requête SQL dans toutes les fonctions. Avec le filtre, vous pouvez ajouter des clauses SQL spécifiques pour créer des filtres en utilisant les tables : **tagent_état**, **tagent** et **tagent_module**. * **agents_monitor_critical ($id_agent, $filter =_ckgedit_QUOT__ckgedit>)** : Il renvoie le nombre de modules dans un état critique pour l'agent. ***agents_monitor_warning ($id_agent, $filter =_ckgedit_QUOT__ckgedit>)** : Il renvoie le nombre de modules en état d'avertissement pour l'agent. * **agents_monitor_unknown ($id_agent, $filter =_ckgedit_QUOT__ckgedit>)** : Il renvoie le nombre de modules dans un état unconnu pour l'agent. ***agents_monitor_ok ($id_agent, $filter =_ckgedit_QUOT__ckgedit>)** : Il renvoie le nombre de modules en état normal pour l'agent. * **agents_get_alerts_fired ($id_agent, $filter ="")** : Il renvoie le nombre d'alertes déclenchées pour l'agent. == Fonctions auxiliaires == Ces fonctions exécutent des tâches liées aux agents pour certaines vues : * **agents_tree_view_alert_img ($alert_fired)** : Il retourne le chemin de l'image d'alerte utilisée dans la vue Tree View. * **agetns_tree_view_status_img ($critical, $warning, $unknown)** : Il retourne le chemin de l'image pour l'état de l'agent utilisé dans la vue Tree View. == Groupes == Ces fonctions renvoient les statistiques des agents et des modules pour les groupes d'agents définis dans Pandora FMS. Soyez prudent ! Les fonctions serveur et console doivent utiliser les mêmes requêtes SQL pour s'assurer que le résultat est calculé de la même manière. == Fonctions du serveur == * **pandora_group_statistics** : Cette fonction calcule les statistiques de groupe si le paramètre **Use realtime statistics** est désactivé. == Fonctions de la console == Les fonctions de la console calculent les statistiques sur la base d'un tableau de groupes d'agents. Ces fonctions n'utilisent pas les agents ou modules désactivés. * **groups_agent_unknown ($group_array)** : Il renvoie le nombre d'agents dans un état inconnu pour les groupes donnés. * **groups_agent_ok ($group_array)** : Il renvoie le nombre d'agents dans un état normal pour les groupes donnés. * **groups_agent_critical ($group_array)** : Il renvoie le nombre d'agents dans un état critique pour les groupes donnés. * **groups_agent_warning ($group_array)** : Il renvoie le nombre d'agents dans un état d'avertissement pour les groupes donnés. Ces fonctions calculent les statistiques pour les modules. Ces fonctions n'utilisent pas les agents ou modules désactivés. * **groups_monitor_not_init ($group_array)** : Il renvoie le nombre de modules dont l'état n'est pas initialisé pour les groupes donnés. * **groups_monitor_ok ($group_array)** : Il renvoie le nombre de modules en état normal pour les groupes donnés. * **groups_monitor_critical ($group_array)** : Il renvoie le nombre de modules en état critique pour les groupes donnés. * **groups_monitor_warning ($group_array)** : Il renvoie le nombre de modules en état d'avertissement pour les groupes donnés. * **groups_monitor_unknown ($group_array)** : Il renvoie le nombre de modules en état inconnu pour les groupes donnés. * **groups_monitor_alerts ($group_array)** : Il renvoie le nombre avec des alertes pour les groupes donnés. * **groups_monitor_fired_alerts ($group_array)** : Il renvoie le nombre de modules avec des alertes déclenchées pour les groupes donnés. === Modules === Ces fonctions renvoient les statistiques basées sur le nom du module. Il ne prend pas en compte les agents et les modules désactivés. * **modules_agents_unknown ($module_name)** : Il renvoie le nombre d'agents en état inconnu qui ont un module avec le nom donné. * **modules_agents_ok ($module_name)** : Il renvoie le nombre d'agents en état normal qui ont un module avec le nom donné. * **modules_agents_critical ($module_name)** : Il renvoie le nombre d'agents en état critique qui ont un module avec le nom donné. * **modules_agents_warning ($module_name)** : Il renvoie le nombre d'agents en état d'avertissement qui ont un module avec le nom donné. Ces fonctions renvoient les statistiques en utilisant le groupe de modules comme filtre. Il ne prend pas en compte les agents et les modules désactivés. * **modules_group_agent_unknown ($module_group)** : Il renvoie le nombre d'agents à l'état inconnu ayant des modules appartenant au groupe de modules donné. * **modules_group_agent_ok ($module_group)** : Il renvoie le nombre d'agents à l'état normal ayant des modules appartenant au groupe de modules donné. * **modules_group_agent_critical ($module_group)** : Il renvoie le nombre d'agents à l'état critique ayant des modules appartenant au groupe de modules donné. * **modules_group_agent_warning ($module_group)** : Il renvoie le nombre d'agents à l'état d'avertissement ayant des modules appartenant au groupe de modules donné. === Politiques === Ces fonctions renvoient le nombre d'agents pour chaque état et politique donnée. Ils n’utilisent pas d’agents et de modules désactivés pour calculer le résultat. * **policies_agents_critical ($id_policy)** : Il renvoie le nombre d’agents d’état critiques appartenant à une stratégie donnée. * **policies_agents_ok ($id_policy)** : Il renvoie le nombre d’agents d’état normales appartenant à une politique donnée. * **policies_agents_unknown ($id_policy)** : Il renvoie le nombre d’agents d’état unconnu appartenant à une politique donnée. * **policies_agents_warning ($id_policy)** : Il renvoie le nombre d’agents en état d'avertissement appartenant à une politique donnée. === OS === Ces fonctions calculent les statistiques pour les agents sur la base des systèmes d'exploitation auxquels ils appartiennent. Ces fonctions n'utilisent pas les agents ou modules désactivés. * **os_agents_critical ($id_os)** : Il renvoie le nombre d'agents dans un état critique appartenant au système d'exploitation donné. * **os_agents_ok($id_os)** : Il renvoie le nombre d'agents dans un état normal appartenant au système d'exploitation donné. * **os_agents_warning ($id_os)** : Il renvoie le nombre d'agents dans un état d'avertissement appartenant au système d'exploitation donné. * **os_agents_unknown ($id_os)** : Il renvoie le nombre d'agents dans un état unconnu appartenant au système d'exploitation donné. ==== Développement et élargissement ==== La plupart des extensions ont été décrites comme des annexes distinctes, spécialisées dans la création de plugins de serveur, de plugins d'agent Unix et d'extensions de la console. Ce chapitre décrit comment collaborer avec Pandora FMS et comment compiler l'agent Windows à partir des sources. À l'avenir, tout autre sujet lié au développement qui n'a pas d'appendice spécifique fera l'objet de ce chapitre. === Collaborer avec le projet Pandora FMS === Ce projet est maintenu par des développeurs bénévoles avec leurs collaborations. Les nouveaux développeurs, les rédacteurs de documents ou les personnes qui souhaitent aider seront toujours les bienvenus. Une bonne façon de commencer est de vous abonner à nos listes de diffusion et/ou au forum. === Bugs / Défauts === Signaler des erreurs potentielles vous aide à améliorer Pandora FMS. Avant de soumettre un rapport d'erreur, veuillez consulter notre base de données de bogues et, en cas de détection d'un bogue non signalé, l'envoyer à l'aide de l'excellent outil Sourceforge pour le suivi et le signalement des bogues sur le SITE WEB du projet : [[http://sourceforge.net/projects/pandora/|http://sourceforge.net/projects/pandora/]] === Listes de diffusion === Les listes de diffusion sont un excellent moyen de se tenir au courant par courrier électronique. Nous avons une liste de diffusion publique pour les utilisateurs et les annonces (avec un faible trafic) et une liste de diffusion de développement pour les discussions techniques et les notifications (parfois quotidiennes) de développement en utilisant le système de notification automatique de notre SVN (Code Version Control System). ==== Compilation de l’agent Windows à partir du code ==== === Obtenir la dernière version du code === Pour obtenir la dernière version du code, il est essentiel de le faire en téléchargeant les sources du dépôt de code SubVersion de Sourceforge, où nous avons publié le référentiel officiel Pandora FMS. Pour ce faire, vous devez installer un client Subversion. Lorsque vous l’avez prêt, exécutez la commande suivante à partir de la ligne de commande : svn co https://svn.sourceforge.net/svnroot/pandora pandora === Compilation à partir de Windows === Pour compiler/lier à partir de sources, vous devrez obtenir la dernière version de l’environnement de développement Dev-CPP (IDE), qui à son tour inclut le compilateur MinGW. [[http://www.bloodshed.net/devcpp.html|Téléchargez-le à partir de ce lien]]. Ouvrez le fichier //PandoraAgent.dev// avec Dev-CPP et générez le projet. Après avoir ajusté différents paramètres (principalement des chemins), vous devriez être en mesure de compiler l’agent Windows. Si vous rencontrez des problèmes de compilation à partir de sources, contactez directement le responsable du développement de l’équipe Windows (ramon.novoa//@//artica.es) ou via notre site Web [[http://pandora.sourceforge.net|Sourceforge]]//.// === Compilation croisée à partir de Linux === Pour réaliser la compilation croisée (cela signifie créer l’exécutable Windows natif à partir d’un environnement Linux), suivez ces étapes : == Installez le compilateur WinGW pour Linux == Pour les environnements Ubuntu/Debian : sudo aptitude install mingw32 Pour les environnements SUSE ou RPM pris en charge, vous pouvez le faire avec zypper ou manuellement avec cette URL : http://download.opensuse.org/repositories/CrossToolchain:/mingw/openSUSE_11.1/ == Installation des bibliothèques et includes extras dont l’agent a besoin == * win32api * odbc++ * curl * openssl * zlib * Boost C++ libraries ([[http://sourceforge.net/projects/boost/files/|http://sourceforge.net/projects/boost/files/]]) Par exemple, pour installer le paquet de bibliothèques OpenSSL, accédez à [[http://sourceforge.net/projects/devpaks/files|http://sourceforge.net/projects/devpaks/files]] et téléchargez le fichier : openssl-0.9.8e-1cm.DevPak Décompressez le fichier //openssl-0.9.8e-1cm.DevPak// : tar jxvf openssl-0.9.8e-1cm.DevPak Copiez les bibliothèques et includes dans votre environnement de compilation croisée avec MinGW : cp lib/*.a /usr/i586-mingw32msvc/lib/ cp -r include/* /usr/i586-mingw32msvc/include/ Téléchargez et installez les paquets 'autogen' et 'autoconf' sudo apt-get install autogen autoconf Accédez au répertoire où se trouvent les sources de l'agent Windows et exécutez : ./autogen.sh Il existe une alternative, plus rapide, plus confortable et plus facile, mais vous devrez résoudre vous-même les problèmes potentiels de dépendance et de version. Nous avons fait un tarball avec toutes les bibliothèques et includes nécessaires et les avons téléchargées sur le SITE officiel sous le nom de //mingw_pandorawin32_libraries_9Oct2009.tar.gz// == Compilation et lien == Après avoir installé le compilateur, accédez au répertoire où se trouvent les sources de l'agent Windows et exécutez ./configure --host=i586-mingw32msvc && make Cela devrait compiler et lier l'exécutable de l'agent Pandora FMS pour Windows. ==== API de Pandora FMS ==== Il existe une API externe de Pandora FMS permettant de relier des applications tierces à Pandora FMS, à la fois pour obtenir des informations de Pandora FMS et pour saisir des informations au sein de Pandora FMS. Toute cette documentation se trouve [[:en:documentation:pandorafms:technical_reference:02_annex_externalapi|dans l'appendice API externe de Pandora FMS]] (anglais) ==== Format des fichiers de données XML ==== Connaître le format des données XML de Pandora FMS peut vous aider à améliorer les plugins d'agent, à créer des agents personnalisés ou tout simplement à envoyer des fichiers XML personnalisés au serveur de données Pandora FMS. Comme tout document XML, le fichier de données doit commencer par une déclaration XML : Voici l'élément **agent_data** qui définit l'agent qui envoie les données. Il prend en charge les attributs suivants : * //description// : Description de l'agent. * //group// : Nom du groupe auquel appartient l'agent (il doit exister dans la base de données Pandora FMS). S'il est laissé vide et qu'il n'y a pas de groupe configuré par défaut sur le serveur, l'agent ne sera pas créé. * //os_name// : Nom du système d'exploitation auquel appartient l'agent (il doit exister dans la base de données Pandora FMS). * //os_version// : Chaîne libre décrivant la version du système d'exploitation. * //interval// : Intervalle de l'agent (en secondes). * //version// : Chaîne avec la version de l'agent. * //timestamp// : L'horodatage indiquant quand le XML a été généré (YYYY/MM/DD HH:MM:SS). * //agent_name// : Nom de l'agent. * //timezone_offset// : Déplacement qui s'ajoute à l'horodatage (en heures). Utile si vous travaillez avec UTC. * //address// : Adresse IP de l'agent (ou FQN). * //parent_agent_name// : Nom du père de l'agent. * //agent_alias// : Alias de l'agent. * //agent_mode// : Mode de travail de l'agent (0 : Normal mode, 1 : Learning mode, 2 : Autodisable mode) . * //secondary_groups// : Groupes secondaires ajoutés à l'agent. * //custom_id// : Identifiant personnalisé de l'agent. * //url_address// : URL d'accès à l'agent. Prenons l'exemple de l'en-tête XML : Ensuite, vous avez besoin d'un élément **module** pour chaque module, et les éléments suivants peuvent être imbriqués pour définir le module : * **name** : Nom du module. * **description** : Description du module. * **tags** : Étiquettes associées au module. * **type** : Type de module (il doit exister dans la base de données Pandora FMS). * **data** : Nom du module. * **max** : Valeur maximale du module. * **min** : Valeur minimale du module. * **post_process** : Valeur de post-traitement. * **module_interval** : Intervalle du module (intervalle en secondes / intervalle de l'agent). * **min_critical** : Valeur minimale pour l'état critique. * **max_critical** : Valeur maximale pour l'état critique. * **min_warning** : Valeur minimale pour l'état d'alerte. * **min_warning** : Valeur maximale pour l'état d'alerte. * **disabled** : Il désactive (0) ou active le module. Les modules désactivés ne sont pas traités. * **min_ff_event** : Seuil FF (voir). * **status** : État du module (NORMAL, WARNING ou CRITICAL). Les limites des états critiques et d’alerte sont ignorées si l’état est spécifié. * **datalist** : Il envoie les données du module au format datalist (une entrée de base de données pour chacune des valeurs reçues) [0/1]. * **unit** : Unité du module. Il prend en charge la macro _Timeticks_ pour transformer une donnée au format timeticks en jj/hh/mm/ss. * **timestamp** : Il définit un horodatage sur les données reçues du module. * **module_group** : Groupe de modules auquel le module sera ajouté. * **custom_id** : ID personnalisé du module. * **str_warning** : Seuil d’avertissement pour les modules string. * **str_critical** : Seuil critique pour les modules string. * **critical_instructions** : Critical instructions du module. * **warning_instructions** : Instructions warning du module. * **unknown_instructions** : Instructions unknown du module. * **critical_inverse** : Il active l'intervalle inverse sur le seuil critique du module. [0/1]. * **warning_inverse** : Il active l'intervalle inverse sur le seuil d'avertissement du module. [0/1]. * **quiet** : Il active le mode Quiet du module [0/1]. * **module_ff_interval** : Il spécifie une valeur de l'Intervalle FF du module. * **alert_template** : Il associe un modèle d'alerte au module. * **crontab** : Il spécifie un crontab dans le module. * **min_ff_event_normal** : Valeur du seuil FF au changement d'état à NORMAL. * **min_ff_event_warning** : Valeur du seuil FF au changement d'état à WARNING. * **min_ff_event_critical** : Valeur du seuil FF au changement d'état à CRITICAL. * **ff_timeout** : Valeur de FlipFlop timeout. * **each_ff** : Il active l'option « Change each status ». * **module_parent** : Nom du module dans le même agent qui sera le père de ce module. * **ff_type** : Il active le Keep counters du FF threshold. [0/1]. À partir de la version 749 de Pandora FMS, de nouveaux jetons sont ajoutés pour forcer les seuils : * **min_warning_forced** : Il force min_warning à la nouvelle valeur indiquée même si le module existe. Il a priorité sur min_warning. * **max_warning_forced** : Il force max_warning à la nouvelle valeur indiquée même si le module existe. Il a priorité sur max_warning. * **min_critical_forced** : Il force min_critical à la nouvelle valeur indiquée même si le module existe. Il a priorité sur min_critical. * **max_critical_forced** : Il force max_critical à la nouvelle valeur indiquée même si le module existe. Il a priorité sur max_critical. * **str_warning_forced** : Il force str_warning à la nouvelle valeur indiquée même si le module existe. Il a priorité sur str_warning. * **str_critical_forced** : Il force str_critical à la nouvelle valeur indiquée même si le module existe. Il a priorité sur str_critical. Ces jetons ne fonctionneront que pour les **plugins du serveur de données**. Tout autre élément sera enregistré en tant qu'information étendue du module dans la base de données Pandora FMS : {{ :wiki:module_extended_info.png }} Un module doit avoir au moins un élément **name**, **type** et **data**. Par exemple : CPU CPU usage percentage generic_data 21 Il peut y avoir n'importe quel nombre d'éléments dans un fichier de données XML. Enfin, n'oubliez pas de fermer l'étiquette **agent_data** ! Il existe un cas particulier de XML multi item, basé sur une liste de données. Cela s'applique uniquement aux données de type chaîne. Le XML ressemble à ceci: async_string Vous pouvez spécifier un horodatage pour chaque valeur: async_string 1970-01-01 00:00:00 1970-01-01 00:00:01 1970-01-01 00:00:02 Voyons quelques autres exemples qui incluent l'utilisation de seuils et d'unités: tag generic_data 1 100 499 500 600 tag generic_data 1 [[:fr:documentation:start|Retour à l'index de documentation Pandora FMS]]