<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://air.imag.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Carameln</id>
	<title>air - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://air.imag.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Carameln"/>
	<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php/Special:Contributions/Carameln"/>
	<updated>2026-05-30T16:16:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://air.imag.fr/index.php?title=Coconode&amp;diff=10266</id>
		<title>Coconode</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Coconode&amp;diff=10266"/>
		<updated>2013-03-23T01:31:56Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* Partie Statistique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Coconode_interface.png|300px|thumb|right|Interface Coconode]]&lt;br /&gt;
&lt;br /&gt;
==Git us !==&lt;br /&gt;
&lt;br /&gt;
[https://bitbucket.org/noejean/coconode COCONODE on Git]&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Ce projet se place dans la continuité du travail de Malisa VUCINIC - thésard à l&#039;équipe DRAKKA (LIG). Durant son projet de fin d&#039;études, il a écrit un programme permettant de simuler le comportement de capteurs disposés dans une salle/un bâtiment. Le comportement étant basé sur deux protocoles de routage de données (RPL ou LOADng). Cependant, ce programme ne permet pas d&#039;automatiser l&#039;exécution d&#039;un grand nombre de simulation, ce qui est nécessaire pour faire des statistiques. De plus, les données obtenues ne sont pas interprétées mais seulement regroupées de manière cohérente par un parseur. L’utilisateur est obligé de traiter lui-même ces données via un logiciel tiers d’analyse. &lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
&lt;br /&gt;
Industrie, sécurité, transport, santé... Les capteurs sont de plus en plus utilisés dans notre quotidien. Organisé en réseau, ces capteurs permettent de récolter une multitude de données de toutes sortes. La majorité des applications impliquent le déploiement d&#039;un grand nombre de nœuds (capteurs) dans une zone donnée. Cela implique un minimum de traitement pour communiquer entre eux et/ou avec une entité capable de les traiter. Cependant, une grande partie de ces équipements ne seront pas reliés à un réseau électrique ni à un réseau informatique à cause du coût d’installation et de raccordement. C’est pourquoi ils seront alimentés grâce à une batterie et devront communiquer via des transmissions radio. Le coût faible du déploiement et la durée de vie très longue des capteurs impliquent des contraintes matérielles liées à la mémoire, aux traitements et à la consommation d’énergie. La communication en est impactée car il faut consommer le moins possible tout en communiquant avec les autres. Il faut donc utiliser des protocoles de communications optimisés pour lui permettre d’être autonome tout en restant joignable via Internet. En effet, IPv6 est performant pour délivrer les données et router celle-ci, quel que soit le réseau, d’un émetteur vers un récepteur. De plus, au vu du nombre de capteurs déployés, il est nécessaire d’avoir une grande plage d’adresses disponible. Cependant, IP a été conçu pour des réseaux très puissants et possède, par exemple, des entêtes de tailles trop grandes pour un capteur. C’est pourquoi l’IETF a créé un standard nommé 6LowPAN qui définit des mécanismes d’encapsulation et de compression d’en-têtes permettant d’envoyer des paquets IPv6. &lt;br /&gt;
Afin de pouvoir tester et expérimenter de tels protocoles, plusieurs méthodes sont possibles : théorie, simulation, modélisation. La théorie permet d’avoir un résultat rapidement par rapport aux autres méthodes. La modélisation est la meilleure solution par rapport à la précision des résultats. Cependant, la première n’est pas assez représentative par rapport à des évènements censés être aléatoires sur les nœuds et la deuxième coûte cher et ne supporte pas les changements. La simulation est un bon compromis car il est possible de la reproduire dans le temps en modifiant les paramètres facilement tout en contrôlant les dépenses liées au coût de développement. Un des désavantages de la simulation est que certains phénomènes physiques sont très difficiles (voire impossible) à définir. &lt;br /&gt;
&lt;br /&gt;
Aujourd&#039;hui, plusieurs systèmes d&#039;exploitation sont utilisés sur ces capteurs pour pouvoir faire des opérations liées aux communications, aux récupérations de données et aux agrégations de celles-ci. [http://fr.wikipedia.org/wiki/Contiki Contiki] est l&#039;un des plus utilisés. &lt;br /&gt;
C’est pourquoi, l’équipe Drakkar utilise un simulateur nommé [http://www.contiki-os.org/start.html#start-cooja Cooja] pour simuler le comportement d’un réseau de capteurs par rapport aux algorithmes de routages des paquets, de la disposition des capteurs dans le réseau, les propriétés de l’environnement… Ce simulateur est fourni par l&#039;organisation qui développe Contiki pour pouvoir émuler cet OS au niveau hardware et ainsi pouvoir réutiliser les codes simulés sur des capteurs réels.&lt;br /&gt;
&lt;br /&gt;
==Utilisateurs cibles==&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs cibles sont principalement des chercheurs, stagiaires utilisant le simulateur Cooja. Ensuite, les autres utilisateurs seront les personnes lambda voulant utiliser ce logiciel car il sera diffusé avec une licence libre. &lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
L&#039;objectif est faire un logiciel permettant de configurer et de répéter une expérience, de suivre les différentes étapes de l&#039;expérience lors de la simulation et d&#039;interpréter les résultats obtenus. Le logiciel doit être « user friendly », avec une interface graphique. De plus, dans la mesure du possible, on essayera de le rendre générique, c&#039;est à dire utilisable pour d&#039;autres protocoles que les deux testés dans le cadre de ce projet. Il sera ainsi susceptible d&#039;être réutilisé pour d&#039;autres études. &lt;br /&gt;
&lt;br /&gt;
Le travail à réaliser peut être présenté en trois modules :&lt;br /&gt;
*Partie configuration : Saisir des paramètres voulus pour la simulation, le nombre de simulations voulues pour pouvoir faire des statistiques associées, construction de fichier de configuration .xml (scénario). Cette partie pourra aussi afficher la configuration/répartition des capteurs dans la salle/du bâtiment : une carte de la salle affiche leur position. &lt;br /&gt;
*Partie suivi de la simulation (qui peut durer très longtemps, des semaines) : donne le statut de la simulation. Par exemple :  Simulation avec COOJA à partir du scénario (répéter plusieurs fois pour augmenter la confiance)&lt;br /&gt;
*Partie résultat : elle peut être décomposée en 2 sous parties :&lt;br /&gt;
**Choisir les données que l&#039;on veut afficher (choix  des différents graphes avec différents paramètres, choix de l&#039;échelle, observation d&#039;une simulation particulière ou application d&#039;une fonction statistique aux données particulière)&lt;br /&gt;
**Afficher les graphes et les données de sortie. Résultat + script pour analyser le résultat. &lt;br /&gt;
&lt;br /&gt;
L&#039;outil actuel se fait en plusieurs étapes séparées par des lignes de commande tapées manuellement. Ceci n&#039;est pas automatisé et est destiné principalement à l&#039;utilisateur expérimenté. &lt;br /&gt;
Le but de notre projet est de développer un outil qui automatise le processus de simulation comprenant la configuration, l&#039;exécution et l&#039;analyse de résultat sous forme d&#039;une interface utilisateur interactive. Il sera important de concevoir une architecture flexible, modulable et facile à étendre pour le développement ultérieur.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnalités à développer ==&lt;br /&gt;
&lt;br /&gt;
=== Product Backlog ===&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;80%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Description&lt;br /&gt;
! scope=col | Complexité&lt;br /&gt;
! scope=col | Priorité&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Configuration&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur veut choisir la configuration qu&#039;il veut pour l&#039;expérience (protocole, nombre de simulations, loi de probabilité des événements...)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
12&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Monitoring&lt;br /&gt;
| width=&amp;quot;38%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur surveille l&#039;état de l&#039;exécution de la simulation en temps réel. &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
5&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Interruption&lt;br /&gt;
| width=&amp;quot;38%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur interrompt l’expérience. &lt;br /&gt;
| width=&amp;quot;12&amp;quot; |&lt;br /&gt;
3&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Répétitions&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur détermine le nombre de fois qu&#039;une simulation est répétée durant une expérience (pour augmenter l&#039;intervalle de confiance). &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
2&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Topologie&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur voit la topologie du réseau (répartition des capteurs dans la salle / le bâtiment)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
4&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Résultat&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur observe en temps réel (unité de temps=une simulation) les graphes qu&#039;il voulait lors de la configuration. &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
18&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Scheduler&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur peut programmer des périodes d&#039;exécution pour son expérience (le simulateur n&#039;exécute l&#039;expérience que la nuit, le PC a plus de ressources le journée)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Format&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
Les fichiers d&#039;entrées / sorties doivent être génériques &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aspects Techniques === &lt;br /&gt;
&lt;br /&gt;
* Langage C et bibliothèque graphique GTK (et gestion des threads)&lt;br /&gt;
* Bibliothèques dynamiques&lt;br /&gt;
* Compilation du code utilisateur pour la topologie&lt;br /&gt;
* Basé sur le noyau Cooja avec Java Native Interface (JNI)&lt;br /&gt;
* Gnuplot&lt;br /&gt;
* Json-glib&lt;br /&gt;
&lt;br /&gt;
== L&#039;équipe ==&lt;br /&gt;
&lt;br /&gt;
Ce projet s&#039;inscrit dans un cadre pédagogique précis. Un encadrant joue le rôle de client, un autre de tuteur. Le projet s&#039;effectue en groupe et met en place des méthodes de gestion de projet.&lt;br /&gt;
&lt;br /&gt;
=== Encadrants ===&lt;br /&gt;
==== Clients ====&lt;br /&gt;
* Bernard Tourancheau&lt;br /&gt;
* Mališa Vučinić&lt;br /&gt;
==== Tuteur ====&lt;br /&gt;
* Didier Donsez &lt;br /&gt;
&lt;br /&gt;
=== Etudiants ===&lt;br /&gt;
* Chef de projet : Noé-Jean Caramelli&lt;br /&gt;
* Minh Quan Ho&lt;br /&gt;
* Florian Lévêque&lt;br /&gt;
&lt;br /&gt;
==== Répartitions des tâches ====&lt;br /&gt;
[[Image:Taches2.png|1000px|thumb|center|Répartition des tâches]]&lt;br /&gt;
&lt;br /&gt;
== Le produit == &lt;br /&gt;
&lt;br /&gt;
=== Architecture logicielle ===&lt;br /&gt;
[[Image:Coconode_architecture.png|300px|thumb|right|Architecture Coconode]]&lt;br /&gt;
&lt;br /&gt;
Coconode est composé de 4 parties différentes :&lt;br /&gt;
* Interface Graphique &lt;br /&gt;
* Architecture interne&lt;br /&gt;
** Configuration&lt;br /&gt;
** Exécution &lt;br /&gt;
** Statistique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;architecture se base sur des modules existants (Générateur de topologie et noyau de simulation Cooja) utilisés dans l&#039;outil existant. Ces modules ont du être intégré dans l&#039;architecture pour pouvoir les réutiliser dans le nouvel outil. &lt;br /&gt;
La séparation des différentes parties a été faite pour isoler chaque partie réalisant les mêmes tâches. Cela facilite le développement et les modification future. &lt;br /&gt;
Cela permet aussi l&#039;utilisation de threads pour paralléliser les différents traitement, pour ne pas bloquer la GUI lors d&#039;un gros traitement dans l&#039;exécution ou dans la partie statistique par exemple. &lt;br /&gt;
 &lt;br /&gt;
La GUI est liée à chaque partie car elle est utilisée en entrée pour que l&#039;utilisateur puisse définir les données de simulation (voir partie Configuration) et en sortie pour que le contrôleur et l&#039;affichage statistique puisse afficher des retours (voir Partie Exécution et Statistique). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Interface Graphique ====&lt;br /&gt;
Cette interface basée sur la librairie GTK permet à l&#039;utilisateur d&#039;interagir avec le noyau de simulation Cooja. &lt;br /&gt;
&lt;br /&gt;
==== Architecture interne ====&lt;br /&gt;
L&#039;architecture interne de Coconode comprend trois parties : &lt;br /&gt;
&lt;br /&gt;
===== Partie Configuration =====&lt;br /&gt;
[[Image:Configurateur_coconode.png|250px|thumb|right|Configuration]]&lt;br /&gt;
&lt;br /&gt;
* Personnalisation de la simulation : &lt;br /&gt;
# Durée de simulation &lt;br /&gt;
# Planification &lt;br /&gt;
# Nombre de simulations&lt;br /&gt;
# Choix du protocole de routage (Ici c&#039;est load, un protocole de routage français)&lt;br /&gt;
Cette partie est lié au module Jsonner qui permet d&#039;exporter ou importer ces paramètres au format JSON. &lt;br /&gt;
[[Image:Topologie_coconode.png|250px|thumb|right|Générateur de topologie]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Génération et visualisation de la topologie :&lt;br /&gt;
# Sélectionner les paramètres de la topologie :&lt;br /&gt;
## Nombre de noeuds &lt;br /&gt;
## Pourcentage de capteurs (qui récupèrent une donnée physique)&lt;br /&gt;
## Pourcentage d&#039;actuateurs (qui réalisent une action)&lt;br /&gt;
## Sélectionner les fichiers utilisateurs qui génèrent une topologie selon un modèle précis (représentation d&#039;une maison ...) &lt;br /&gt;
# Générer la topologie et visualiser le résultat &lt;br /&gt;
&lt;br /&gt;
Après avoir entré toutes les informations précédentes et généré une topologie de réseaux de capteurs, ces informations seront passées au module d&#039;exécution qui va la prendre en charge et l&#039;exécuter en temps voulu.&lt;br /&gt;
&lt;br /&gt;
===== Partie Exécution =====&lt;br /&gt;
[[Image:Coconode_scheduler.png |250px|thumb|right|Scheduler]]&lt;br /&gt;
L&#039;exécution des simulations doit se faire dans un ordre précis défini grâce à l&#039;interface. Cet ordre mélange un ordre temporel et un ordre de définition, en effet, l&#039;utilisateur peut définir un délai de début de simulation en plus de l&#039;ordre de définition de celle-ci. Il faut donc avoir une file d&#039;attente des simulations. &lt;br /&gt;
La file d&#039;attente est une file asynchrone accessible par l&#039;interface et par le contrôleur. Le contrôleur va l&#039;utiliser pour ordonnancer les simulations et gérer l&#039;ordre de départ de chaque simulation. &lt;br /&gt;
&lt;br /&gt;
Ensuite, le contrôle doit être fait en temps réel. L&#039;interface doit être toujours disponible pour l&#039;utilisateurs afin qu&#039;il puisse contrôler les simulations. Comme Cooja est un outil Java, il a fallu utiliser une bibliothèque nommé [http://fr.wikipedia.org/wiki/Java_Native_Interface Java Native Interface] qui permet de faire l&#039;interfaçage entre du code C et du code Java. Cela permet de créer une [http://fr.wikipedia.org/wiki/Machine_virtuelle_Java JVM] personnalisée pour exécuter le noyau Cooja. Il est donc possible d&#039;avoir un contrôle total de Cooja en accédant aux différentes classes présentes.&lt;br /&gt;
&lt;br /&gt;
[[Image:Monitor_coconode.png|250px|thumb|right|Monitor]] &lt;br /&gt;
L&#039;utilisateur aura un retour d&#039;avancement de la simulation en cours ainsi qu&#039;une liste des simulations à venir dans l&#039;ordre de départ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Partie Statistique =====&lt;br /&gt;
[[Image:Pstat.png |250px|thumb|right|Afficheur de résultat et statistiques]]&lt;br /&gt;
Les fichiers d&#039;entrée suivent le format d&#039;entrée Gnuplot le plus fréquemment rencontré : des colonnes de valeur séparées par une tabulation. La première ligne est un commentaire (commence par un &#039;#&#039;) qui décrit chaque colonne de valeur. &lt;br /&gt;
La capture ci-contre se base sur 9 fichiers d&#039;exemple contenant une valeur de rayon par rapport à une valeur d&#039;angle. Pour utiliser le programme avec le simulateur Cooja, un script qui parse la sortie de Cooja dans le bon format Gnuplot doit encore être développé. &lt;br /&gt;
&lt;br /&gt;
Un fichier représente un individu de l&#039;échantillon utilisé pour le graphe statistique de droite. &lt;br /&gt;
Un fichier sera généré pour chaque simulation. Une simulation de Cooja est donc un individu pour le programme de statistique. &lt;br /&gt;
&lt;br /&gt;
Sur l&#039;interface, le choix des axes x et y est possible parmis les description des colonnes trouvées dans le premier fichier affiché. &lt;br /&gt;
&lt;br /&gt;
La liste des fichiers disponbles à l&#039;affichage pour &#039;current individual&#039; est triée selon l&#039;ordre de la table ASCII. Les valeurs des axes sélectionnés sont affichés pour le fichier sélectionné lorsqu&#039;on clique sur &#039;trace&#039;. La liste des fichiers sélectionnés est dynamique. Si on ajoute ou retire des fichiers dans le dossier d&#039;entrée (définit par le #define DATA_IN), la liste des &#039;current individual&#039;est mise à jours lorsqu&#039;on clique dessus. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le graphe statistique est calculé avec les fichiers disponibles à ce moment dans le dossier d&#039;entrée lorsqu&#039;on clique sur &#039;compute&#039;. À la fin du projet (22 mars 2013), deux fonctions statistiques sont disponibles : la moyenne et la fonction de densité de probabilité. Elles sont calculées en se basant sur l&#039;axe des y sélectionné. &lt;br /&gt;
&lt;br /&gt;
Chacun des deux graphes sont exportables au format EPS, PDF et PNG (avec choix de la taille du fichier png). &lt;br /&gt;
&lt;br /&gt;
L&#039;interface est vectorielle.&lt;br /&gt;
&lt;br /&gt;
== Méthodes de gestion de projet == &lt;br /&gt;
&lt;br /&gt;
Nous utilisons d&#039;une part une méthode de gestion de projets classique avec un Chef de projet, mais d&#039;autre part, nous utilisons la méthode Agile/Scrum pour le développement du logiciel.&lt;br /&gt;
&lt;br /&gt;
=== Scrum Master ===&lt;br /&gt;
&lt;br /&gt;
Nous choisissions un scrum master fixe. En effet, nous avons un chef de projet qui a pour rôle d&#039;être le point central de communication avec l&#039;équipe. Or le scrum master est censé isoler l&#039;équipe de l&#039;extérieur. Si on prend un scrum master tournant, on aura un chef de projet, qui ne sera pas isolé de l&#039;extérieur à cause de son rôle et qui ne sera pas scrum master. Ce n&#039;est pas logique. Nous choisissons donc un scrum master fixe qui sera le chef de projet par soucis de cohérence. &lt;br /&gt;
&lt;br /&gt;
=== Points avec les clients ===&lt;br /&gt;
&lt;br /&gt;
Nous feront un point par semaine avec Bernard Tourancheau et Malisa Vucinic. Le rendez-vous hebdomadaire est fixé tous les jeudis à 15h. Ces rendez-vous serviront à faire le point sur l&#039;avancement et à régler les éventuels problèmes qui pourraient nous bloquer. Un rendez-vous tous les 15 jours serait trop espacé en cas de problème. &lt;br /&gt;
&lt;br /&gt;
=== Durée du stage ===&lt;br /&gt;
&lt;br /&gt;
Le projet commence le 4 février et termine le 15 mars. Nous avons en réalité eu deux réunions avant le 4 février, mais nous n&#039;avions que très  peu de temps libre pour le projet la semaine d&#039;avant. La semaine du 18 mars est celle de la soutenance du projet. Nous ne savons pas la date exacte de soutenance, nous ne plaçons donc pas de tâche &lt;br /&gt;
&lt;br /&gt;
=== Sprints ===&lt;br /&gt;
&lt;br /&gt;
Nous choisissons de faire des sprints de deux semaines. Cela nous semble un bon compromis entre un sprint trop long pendant lequel les tâches serait trop complexes et les problèmes s&#039;accumuleraient, et un sprint trop court où nous n&#039;aurions pas assez avancé pour que le sprint soit profitable, malgré le temps qu&#039;il nous prend. &lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 3&#039;&#039;&#039; :11 Mars au 22 Mars ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Scheduler 	&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Monitoring&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
5&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
3&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Interruption d&#039;une simulation&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Observation des résultats&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
8&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Contrôle d&#039;une simulation&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
17&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Validation du logiciel&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Portabilité de l&#039;outil&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
&lt;br /&gt;
* Plus:&lt;br /&gt;
** Point de vue de conception et de technique avancé&lt;br /&gt;
** Connaissances de JNI &lt;br /&gt;
** Développement boosté &lt;br /&gt;
** Reprise de motivation&lt;br /&gt;
&lt;br /&gt;
* A améliorer:&lt;br /&gt;
** Documentation&lt;br /&gt;
** Test de validation&lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Bugs technique complexe&lt;br /&gt;
** Manque de réactivité aux bugs&lt;br /&gt;
** Deadline approché&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:Burndownchart3_coconode.png|1000px|thumb|center|Burndown Chart Sprint 2]]&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 2&#039;&#039;&#039; :18 Février au 8 Mars ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Générateur de topologie&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Configuration des simulations&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Importer/Exporter données &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Contrôle d&#039;une simulation &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Observation des résultats &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
&lt;br /&gt;
* Plus:&lt;br /&gt;
** Entraide lors de bugs&lt;br /&gt;
** Séparation des modules facilitant le développement &lt;br /&gt;
&lt;br /&gt;
*A améliorer&lt;br /&gt;
** Compréhension de la hiérarchie et fonctionnement de Cooja &lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Répartition du temps&lt;br /&gt;
** Bugs techniques et complexe. &lt;br /&gt;
** Perturbation du rythme de travail lié à:&lt;br /&gt;
*** Problème de santé&lt;br /&gt;
*** Manque de motivation&lt;br /&gt;
*** Problème de l&#039;ordinateur&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:BDCSprint2.jpg|1000px|thumb|center|Burndown Chart Sprint 2]]&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 1&#039;&#039;&#039; : 29 Janvier au 15 Février ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Cahier des charges&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
13&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Architecture	&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
13&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Prototype de l&#039;IHM&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
8&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Prise en main de l&#039;outil&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
* Plus:&lt;br /&gt;
** Rédaction du cahier des charges&lt;br /&gt;
** Utilisation de GIT&lt;br /&gt;
&lt;br /&gt;
*A améliorer&lt;br /&gt;
** Répartition des tâches&lt;br /&gt;
** Mise à jours de Trello &lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Prise en main de l&#039;outil laborieuse&lt;br /&gt;
** Daily stand up oubliée&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:BDCSprint1.jpg|1000px|thumb|center|Burndown Chart Sprint 1]]&lt;br /&gt;
&lt;br /&gt;
=== Outils de suivi ===&lt;br /&gt;
Pour permettre de suivre l&#039;avancement d&#039;un sprint du projet, nous utilisons des outils de Scrum : &lt;br /&gt;
*Todo-List ;&lt;br /&gt;
*Burn down chart.&lt;br /&gt;
&lt;br /&gt;
=== Tests et validation ===&lt;br /&gt;
Comme nous utilisons la méthode Scrum pour la gestion de projet, chaque développeur fera des tests « unitaires » sur les stories qu&#039;il développera. Ils vont permettre d&#039;assurer de l’intégrité du code pour certaines fonctionnalités, la bonne qualité du code. Ils ne permettent pas de vérifier si le code répond aux besoins du client. &lt;br /&gt;
Les tests permettant de garantir au product owner la fiabilité et le respect des spécifications sont les tests d&#039;acceptation. Chaque test sera développé ou défini grâce aux conditions de satisfaction données par celui-ci.&lt;br /&gt;
&lt;br /&gt;
== Choix non fonctionnels == &lt;br /&gt;
===Licence ===&lt;br /&gt;
Le code sera placé sous la licence libre GNU GPL afin de permettre au projet d&#039;être réutilisé et amélioré. &lt;br /&gt;
La documentation et autres ressources éventuellement créées pour le projet seront placées sous licence Creative Commons CC-BY-NC-SA afin de permettre également une réutilisation et une évolution libres.  &lt;br /&gt;
=== Gestionnaire de version===&lt;br /&gt;
Nous choisissons GIT, un gestionnaire de version récent, évolué et de plus en plus répandu. C&#039;est le gestionnaire de version déjà utilisé pour le projet. &lt;br /&gt;
===Documentation===&lt;br /&gt;
Nous prévoyons différents éléments de documentation pour permettre une bonne continuité du projet. &lt;br /&gt;
====Documents de conception====&lt;br /&gt;
*La documentation sera séparée en plusieurs fichiers : &lt;br /&gt;
**Conception IHM ;&lt;br /&gt;
**Conception système (architecture, librairies, technologies).&lt;br /&gt;
&lt;br /&gt;
====Manuels====&lt;br /&gt;
*Manuel développeur ;&lt;br /&gt;
*Manuel utilisateur.&lt;br /&gt;
&lt;br /&gt;
====Génération automatique de documentation sur le code====&lt;br /&gt;
Nous utiliserons un générateur de documentation capable de produire une documentation logicielle à partir du code source du programme, comme Doxygen.&lt;br /&gt;
&lt;br /&gt;
====Convention de codage====&lt;br /&gt;
&lt;br /&gt;
* Indentation obligatoire (utilisation du caractère tabulation) ;&lt;br /&gt;
* L&#039;accolade ouvrante doit être placée à la ligne suivante ;&lt;br /&gt;
* Les commentaires doivent être écrits en anglais ;&lt;br /&gt;
* Tous les fichiers doivent être codés au format UTF-8 ;&lt;br /&gt;
* Les lignes ne doivent (dans la mesure du possible) pas dépassées 80 caractères ;&lt;br /&gt;
* Le nom des fonctions seront plutôt des verbes, les variables seront des noms (en anglais) ;&lt;br /&gt;
		Exemples : &lt;br /&gt;
**Procédure : draw_something ;&lt;br /&gt;
**Variable : a_variable ;&lt;br /&gt;
**Constante : A_CONSTANT.&lt;br /&gt;
*Chaque fonction doit être commenté selon deux règles :&lt;br /&gt;
**Une explication détaillée de l&#039;utilité de la fonction doit être placé au dessus du corps de la fonction ;&lt;br /&gt;
**Chaque ligne de code complexe doit être commentée .&lt;br /&gt;
*Chaque fonction ne doit (dans la mesure du possible) n&#039;implémenter qu&#039;une seule tâche.&lt;br /&gt;
&lt;br /&gt;
==TODO==&lt;br /&gt;
* Script to parse [http://air.imag.fr/mediawiki/images/a/a8/Coconode_cooja_output.txt COOJA log] in to [http://air.imag.fr/mediawiki/images/8/8a/Coconode_gnuplot_input.txt GNUplot format].&lt;br /&gt;
* Validation test&lt;br /&gt;
* Integrate Statistic module into Coconode (or add callback to launch Statistic module from Coconode)&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Coconode&amp;diff=10265</id>
		<title>Coconode</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Coconode&amp;diff=10265"/>
		<updated>2013-03-23T01:23:14Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* Partie Statistique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Coconode_interface.png|300px|thumb|right|Interface Coconode]]&lt;br /&gt;
&lt;br /&gt;
==Git us !==&lt;br /&gt;
&lt;br /&gt;
[https://bitbucket.org/noejean/coconode COCONODE on Git]&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Ce projet se place dans la continuité du travail de Malisa VUCINIC - thésard à l&#039;équipe DRAKKA (LIG). Durant son projet de fin d&#039;études, il a écrit un programme permettant de simuler le comportement de capteurs disposés dans une salle/un bâtiment. Le comportement étant basé sur deux protocoles de routage de données (RPL ou LOADng). Cependant, ce programme ne permet pas d&#039;automatiser l&#039;exécution d&#039;un grand nombre de simulation, ce qui est nécessaire pour faire des statistiques. De plus, les données obtenues ne sont pas interprétées mais seulement regroupées de manière cohérente par un parseur. L’utilisateur est obligé de traiter lui-même ces données via un logiciel tiers d’analyse. &lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
&lt;br /&gt;
Industrie, sécurité, transport, santé... Les capteurs sont de plus en plus utilisés dans notre quotidien. Organisé en réseau, ces capteurs permettent de récolter une multitude de données de toutes sortes. La majorité des applications impliquent le déploiement d&#039;un grand nombre de nœuds (capteurs) dans une zone donnée. Cela implique un minimum de traitement pour communiquer entre eux et/ou avec une entité capable de les traiter. Cependant, une grande partie de ces équipements ne seront pas reliés à un réseau électrique ni à un réseau informatique à cause du coût d’installation et de raccordement. C’est pourquoi ils seront alimentés grâce à une batterie et devront communiquer via des transmissions radio. Le coût faible du déploiement et la durée de vie très longue des capteurs impliquent des contraintes matérielles liées à la mémoire, aux traitements et à la consommation d’énergie. La communication en est impactée car il faut consommer le moins possible tout en communiquant avec les autres. Il faut donc utiliser des protocoles de communications optimisés pour lui permettre d’être autonome tout en restant joignable via Internet. En effet, IPv6 est performant pour délivrer les données et router celle-ci, quel que soit le réseau, d’un émetteur vers un récepteur. De plus, au vu du nombre de capteurs déployés, il est nécessaire d’avoir une grande plage d’adresses disponible. Cependant, IP a été conçu pour des réseaux très puissants et possède, par exemple, des entêtes de tailles trop grandes pour un capteur. C’est pourquoi l’IETF a créé un standard nommé 6LowPAN qui définit des mécanismes d’encapsulation et de compression d’en-têtes permettant d’envoyer des paquets IPv6. &lt;br /&gt;
Afin de pouvoir tester et expérimenter de tels protocoles, plusieurs méthodes sont possibles : théorie, simulation, modélisation. La théorie permet d’avoir un résultat rapidement par rapport aux autres méthodes. La modélisation est la meilleure solution par rapport à la précision des résultats. Cependant, la première n’est pas assez représentative par rapport à des évènements censés être aléatoires sur les nœuds et la deuxième coûte cher et ne supporte pas les changements. La simulation est un bon compromis car il est possible de la reproduire dans le temps en modifiant les paramètres facilement tout en contrôlant les dépenses liées au coût de développement. Un des désavantages de la simulation est que certains phénomènes physiques sont très difficiles (voire impossible) à définir. &lt;br /&gt;
&lt;br /&gt;
Aujourd&#039;hui, plusieurs systèmes d&#039;exploitation sont utilisés sur ces capteurs pour pouvoir faire des opérations liées aux communications, aux récupérations de données et aux agrégations de celles-ci. [http://fr.wikipedia.org/wiki/Contiki Contiki] est l&#039;un des plus utilisés. &lt;br /&gt;
C’est pourquoi, l’équipe Drakkar utilise un simulateur nommé [http://www.contiki-os.org/start.html#start-cooja Cooja] pour simuler le comportement d’un réseau de capteurs par rapport aux algorithmes de routages des paquets, de la disposition des capteurs dans le réseau, les propriétés de l’environnement… Ce simulateur est fourni par l&#039;organisation qui développe Contiki pour pouvoir émuler cet OS au niveau hardware et ainsi pouvoir réutiliser les codes simulés sur des capteurs réels.&lt;br /&gt;
&lt;br /&gt;
==Utilisateurs cibles==&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs cibles sont principalement des chercheurs, stagiaires utilisant le simulateur Cooja. Ensuite, les autres utilisateurs seront les personnes lambda voulant utiliser ce logiciel car il sera diffusé avec une licence libre. &lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
L&#039;objectif est faire un logiciel permettant de configurer et de répéter une expérience, de suivre les différentes étapes de l&#039;expérience lors de la simulation et d&#039;interpréter les résultats obtenus. Le logiciel doit être « user friendly », avec une interface graphique. De plus, dans la mesure du possible, on essayera de le rendre générique, c&#039;est à dire utilisable pour d&#039;autres protocoles que les deux testés dans le cadre de ce projet. Il sera ainsi susceptible d&#039;être réutilisé pour d&#039;autres études. &lt;br /&gt;
&lt;br /&gt;
Le travail à réaliser peut être présenté en trois modules :&lt;br /&gt;
*Partie configuration : Saisir des paramètres voulus pour la simulation, le nombre de simulations voulues pour pouvoir faire des statistiques associées, construction de fichier de configuration .xml (scénario). Cette partie pourra aussi afficher la configuration/répartition des capteurs dans la salle/du bâtiment : une carte de la salle affiche leur position. &lt;br /&gt;
*Partie suivi de la simulation (qui peut durer très longtemps, des semaines) : donne le statut de la simulation. Par exemple :  Simulation avec COOJA à partir du scénario (répéter plusieurs fois pour augmenter la confiance)&lt;br /&gt;
*Partie résultat : elle peut être décomposée en 2 sous parties :&lt;br /&gt;
**Choisir les données que l&#039;on veut afficher (choix  des différents graphes avec différents paramètres, choix de l&#039;échelle, observation d&#039;une simulation particulière ou application d&#039;une fonction statistique aux données particulière)&lt;br /&gt;
**Afficher les graphes et les données de sortie. Résultat + script pour analyser le résultat. &lt;br /&gt;
&lt;br /&gt;
L&#039;outil actuel se fait en plusieurs étapes séparées par des lignes de commande tapées manuellement. Ceci n&#039;est pas automatisé et est destiné principalement à l&#039;utilisateur expérimenté. &lt;br /&gt;
Le but de notre projet est de développer un outil qui automatise le processus de simulation comprenant la configuration, l&#039;exécution et l&#039;analyse de résultat sous forme d&#039;une interface utilisateur interactive. Il sera important de concevoir une architecture flexible, modulable et facile à étendre pour le développement ultérieur.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnalités à développer ==&lt;br /&gt;
&lt;br /&gt;
=== Product Backlog ===&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;80%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Description&lt;br /&gt;
! scope=col | Complexité&lt;br /&gt;
! scope=col | Priorité&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Configuration&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur veut choisir la configuration qu&#039;il veut pour l&#039;expérience (protocole, nombre de simulations, loi de probabilité des événements...)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
12&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Monitoring&lt;br /&gt;
| width=&amp;quot;38%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur surveille l&#039;état de l&#039;exécution de la simulation en temps réel. &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
5&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Interruption&lt;br /&gt;
| width=&amp;quot;38%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur interrompt l’expérience. &lt;br /&gt;
| width=&amp;quot;12&amp;quot; |&lt;br /&gt;
3&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Répétitions&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur détermine le nombre de fois qu&#039;une simulation est répétée durant une expérience (pour augmenter l&#039;intervalle de confiance). &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
2&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Topologie&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur voit la topologie du réseau (répartition des capteurs dans la salle / le bâtiment)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
4&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Résultat&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur observe en temps réel (unité de temps=une simulation) les graphes qu&#039;il voulait lors de la configuration. &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
18&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Scheduler&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur peut programmer des périodes d&#039;exécution pour son expérience (le simulateur n&#039;exécute l&#039;expérience que la nuit, le PC a plus de ressources le journée)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Format&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
Les fichiers d&#039;entrées / sorties doivent être génériques &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aspects Techniques === &lt;br /&gt;
&lt;br /&gt;
* Langage C et bibliothèque graphique GTK (et gestion des threads)&lt;br /&gt;
* Bibliothèques dynamiques&lt;br /&gt;
* Compilation du code utilisateur pour la topologie&lt;br /&gt;
* Basé sur le noyau Cooja avec Java Native Interface (JNI)&lt;br /&gt;
* Gnuplot&lt;br /&gt;
* Json-glib&lt;br /&gt;
&lt;br /&gt;
== L&#039;équipe ==&lt;br /&gt;
&lt;br /&gt;
Ce projet s&#039;inscrit dans un cadre pédagogique précis. Un encadrant joue le rôle de client, un autre de tuteur. Le projet s&#039;effectue en groupe et met en place des méthodes de gestion de projet.&lt;br /&gt;
&lt;br /&gt;
=== Encadrants ===&lt;br /&gt;
==== Clients ====&lt;br /&gt;
* Bernard Tourancheau&lt;br /&gt;
* Mališa Vučinić&lt;br /&gt;
==== Tuteur ====&lt;br /&gt;
* Didier Donsez &lt;br /&gt;
&lt;br /&gt;
=== Etudiants ===&lt;br /&gt;
* Chef de projet : Noé-Jean Caramelli&lt;br /&gt;
* Minh Quan Ho&lt;br /&gt;
* Florian Lévêque&lt;br /&gt;
&lt;br /&gt;
==== Répartitions des tâches ====&lt;br /&gt;
[[Image:Taches2.png|1000px|thumb|center|Répartition des tâches]]&lt;br /&gt;
&lt;br /&gt;
== Le produit == &lt;br /&gt;
&lt;br /&gt;
=== Architecture logicielle ===&lt;br /&gt;
[[Image:Coconode_architecture.png|300px|thumb|right|Architecture Coconode]]&lt;br /&gt;
&lt;br /&gt;
Coconode est composé de 4 parties différentes :&lt;br /&gt;
* Interface Graphique &lt;br /&gt;
* Architecture interne&lt;br /&gt;
** Configuration&lt;br /&gt;
** Exécution &lt;br /&gt;
** Statistique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;architecture se base sur des modules existants (Générateur de topologie et noyau de simulation Cooja) utilisés dans l&#039;outil existant. Ces modules ont du être intégré dans l&#039;architecture pour pouvoir les réutiliser dans le nouvel outil. &lt;br /&gt;
La séparation des différentes parties a été faite pour isoler chaque partie réalisant les mêmes tâches. Cela facilite le développement et les modification future. &lt;br /&gt;
Cela permet aussi l&#039;utilisation de threads pour paralléliser les différents traitement, pour ne pas bloquer la GUI lors d&#039;un gros traitement dans l&#039;exécution ou dans la partie statistique par exemple. &lt;br /&gt;
 &lt;br /&gt;
La GUI est liée à chaque partie car elle est utilisée en entrée pour que l&#039;utilisateur puisse définir les données de simulation (voir partie Configuration) et en sortie pour que le contrôleur et l&#039;affichage statistique puisse afficher des retours (voir Partie Exécution et Statistique). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Interface Graphique ====&lt;br /&gt;
Cette interface basée sur la librairie GTK permet à l&#039;utilisateur d&#039;interagir avec le noyau de simulation Cooja. &lt;br /&gt;
&lt;br /&gt;
==== Architecture interne ====&lt;br /&gt;
L&#039;architecture interne de Coconode comprend trois parties : &lt;br /&gt;
&lt;br /&gt;
===== Partie Configuration =====&lt;br /&gt;
[[Image:Configurateur_coconode.png|250px|thumb|right|Configuration]]&lt;br /&gt;
&lt;br /&gt;
* Personnalisation de la simulation : &lt;br /&gt;
# Durée de simulation &lt;br /&gt;
# Planification &lt;br /&gt;
# Nombre de simulations&lt;br /&gt;
# Choix du protocole de routage (Ici c&#039;est load, un protocole de routage français)&lt;br /&gt;
Cette partie est lié au module Jsonner qui permet d&#039;exporter ou importer ces paramètres au format JSON. &lt;br /&gt;
[[Image:Topologie_coconode.png|250px|thumb|right|Générateur de topologie]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Génération et visualisation de la topologie :&lt;br /&gt;
# Sélectionner les paramètres de la topologie :&lt;br /&gt;
## Nombre de noeuds &lt;br /&gt;
## Pourcentage de capteurs (qui récupèrent une donnée physique)&lt;br /&gt;
## Pourcentage d&#039;actuateurs (qui réalisent une action)&lt;br /&gt;
## Sélectionner les fichiers utilisateurs qui génèrent une topologie selon un modèle précis (représentation d&#039;une maison ...) &lt;br /&gt;
# Générer la topologie et visualiser le résultat &lt;br /&gt;
&lt;br /&gt;
Après avoir entré toutes les informations précédentes et généré une topologie de réseaux de capteurs, ces informations seront passées au module d&#039;exécution qui va la prendre en charge et l&#039;exécuter en temps voulu.&lt;br /&gt;
&lt;br /&gt;
===== Partie Exécution =====&lt;br /&gt;
[[Image:Coconode_scheduler.png |250px|thumb|right|Scheduler]]&lt;br /&gt;
L&#039;exécution des simulations doit se faire dans un ordre précis défini grâce à l&#039;interface. Cet ordre mélange un ordre temporel et un ordre de définition, en effet, l&#039;utilisateur peut définir un délai de début de simulation en plus de l&#039;ordre de définition de celle-ci. Il faut donc avoir une file d&#039;attente des simulations. &lt;br /&gt;
La file d&#039;attente est une file asynchrone accessible par l&#039;interface et par le contrôleur. Le contrôleur va l&#039;utiliser pour ordonnancer les simulations et gérer l&#039;ordre de départ de chaque simulation. &lt;br /&gt;
&lt;br /&gt;
Ensuite, le contrôle doit être fait en temps réel. L&#039;interface doit être toujours disponible pour l&#039;utilisateurs afin qu&#039;il puisse contrôler les simulations. Comme Cooja est un outil Java, il a fallu utiliser une bibliothèque nommé [http://fr.wikipedia.org/wiki/Java_Native_Interface Java Native Interface] qui permet de faire l&#039;interfaçage entre du code C et du code Java. Cela permet de créer une [http://fr.wikipedia.org/wiki/Machine_virtuelle_Java JVM] personnalisée pour exécuter le noyau Cooja. Il est donc possible d&#039;avoir un contrôle total de Cooja en accédant aux différentes classes présentes.&lt;br /&gt;
&lt;br /&gt;
[[Image:Monitor_coconode.png|250px|thumb|right|Monitor]] &lt;br /&gt;
L&#039;utilisateur aura un retour d&#039;avancement de la simulation en cours ainsi qu&#039;une liste des simulations à venir dans l&#039;ordre de départ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Partie Statistique =====&lt;br /&gt;
[[Image:Pstat.png |250px|thumb|right|Afficheur de résultat et statistiques]]&lt;br /&gt;
Les fichiers d&#039;entrée suivent le format d&#039;entrée Gnuplot le plus fréquemment rencontré : des colonnes de valeur séparées par une tabulation. La première ligne est un commentaire (commence par un &#039;#&#039;) qui décrit chaque colonne de valeur. &lt;br /&gt;
La capture ci-contre se base sur 9 fichiers d&#039;exemple contenant une valeur de rayon par rapport à une valeur d&#039;angle. Pour utiliser le programme avec le simulateur Cooja, un script qui parse la sortie de Cooja dans le bon format Gnuplot doit encore être développé. &lt;br /&gt;
&lt;br /&gt;
Un fichier représente un individu de l&#039;échantillon utilisé pour le graphe statistique de droite. &lt;br /&gt;
Un fichier sera généré pour chaque simulation. Une simulation de Cooja est donc un individu pour le programme de statistique. &lt;br /&gt;
&lt;br /&gt;
Sur l&#039;interface, le choix des axes x et y est possible parmis les description des colonnes trouvées dans le premier fichier affiché. &lt;br /&gt;
&lt;br /&gt;
La liste des fichiers disponble à l&#039;affichage pour &#039;current induvudual&#039; est triée selon l&#039;ordre de la table ASCII. Les valeurs des axes sélectionnés sont affichés pour le fichier sélectionné lorsqu&#039;on clique sur &#039;trace&#039;&lt;br /&gt;
&lt;br /&gt;
== Méthodes de gestion de projet == &lt;br /&gt;
&lt;br /&gt;
Nous utilisons d&#039;une part une méthode de gestion de projets classique avec un Chef de projet, mais d&#039;autre part, nous utilisons la méthode Agile/Scrum pour le développement du logiciel.&lt;br /&gt;
&lt;br /&gt;
=== Scrum Master ===&lt;br /&gt;
&lt;br /&gt;
Nous choisissions un scrum master fixe. En effet, nous avons un chef de projet qui a pour rôle d&#039;être le point central de communication avec l&#039;équipe. Or le scrum master est censé isoler l&#039;équipe de l&#039;extérieur. Si on prend un scrum master tournant, on aura un chef de projet, qui ne sera pas isolé de l&#039;extérieur à cause de son rôle et qui ne sera pas scrum master. Ce n&#039;est pas logique. Nous choisissons donc un scrum master fixe qui sera le chef de projet par soucis de cohérence. &lt;br /&gt;
&lt;br /&gt;
=== Points avec les clients ===&lt;br /&gt;
&lt;br /&gt;
Nous feront un point par semaine avec Bernard Tourancheau et Malisa Vucinic. Le rendez-vous hebdomadaire est fixé tous les jeudis à 15h. Ces rendez-vous serviront à faire le point sur l&#039;avancement et à régler les éventuels problèmes qui pourraient nous bloquer. Un rendez-vous tous les 15 jours serait trop espacé en cas de problème. &lt;br /&gt;
&lt;br /&gt;
=== Durée du stage ===&lt;br /&gt;
&lt;br /&gt;
Le projet commence le 4 février et termine le 15 mars. Nous avons en réalité eu deux réunions avant le 4 février, mais nous n&#039;avions que très  peu de temps libre pour le projet la semaine d&#039;avant. La semaine du 18 mars est celle de la soutenance du projet. Nous ne savons pas la date exacte de soutenance, nous ne plaçons donc pas de tâche &lt;br /&gt;
&lt;br /&gt;
=== Sprints ===&lt;br /&gt;
&lt;br /&gt;
Nous choisissons de faire des sprints de deux semaines. Cela nous semble un bon compromis entre un sprint trop long pendant lequel les tâches serait trop complexes et les problèmes s&#039;accumuleraient, et un sprint trop court où nous n&#039;aurions pas assez avancé pour que le sprint soit profitable, malgré le temps qu&#039;il nous prend. &lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 3&#039;&#039;&#039; :11 Mars au 22 Mars ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Scheduler 	&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Monitoring&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
5&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
3&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Interruption d&#039;une simulation&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Observation des résultats&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
8&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Contrôle d&#039;une simulation&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
17&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Validation du logiciel&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Portabilité de l&#039;outil&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
&lt;br /&gt;
* Plus:&lt;br /&gt;
** Point de vue de conception et de technique avancé&lt;br /&gt;
** Connaissances de JNI &lt;br /&gt;
** Développement boosté &lt;br /&gt;
** Reprise de motivation&lt;br /&gt;
&lt;br /&gt;
* A améliorer:&lt;br /&gt;
** Documentation&lt;br /&gt;
** Test de validation&lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Bugs technique complexe&lt;br /&gt;
** Manque de réactivité aux bugs&lt;br /&gt;
** Deadline approché&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:Burndownchart3_coconode.png|1000px|thumb|center|Burndown Chart Sprint 2]]&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 2&#039;&#039;&#039; :18 Février au 8 Mars ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Générateur de topologie&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Configuration des simulations&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Importer/Exporter données &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Contrôle d&#039;une simulation &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Observation des résultats &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
&lt;br /&gt;
* Plus:&lt;br /&gt;
** Entraide lors de bugs&lt;br /&gt;
** Séparation des modules facilitant le développement &lt;br /&gt;
&lt;br /&gt;
*A améliorer&lt;br /&gt;
** Compréhension de la hiérarchie et fonctionnement de Cooja &lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Répartition du temps&lt;br /&gt;
** Bugs techniques et complexe. &lt;br /&gt;
** Perturbation du rythme de travail lié à:&lt;br /&gt;
*** Problème de santé&lt;br /&gt;
*** Manque de motivation&lt;br /&gt;
*** Problème de l&#039;ordinateur&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:BDCSprint2.jpg|1000px|thumb|center|Burndown Chart Sprint 2]]&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 1&#039;&#039;&#039; : 29 Janvier au 15 Février ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Cahier des charges&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
13&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Architecture	&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
13&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Prototype de l&#039;IHM&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
8&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Prise en main de l&#039;outil&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
* Plus:&lt;br /&gt;
** Rédaction du cahier des charges&lt;br /&gt;
** Utilisation de GIT&lt;br /&gt;
&lt;br /&gt;
*A améliorer&lt;br /&gt;
** Répartition des tâches&lt;br /&gt;
** Mise à jours de Trello &lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Prise en main de l&#039;outil laborieuse&lt;br /&gt;
** Daily stand up oubliée&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:BDCSprint1.jpg|1000px|thumb|center|Burndown Chart Sprint 1]]&lt;br /&gt;
&lt;br /&gt;
=== Outils de suivi ===&lt;br /&gt;
Pour permettre de suivre l&#039;avancement d&#039;un sprint du projet, nous utilisons des outils de Scrum : &lt;br /&gt;
*Todo-List ;&lt;br /&gt;
*Burn down chart.&lt;br /&gt;
&lt;br /&gt;
=== Tests et validation ===&lt;br /&gt;
Comme nous utilisons la méthode Scrum pour la gestion de projet, chaque développeur fera des tests « unitaires » sur les stories qu&#039;il développera. Ils vont permettre d&#039;assurer de l’intégrité du code pour certaines fonctionnalités, la bonne qualité du code. Ils ne permettent pas de vérifier si le code répond aux besoins du client. &lt;br /&gt;
Les tests permettant de garantir au product owner la fiabilité et le respect des spécifications sont les tests d&#039;acceptation. Chaque test sera développé ou défini grâce aux conditions de satisfaction données par celui-ci.&lt;br /&gt;
&lt;br /&gt;
== Choix non fonctionnels == &lt;br /&gt;
===Licence ===&lt;br /&gt;
Le code sera placé sous la licence libre GNU GPL afin de permettre au projet d&#039;être réutilisé et amélioré. &lt;br /&gt;
La documentation et autres ressources éventuellement créées pour le projet seront placées sous licence Creative Commons CC-BY-NC-SA afin de permettre également une réutilisation et une évolution libres.  &lt;br /&gt;
=== Gestionnaire de version===&lt;br /&gt;
Nous choisissons GIT, un gestionnaire de version récent, évolué et de plus en plus répandu. C&#039;est le gestionnaire de version déjà utilisé pour le projet. &lt;br /&gt;
===Documentation===&lt;br /&gt;
Nous prévoyons différents éléments de documentation pour permettre une bonne continuité du projet. &lt;br /&gt;
====Documents de conception====&lt;br /&gt;
*La documentation sera séparée en plusieurs fichiers : &lt;br /&gt;
**Conception IHM ;&lt;br /&gt;
**Conception système (architecture, librairies, technologies).&lt;br /&gt;
&lt;br /&gt;
====Manuels====&lt;br /&gt;
*Manuel développeur ;&lt;br /&gt;
*Manuel utilisateur.&lt;br /&gt;
&lt;br /&gt;
====Génération automatique de documentation sur le code====&lt;br /&gt;
Nous utiliserons un générateur de documentation capable de produire une documentation logicielle à partir du code source du programme, comme Doxygen.&lt;br /&gt;
&lt;br /&gt;
====Convention de codage====&lt;br /&gt;
&lt;br /&gt;
* Indentation obligatoire (utilisation du caractère tabulation) ;&lt;br /&gt;
* L&#039;accolade ouvrante doit être placée à la ligne suivante ;&lt;br /&gt;
* Les commentaires doivent être écrits en anglais ;&lt;br /&gt;
* Tous les fichiers doivent être codés au format UTF-8 ;&lt;br /&gt;
* Les lignes ne doivent (dans la mesure du possible) pas dépassées 80 caractères ;&lt;br /&gt;
* Le nom des fonctions seront plutôt des verbes, les variables seront des noms (en anglais) ;&lt;br /&gt;
		Exemples : &lt;br /&gt;
**Procédure : draw_something ;&lt;br /&gt;
**Variable : a_variable ;&lt;br /&gt;
**Constante : A_CONSTANT.&lt;br /&gt;
*Chaque fonction doit être commenté selon deux règles :&lt;br /&gt;
**Une explication détaillée de l&#039;utilité de la fonction doit être placé au dessus du corps de la fonction ;&lt;br /&gt;
**Chaque ligne de code complexe doit être commentée .&lt;br /&gt;
*Chaque fonction ne doit (dans la mesure du possible) n&#039;implémenter qu&#039;une seule tâche.&lt;br /&gt;
&lt;br /&gt;
==TODO==&lt;br /&gt;
* Script to parse [http://air.imag.fr/mediawiki/images/a/a8/Coconode_cooja_output.txt COOJA log] in to [http://air.imag.fr/mediawiki/images/8/8a/Coconode_gnuplot_input.txt GNUplot format].&lt;br /&gt;
* Validation test&lt;br /&gt;
* Integrate Statistic module into Coconode (or add callback to launch Statistic module from Coconode)&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Coconode&amp;diff=10264</id>
		<title>Coconode</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Coconode&amp;diff=10264"/>
		<updated>2013-03-23T01:02:45Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* Partie Statistique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Coconode_interface.png|300px|thumb|right|Interface Coconode]]&lt;br /&gt;
&lt;br /&gt;
==Git us !==&lt;br /&gt;
&lt;br /&gt;
[https://bitbucket.org/noejean/coconode COCONODE on Git]&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Ce projet se place dans la continuité du travail de Malisa VUCINIC - thésard à l&#039;équipe DRAKKA (LIG). Durant son projet de fin d&#039;études, il a écrit un programme permettant de simuler le comportement de capteurs disposés dans une salle/un bâtiment. Le comportement étant basé sur deux protocoles de routage de données (RPL ou LOADng). Cependant, ce programme ne permet pas d&#039;automatiser l&#039;exécution d&#039;un grand nombre de simulation, ce qui est nécessaire pour faire des statistiques. De plus, les données obtenues ne sont pas interprétées mais seulement regroupées de manière cohérente par un parseur. L’utilisateur est obligé de traiter lui-même ces données via un logiciel tiers d’analyse. &lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
&lt;br /&gt;
Industrie, sécurité, transport, santé... Les capteurs sont de plus en plus utilisés dans notre quotidien. Organisé en réseau, ces capteurs permettent de récolter une multitude de données de toutes sortes. La majorité des applications impliquent le déploiement d&#039;un grand nombre de nœuds (capteurs) dans une zone donnée. Cela implique un minimum de traitement pour communiquer entre eux et/ou avec une entité capable de les traiter. Cependant, une grande partie de ces équipements ne seront pas reliés à un réseau électrique ni à un réseau informatique à cause du coût d’installation et de raccordement. C’est pourquoi ils seront alimentés grâce à une batterie et devront communiquer via des transmissions radio. Le coût faible du déploiement et la durée de vie très longue des capteurs impliquent des contraintes matérielles liées à la mémoire, aux traitements et à la consommation d’énergie. La communication en est impactée car il faut consommer le moins possible tout en communiquant avec les autres. Il faut donc utiliser des protocoles de communications optimisés pour lui permettre d’être autonome tout en restant joignable via Internet. En effet, IPv6 est performant pour délivrer les données et router celle-ci, quel que soit le réseau, d’un émetteur vers un récepteur. De plus, au vu du nombre de capteurs déployés, il est nécessaire d’avoir une grande plage d’adresses disponible. Cependant, IP a été conçu pour des réseaux très puissants et possède, par exemple, des entêtes de tailles trop grandes pour un capteur. C’est pourquoi l’IETF a créé un standard nommé 6LowPAN qui définit des mécanismes d’encapsulation et de compression d’en-têtes permettant d’envoyer des paquets IPv6. &lt;br /&gt;
Afin de pouvoir tester et expérimenter de tels protocoles, plusieurs méthodes sont possibles : théorie, simulation, modélisation. La théorie permet d’avoir un résultat rapidement par rapport aux autres méthodes. La modélisation est la meilleure solution par rapport à la précision des résultats. Cependant, la première n’est pas assez représentative par rapport à des évènements censés être aléatoires sur les nœuds et la deuxième coûte cher et ne supporte pas les changements. La simulation est un bon compromis car il est possible de la reproduire dans le temps en modifiant les paramètres facilement tout en contrôlant les dépenses liées au coût de développement. Un des désavantages de la simulation est que certains phénomènes physiques sont très difficiles (voire impossible) à définir. &lt;br /&gt;
&lt;br /&gt;
Aujourd&#039;hui, plusieurs systèmes d&#039;exploitation sont utilisés sur ces capteurs pour pouvoir faire des opérations liées aux communications, aux récupérations de données et aux agrégations de celles-ci. [http://fr.wikipedia.org/wiki/Contiki Contiki] est l&#039;un des plus utilisés. &lt;br /&gt;
C’est pourquoi, l’équipe Drakkar utilise un simulateur nommé [http://www.contiki-os.org/start.html#start-cooja Cooja] pour simuler le comportement d’un réseau de capteurs par rapport aux algorithmes de routages des paquets, de la disposition des capteurs dans le réseau, les propriétés de l’environnement… Ce simulateur est fourni par l&#039;organisation qui développe Contiki pour pouvoir émuler cet OS au niveau hardware et ainsi pouvoir réutiliser les codes simulés sur des capteurs réels.&lt;br /&gt;
&lt;br /&gt;
==Utilisateurs cibles==&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs cibles sont principalement des chercheurs, stagiaires utilisant le simulateur Cooja. Ensuite, les autres utilisateurs seront les personnes lambda voulant utiliser ce logiciel car il sera diffusé avec une licence libre. &lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
L&#039;objectif est faire un logiciel permettant de configurer et de répéter une expérience, de suivre les différentes étapes de l&#039;expérience lors de la simulation et d&#039;interpréter les résultats obtenus. Le logiciel doit être « user friendly », avec une interface graphique. De plus, dans la mesure du possible, on essayera de le rendre générique, c&#039;est à dire utilisable pour d&#039;autres protocoles que les deux testés dans le cadre de ce projet. Il sera ainsi susceptible d&#039;être réutilisé pour d&#039;autres études. &lt;br /&gt;
&lt;br /&gt;
Le travail à réaliser peut être présenté en trois modules :&lt;br /&gt;
*Partie configuration : Saisir des paramètres voulus pour la simulation, le nombre de simulations voulues pour pouvoir faire des statistiques associées, construction de fichier de configuration .xml (scénario). Cette partie pourra aussi afficher la configuration/répartition des capteurs dans la salle/du bâtiment : une carte de la salle affiche leur position. &lt;br /&gt;
*Partie suivi de la simulation (qui peut durer très longtemps, des semaines) : donne le statut de la simulation. Par exemple :  Simulation avec COOJA à partir du scénario (répéter plusieurs fois pour augmenter la confiance)&lt;br /&gt;
*Partie résultat : elle peut être décomposée en 2 sous parties :&lt;br /&gt;
**Choisir les données que l&#039;on veut afficher (choix  des différents graphes avec différents paramètres, choix de l&#039;échelle, observation d&#039;une simulation particulière ou application d&#039;une fonction statistique aux données particulière)&lt;br /&gt;
**Afficher les graphes et les données de sortie. Résultat + script pour analyser le résultat. &lt;br /&gt;
&lt;br /&gt;
L&#039;outil actuel se fait en plusieurs étapes séparées par des lignes de commande tapées manuellement. Ceci n&#039;est pas automatisé et est destiné principalement à l&#039;utilisateur expérimenté. &lt;br /&gt;
Le but de notre projet est de développer un outil qui automatise le processus de simulation comprenant la configuration, l&#039;exécution et l&#039;analyse de résultat sous forme d&#039;une interface utilisateur interactive. Il sera important de concevoir une architecture flexible, modulable et facile à étendre pour le développement ultérieur.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnalités à développer ==&lt;br /&gt;
&lt;br /&gt;
=== Product Backlog ===&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;80%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Description&lt;br /&gt;
! scope=col | Complexité&lt;br /&gt;
! scope=col | Priorité&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Configuration&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur veut choisir la configuration qu&#039;il veut pour l&#039;expérience (protocole, nombre de simulations, loi de probabilité des événements...)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
12&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Monitoring&lt;br /&gt;
| width=&amp;quot;38%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur surveille l&#039;état de l&#039;exécution de la simulation en temps réel. &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
5&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Interruption&lt;br /&gt;
| width=&amp;quot;38%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur interrompt l’expérience. &lt;br /&gt;
| width=&amp;quot;12&amp;quot; |&lt;br /&gt;
3&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Répétitions&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur détermine le nombre de fois qu&#039;une simulation est répétée durant une expérience (pour augmenter l&#039;intervalle de confiance). &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
2&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Topologie&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur voit la topologie du réseau (répartition des capteurs dans la salle / le bâtiment)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
4&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Résultat&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur observe en temps réel (unité de temps=une simulation) les graphes qu&#039;il voulait lors de la configuration. &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
18&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Scheduler&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur peut programmer des périodes d&#039;exécution pour son expérience (le simulateur n&#039;exécute l&#039;expérience que la nuit, le PC a plus de ressources le journée)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Format&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
Les fichiers d&#039;entrées / sorties doivent être génériques &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aspects Techniques === &lt;br /&gt;
&lt;br /&gt;
* Langage C et bibliothèque graphique GTK (et gestion des threads)&lt;br /&gt;
* Bibliothèques dynamiques&lt;br /&gt;
* Compilation du code utilisateur pour la topologie&lt;br /&gt;
* Basé sur le noyau Cooja avec Java Native Interface (JNI)&lt;br /&gt;
* Gnuplot&lt;br /&gt;
* Json-glib&lt;br /&gt;
&lt;br /&gt;
== L&#039;équipe ==&lt;br /&gt;
&lt;br /&gt;
Ce projet s&#039;inscrit dans un cadre pédagogique précis. Un encadrant joue le rôle de client, un autre de tuteur. Le projet s&#039;effectue en groupe et met en place des méthodes de gestion de projet.&lt;br /&gt;
&lt;br /&gt;
=== Encadrants ===&lt;br /&gt;
==== Clients ====&lt;br /&gt;
* Bernard Tourancheau&lt;br /&gt;
* Mališa Vučinić&lt;br /&gt;
==== Tuteur ====&lt;br /&gt;
* Didier Donsez &lt;br /&gt;
&lt;br /&gt;
=== Etudiants ===&lt;br /&gt;
* Chef de projet : Noé-Jean Caramelli&lt;br /&gt;
* Minh Quan Ho&lt;br /&gt;
* Florian Lévêque&lt;br /&gt;
&lt;br /&gt;
==== Répartitions des tâches ====&lt;br /&gt;
[[Image:Taches2.png|1000px|thumb|center|Répartition des tâches]]&lt;br /&gt;
&lt;br /&gt;
== Le produit == &lt;br /&gt;
&lt;br /&gt;
=== Architecture logicielle ===&lt;br /&gt;
[[Image:Coconode_architecture.png|300px|thumb|right|Architecture Coconode]]&lt;br /&gt;
&lt;br /&gt;
Coconode est composé de 4 parties différentes :&lt;br /&gt;
* Interface Graphique &lt;br /&gt;
* Architecture interne&lt;br /&gt;
** Configuration&lt;br /&gt;
** Exécution &lt;br /&gt;
** Statistique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;architecture se base sur des modules existants (Générateur de topologie et noyau de simulation Cooja) utilisés dans l&#039;outil existant. Ces modules ont du être intégré dans l&#039;architecture pour pouvoir les réutiliser dans le nouvel outil. &lt;br /&gt;
La séparation des différentes parties a été faite pour isoler chaque partie réalisant les mêmes tâches. Cela facilite le développement et les modification future. &lt;br /&gt;
Cela permet aussi l&#039;utilisation de threads pour paralléliser les différents traitement, pour ne pas bloquer la GUI lors d&#039;un gros traitement dans l&#039;exécution ou dans la partie statistique par exemple. &lt;br /&gt;
 &lt;br /&gt;
La GUI est liée à chaque partie car elle est utilisée en entrée pour que l&#039;utilisateur puisse définir les données de simulation (voir partie Configuration) et en sortie pour que le contrôleur et l&#039;affichage statistique puisse afficher des retours (voir Partie Exécution et Statistique). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Interface Graphique ====&lt;br /&gt;
Cette interface basée sur la librairie GTK permet à l&#039;utilisateur d&#039;interagir avec le noyau de simulation Cooja. &lt;br /&gt;
&lt;br /&gt;
==== Architecture interne ====&lt;br /&gt;
L&#039;architecture interne de Coconode comprend trois parties : &lt;br /&gt;
&lt;br /&gt;
===== Partie Configuration =====&lt;br /&gt;
[[Image:Configurateur_coconode.png|250px|thumb|right|Configuration]]&lt;br /&gt;
&lt;br /&gt;
* Personnalisation de la simulation : &lt;br /&gt;
# Durée de simulation &lt;br /&gt;
# Planification &lt;br /&gt;
# Nombre de simulations&lt;br /&gt;
# Choix du protocole de routage (Ici c&#039;est load, un protocole de routage français)&lt;br /&gt;
Cette partie est lié au module Jsonner qui permet d&#039;exporter ou importer ces paramètres au format JSON. &lt;br /&gt;
[[Image:Topologie_coconode.png|250px|thumb|right|Générateur de topologie]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Génération et visualisation de la topologie :&lt;br /&gt;
# Sélectionner les paramètres de la topologie :&lt;br /&gt;
## Nombre de noeuds &lt;br /&gt;
## Pourcentage de capteurs (qui récupèrent une donnée physique)&lt;br /&gt;
## Pourcentage d&#039;actuateurs (qui réalisent une action)&lt;br /&gt;
## Sélectionner les fichiers utilisateurs qui génèrent une topologie selon un modèle précis (représentation d&#039;une maison ...) &lt;br /&gt;
# Générer la topologie et visualiser le résultat &lt;br /&gt;
&lt;br /&gt;
Après avoir entré toutes les informations précédentes et généré une topologie de réseaux de capteurs, ces informations seront passées au module d&#039;exécution qui va la prendre en charge et l&#039;exécuter en temps voulu.&lt;br /&gt;
&lt;br /&gt;
===== Partie Exécution =====&lt;br /&gt;
[[Image:Coconode_scheduler.png |250px|thumb|right|Scheduler]]&lt;br /&gt;
L&#039;exécution des simulations doit se faire dans un ordre précis défini grâce à l&#039;interface. Cet ordre mélange un ordre temporel et un ordre de définition, en effet, l&#039;utilisateur peut définir un délai de début de simulation en plus de l&#039;ordre de définition de celle-ci. Il faut donc avoir une file d&#039;attente des simulations. &lt;br /&gt;
La file d&#039;attente est une file asynchrone accessible par l&#039;interface et par le contrôleur. Le contrôleur va l&#039;utiliser pour ordonnancer les simulations et gérer l&#039;ordre de départ de chaque simulation. &lt;br /&gt;
&lt;br /&gt;
Ensuite, le contrôle doit être fait en temps réel. L&#039;interface doit être toujours disponible pour l&#039;utilisateurs afin qu&#039;il puisse contrôler les simulations. Comme Cooja est un outil Java, il a fallu utiliser une bibliothèque nommé [http://fr.wikipedia.org/wiki/Java_Native_Interface Java Native Interface] qui permet de faire l&#039;interfaçage entre du code C et du code Java. Cela permet de créer une [http://fr.wikipedia.org/wiki/Machine_virtuelle_Java JVM] personnalisée pour exécuter le noyau Cooja. Il est donc possible d&#039;avoir un contrôle total de Cooja en accédant aux différentes classes présentes.&lt;br /&gt;
&lt;br /&gt;
[[Image:Monitor_coconode.png|250px|thumb|right|Monitor]] &lt;br /&gt;
L&#039;utilisateur aura un retour d&#039;avancement de la simulation en cours ainsi qu&#039;une liste des simulations à venir dans l&#039;ordre de départ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Partie Statistique =====&lt;br /&gt;
[[Image:Pstat.png |250px|thumb|right|Afficheur de résultat et statistiques]]&lt;br /&gt;
&lt;br /&gt;
== Méthodes de gestion de projet == &lt;br /&gt;
&lt;br /&gt;
Nous utilisons d&#039;une part une méthode de gestion de projets classique avec un Chef de projet, mais d&#039;autre part, nous utilisons la méthode Agile/Scrum pour le développement du logiciel.&lt;br /&gt;
&lt;br /&gt;
=== Scrum Master ===&lt;br /&gt;
&lt;br /&gt;
Nous choisissions un scrum master fixe. En effet, nous avons un chef de projet qui a pour rôle d&#039;être le point central de communication avec l&#039;équipe. Or le scrum master est censé isoler l&#039;équipe de l&#039;extérieur. Si on prend un scrum master tournant, on aura un chef de projet, qui ne sera pas isolé de l&#039;extérieur à cause de son rôle et qui ne sera pas scrum master. Ce n&#039;est pas logique. Nous choisissons donc un scrum master fixe qui sera le chef de projet par soucis de cohérence. &lt;br /&gt;
&lt;br /&gt;
=== Points avec les clients ===&lt;br /&gt;
&lt;br /&gt;
Nous feront un point par semaine avec Bernard Tourancheau et Malisa Vucinic. Le rendez-vous hebdomadaire est fixé tous les jeudis à 15h. Ces rendez-vous serviront à faire le point sur l&#039;avancement et à régler les éventuels problèmes qui pourraient nous bloquer. Un rendez-vous tous les 15 jours serait trop espacé en cas de problème. &lt;br /&gt;
&lt;br /&gt;
=== Durée du stage ===&lt;br /&gt;
&lt;br /&gt;
Le projet commence le 4 février et termine le 15 mars. Nous avons en réalité eu deux réunions avant le 4 février, mais nous n&#039;avions que très  peu de temps libre pour le projet la semaine d&#039;avant. La semaine du 18 mars est celle de la soutenance du projet. Nous ne savons pas la date exacte de soutenance, nous ne plaçons donc pas de tâche &lt;br /&gt;
&lt;br /&gt;
=== Sprints ===&lt;br /&gt;
&lt;br /&gt;
Nous choisissons de faire des sprints de deux semaines. Cela nous semble un bon compromis entre un sprint trop long pendant lequel les tâches serait trop complexes et les problèmes s&#039;accumuleraient, et un sprint trop court où nous n&#039;aurions pas assez avancé pour que le sprint soit profitable, malgré le temps qu&#039;il nous prend. &lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 3&#039;&#039;&#039; :11 Mars au 22 Mars ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Scheduler 	&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Monitoring&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
5&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
3&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Interruption d&#039;une simulation&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Observation des résultats&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
8&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Contrôle d&#039;une simulation&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
17&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Validation du logiciel&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Portabilité de l&#039;outil&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
&lt;br /&gt;
* Plus:&lt;br /&gt;
** Point de vue de conception et de technique avancé&lt;br /&gt;
** Connaissances de JNI &lt;br /&gt;
** Développement boosté &lt;br /&gt;
** Reprise de motivation&lt;br /&gt;
&lt;br /&gt;
* A améliorer:&lt;br /&gt;
** Documentation&lt;br /&gt;
** Test de validation&lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Bugs technique complexe&lt;br /&gt;
** Manque de réactivité aux bugs&lt;br /&gt;
** Deadline approché&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:Burndownchart3_coconode.png|1000px|thumb|center|Burndown Chart Sprint 2]]&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 2&#039;&#039;&#039; :18 Février au 8 Mars ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Générateur de topologie&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Configuration des simulations&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Importer/Exporter données &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Contrôle d&#039;une simulation &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Observation des résultats &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
&lt;br /&gt;
* Plus:&lt;br /&gt;
** Entraide lors de bugs&lt;br /&gt;
** Séparation des modules facilitant le développement &lt;br /&gt;
&lt;br /&gt;
*A améliorer&lt;br /&gt;
** Compréhension de la hiérarchie et fonctionnement de Cooja &lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Répartition du temps&lt;br /&gt;
** Bugs techniques et complexe. &lt;br /&gt;
** Perturbation du rythme de travail lié à:&lt;br /&gt;
*** Problème de santé&lt;br /&gt;
*** Manque de motivation&lt;br /&gt;
*** Problème de l&#039;ordinateur&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:BDCSprint2.jpg|1000px|thumb|center|Burndown Chart Sprint 2]]&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 1&#039;&#039;&#039; : 29 Janvier au 15 Février ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Cahier des charges&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
13&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Architecture	&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
13&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Prototype de l&#039;IHM&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
8&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Prise en main de l&#039;outil&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
* Plus:&lt;br /&gt;
** Rédaction du cahier des charges&lt;br /&gt;
** Utilisation de GIT&lt;br /&gt;
&lt;br /&gt;
*A améliorer&lt;br /&gt;
** Répartition des tâches&lt;br /&gt;
** Mise à jours de Trello &lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Prise en main de l&#039;outil laborieuse&lt;br /&gt;
** Daily stand up oubliée&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:BDCSprint1.jpg|1000px|thumb|center|Burndown Chart Sprint 1]]&lt;br /&gt;
&lt;br /&gt;
=== Outils de suivi ===&lt;br /&gt;
Pour permettre de suivre l&#039;avancement d&#039;un sprint du projet, nous utilisons des outils de Scrum : &lt;br /&gt;
*Todo-List ;&lt;br /&gt;
*Burn down chart.&lt;br /&gt;
&lt;br /&gt;
=== Tests et validation ===&lt;br /&gt;
Comme nous utilisons la méthode Scrum pour la gestion de projet, chaque développeur fera des tests « unitaires » sur les stories qu&#039;il développera. Ils vont permettre d&#039;assurer de l’intégrité du code pour certaines fonctionnalités, la bonne qualité du code. Ils ne permettent pas de vérifier si le code répond aux besoins du client. &lt;br /&gt;
Les tests permettant de garantir au product owner la fiabilité et le respect des spécifications sont les tests d&#039;acceptation. Chaque test sera développé ou défini grâce aux conditions de satisfaction données par celui-ci.&lt;br /&gt;
&lt;br /&gt;
== Choix non fonctionnels == &lt;br /&gt;
===Licence ===&lt;br /&gt;
Le code sera placé sous la licence libre GNU GPL afin de permettre au projet d&#039;être réutilisé et amélioré. &lt;br /&gt;
La documentation et autres ressources éventuellement créées pour le projet seront placées sous licence Creative Commons CC-BY-NC-SA afin de permettre également une réutilisation et une évolution libres.  &lt;br /&gt;
=== Gestionnaire de version===&lt;br /&gt;
Nous choisissons GIT, un gestionnaire de version récent, évolué et de plus en plus répandu. C&#039;est le gestionnaire de version déjà utilisé pour le projet. &lt;br /&gt;
===Documentation===&lt;br /&gt;
Nous prévoyons différents éléments de documentation pour permettre une bonne continuité du projet. &lt;br /&gt;
====Documents de conception====&lt;br /&gt;
*La documentation sera séparée en plusieurs fichiers : &lt;br /&gt;
**Conception IHM ;&lt;br /&gt;
**Conception système (architecture, librairies, technologies).&lt;br /&gt;
&lt;br /&gt;
====Manuels====&lt;br /&gt;
*Manuel développeur ;&lt;br /&gt;
*Manuel utilisateur.&lt;br /&gt;
&lt;br /&gt;
====Génération automatique de documentation sur le code====&lt;br /&gt;
Nous utiliserons un générateur de documentation capable de produire une documentation logicielle à partir du code source du programme, comme Doxygen.&lt;br /&gt;
&lt;br /&gt;
====Convention de codage====&lt;br /&gt;
&lt;br /&gt;
* Indentation obligatoire (utilisation du caractère tabulation) ;&lt;br /&gt;
* L&#039;accolade ouvrante doit être placée à la ligne suivante ;&lt;br /&gt;
* Les commentaires doivent être écrits en anglais ;&lt;br /&gt;
* Tous les fichiers doivent être codés au format UTF-8 ;&lt;br /&gt;
* Les lignes ne doivent (dans la mesure du possible) pas dépassées 80 caractères ;&lt;br /&gt;
* Le nom des fonctions seront plutôt des verbes, les variables seront des noms (en anglais) ;&lt;br /&gt;
		Exemples : &lt;br /&gt;
**Procédure : draw_something ;&lt;br /&gt;
**Variable : a_variable ;&lt;br /&gt;
**Constante : A_CONSTANT.&lt;br /&gt;
*Chaque fonction doit être commenté selon deux règles :&lt;br /&gt;
**Une explication détaillée de l&#039;utilité de la fonction doit être placé au dessus du corps de la fonction ;&lt;br /&gt;
**Chaque ligne de code complexe doit être commentée .&lt;br /&gt;
*Chaque fonction ne doit (dans la mesure du possible) n&#039;implémenter qu&#039;une seule tâche.&lt;br /&gt;
&lt;br /&gt;
==TODO==&lt;br /&gt;
* Script to parse [http://air.imag.fr/mediawiki/images/a/a8/Coconode_cooja_output.txt COOJA log] in to [http://air.imag.fr/mediawiki/images/8/8a/Coconode_gnuplot_input.txt GNUplot format].&lt;br /&gt;
* Validation test&lt;br /&gt;
* Integrate Statistic module into Coconode (or add callback to launch Statistic module from Coconode)&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Coconode&amp;diff=10263</id>
		<title>Coconode</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Coconode&amp;diff=10263"/>
		<updated>2013-03-23T01:01:27Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* Partie Statistique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Coconode_interface.png|300px|thumb|right|Interface Coconode]]&lt;br /&gt;
&lt;br /&gt;
==Git us !==&lt;br /&gt;
&lt;br /&gt;
[https://bitbucket.org/noejean/coconode COCONODE on Git]&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Ce projet se place dans la continuité du travail de Malisa VUCINIC - thésard à l&#039;équipe DRAKKA (LIG). Durant son projet de fin d&#039;études, il a écrit un programme permettant de simuler le comportement de capteurs disposés dans une salle/un bâtiment. Le comportement étant basé sur deux protocoles de routage de données (RPL ou LOADng). Cependant, ce programme ne permet pas d&#039;automatiser l&#039;exécution d&#039;un grand nombre de simulation, ce qui est nécessaire pour faire des statistiques. De plus, les données obtenues ne sont pas interprétées mais seulement regroupées de manière cohérente par un parseur. L’utilisateur est obligé de traiter lui-même ces données via un logiciel tiers d’analyse. &lt;br /&gt;
&lt;br /&gt;
==Motivations==&lt;br /&gt;
&lt;br /&gt;
Industrie, sécurité, transport, santé... Les capteurs sont de plus en plus utilisés dans notre quotidien. Organisé en réseau, ces capteurs permettent de récolter une multitude de données de toutes sortes. La majorité des applications impliquent le déploiement d&#039;un grand nombre de nœuds (capteurs) dans une zone donnée. Cela implique un minimum de traitement pour communiquer entre eux et/ou avec une entité capable de les traiter. Cependant, une grande partie de ces équipements ne seront pas reliés à un réseau électrique ni à un réseau informatique à cause du coût d’installation et de raccordement. C’est pourquoi ils seront alimentés grâce à une batterie et devront communiquer via des transmissions radio. Le coût faible du déploiement et la durée de vie très longue des capteurs impliquent des contraintes matérielles liées à la mémoire, aux traitements et à la consommation d’énergie. La communication en est impactée car il faut consommer le moins possible tout en communiquant avec les autres. Il faut donc utiliser des protocoles de communications optimisés pour lui permettre d’être autonome tout en restant joignable via Internet. En effet, IPv6 est performant pour délivrer les données et router celle-ci, quel que soit le réseau, d’un émetteur vers un récepteur. De plus, au vu du nombre de capteurs déployés, il est nécessaire d’avoir une grande plage d’adresses disponible. Cependant, IP a été conçu pour des réseaux très puissants et possède, par exemple, des entêtes de tailles trop grandes pour un capteur. C’est pourquoi l’IETF a créé un standard nommé 6LowPAN qui définit des mécanismes d’encapsulation et de compression d’en-têtes permettant d’envoyer des paquets IPv6. &lt;br /&gt;
Afin de pouvoir tester et expérimenter de tels protocoles, plusieurs méthodes sont possibles : théorie, simulation, modélisation. La théorie permet d’avoir un résultat rapidement par rapport aux autres méthodes. La modélisation est la meilleure solution par rapport à la précision des résultats. Cependant, la première n’est pas assez représentative par rapport à des évènements censés être aléatoires sur les nœuds et la deuxième coûte cher et ne supporte pas les changements. La simulation est un bon compromis car il est possible de la reproduire dans le temps en modifiant les paramètres facilement tout en contrôlant les dépenses liées au coût de développement. Un des désavantages de la simulation est que certains phénomènes physiques sont très difficiles (voire impossible) à définir. &lt;br /&gt;
&lt;br /&gt;
Aujourd&#039;hui, plusieurs systèmes d&#039;exploitation sont utilisés sur ces capteurs pour pouvoir faire des opérations liées aux communications, aux récupérations de données et aux agrégations de celles-ci. [http://fr.wikipedia.org/wiki/Contiki Contiki] est l&#039;un des plus utilisés. &lt;br /&gt;
C’est pourquoi, l’équipe Drakkar utilise un simulateur nommé [http://www.contiki-os.org/start.html#start-cooja Cooja] pour simuler le comportement d’un réseau de capteurs par rapport aux algorithmes de routages des paquets, de la disposition des capteurs dans le réseau, les propriétés de l’environnement… Ce simulateur est fourni par l&#039;organisation qui développe Contiki pour pouvoir émuler cet OS au niveau hardware et ainsi pouvoir réutiliser les codes simulés sur des capteurs réels.&lt;br /&gt;
&lt;br /&gt;
==Utilisateurs cibles==&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs cibles sont principalement des chercheurs, stagiaires utilisant le simulateur Cooja. Ensuite, les autres utilisateurs seront les personnes lambda voulant utiliser ce logiciel car il sera diffusé avec une licence libre. &lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
L&#039;objectif est faire un logiciel permettant de configurer et de répéter une expérience, de suivre les différentes étapes de l&#039;expérience lors de la simulation et d&#039;interpréter les résultats obtenus. Le logiciel doit être « user friendly », avec une interface graphique. De plus, dans la mesure du possible, on essayera de le rendre générique, c&#039;est à dire utilisable pour d&#039;autres protocoles que les deux testés dans le cadre de ce projet. Il sera ainsi susceptible d&#039;être réutilisé pour d&#039;autres études. &lt;br /&gt;
&lt;br /&gt;
Le travail à réaliser peut être présenté en trois modules :&lt;br /&gt;
*Partie configuration : Saisir des paramètres voulus pour la simulation, le nombre de simulations voulues pour pouvoir faire des statistiques associées, construction de fichier de configuration .xml (scénario). Cette partie pourra aussi afficher la configuration/répartition des capteurs dans la salle/du bâtiment : une carte de la salle affiche leur position. &lt;br /&gt;
*Partie suivi de la simulation (qui peut durer très longtemps, des semaines) : donne le statut de la simulation. Par exemple :  Simulation avec COOJA à partir du scénario (répéter plusieurs fois pour augmenter la confiance)&lt;br /&gt;
*Partie résultat : elle peut être décomposée en 2 sous parties :&lt;br /&gt;
**Choisir les données que l&#039;on veut afficher (choix  des différents graphes avec différents paramètres, choix de l&#039;échelle, observation d&#039;une simulation particulière ou application d&#039;une fonction statistique aux données particulière)&lt;br /&gt;
**Afficher les graphes et les données de sortie. Résultat + script pour analyser le résultat. &lt;br /&gt;
&lt;br /&gt;
L&#039;outil actuel se fait en plusieurs étapes séparées par des lignes de commande tapées manuellement. Ceci n&#039;est pas automatisé et est destiné principalement à l&#039;utilisateur expérimenté. &lt;br /&gt;
Le but de notre projet est de développer un outil qui automatise le processus de simulation comprenant la configuration, l&#039;exécution et l&#039;analyse de résultat sous forme d&#039;une interface utilisateur interactive. Il sera important de concevoir une architecture flexible, modulable et facile à étendre pour le développement ultérieur.&lt;br /&gt;
&lt;br /&gt;
== Fonctionnalités à développer ==&lt;br /&gt;
&lt;br /&gt;
=== Product Backlog ===&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;80%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Description&lt;br /&gt;
! scope=col | Complexité&lt;br /&gt;
! scope=col | Priorité&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Configuration&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur veut choisir la configuration qu&#039;il veut pour l&#039;expérience (protocole, nombre de simulations, loi de probabilité des événements...)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
12&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Monitoring&lt;br /&gt;
| width=&amp;quot;38%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur surveille l&#039;état de l&#039;exécution de la simulation en temps réel. &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
5&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Interruption&lt;br /&gt;
| width=&amp;quot;38%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur interrompt l’expérience. &lt;br /&gt;
| width=&amp;quot;12&amp;quot; |&lt;br /&gt;
3&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Répétitions&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur détermine le nombre de fois qu&#039;une simulation est répétée durant une expérience (pour augmenter l&#039;intervalle de confiance). &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
2&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Topologie&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur voit la topologie du réseau (répartition des capteurs dans la salle / le bâtiment)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
4&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Résultat&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur observe en temps réel (unité de temps=une simulation) les graphes qu&#039;il voulait lors de la configuration. &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
18&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Scheduler&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
L&#039;utilisateur peut programmer des périodes d&#039;exécution pour son expérience (le simulateur n&#039;exécute l&#039;expérience que la nuit, le PC a plus de ressources le journée)&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
Format&lt;br /&gt;
| width=&amp;quot;54%&amp;quot; |&lt;br /&gt;
Les fichiers d&#039;entrées / sorties doivent être génériques &lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;12%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aspects Techniques === &lt;br /&gt;
&lt;br /&gt;
* Langage C et bibliothèque graphique GTK (et gestion des threads)&lt;br /&gt;
* Bibliothèques dynamiques&lt;br /&gt;
* Compilation du code utilisateur pour la topologie&lt;br /&gt;
* Basé sur le noyau Cooja avec Java Native Interface (JNI)&lt;br /&gt;
* Gnuplot&lt;br /&gt;
* Json-glib&lt;br /&gt;
&lt;br /&gt;
== L&#039;équipe ==&lt;br /&gt;
&lt;br /&gt;
Ce projet s&#039;inscrit dans un cadre pédagogique précis. Un encadrant joue le rôle de client, un autre de tuteur. Le projet s&#039;effectue en groupe et met en place des méthodes de gestion de projet.&lt;br /&gt;
&lt;br /&gt;
=== Encadrants ===&lt;br /&gt;
==== Clients ====&lt;br /&gt;
* Bernard Tourancheau&lt;br /&gt;
* Mališa Vučinić&lt;br /&gt;
==== Tuteur ====&lt;br /&gt;
* Didier Donsez &lt;br /&gt;
&lt;br /&gt;
=== Etudiants ===&lt;br /&gt;
* Chef de projet : Noé-Jean Caramelli&lt;br /&gt;
* Minh Quan Ho&lt;br /&gt;
* Florian Lévêque&lt;br /&gt;
&lt;br /&gt;
==== Répartitions des tâches ====&lt;br /&gt;
[[Image:Taches2.png|1000px|thumb|center|Répartition des tâches]]&lt;br /&gt;
&lt;br /&gt;
== Le produit == &lt;br /&gt;
&lt;br /&gt;
=== Architecture logicielle ===&lt;br /&gt;
[[Image:Coconode_architecture.png|300px|thumb|right|Architecture Coconode]]&lt;br /&gt;
&lt;br /&gt;
Coconode est composé de 4 parties différentes :&lt;br /&gt;
* Interface Graphique &lt;br /&gt;
* Architecture interne&lt;br /&gt;
** Configuration&lt;br /&gt;
** Exécution &lt;br /&gt;
** Statistique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;architecture se base sur des modules existants (Générateur de topologie et noyau de simulation Cooja) utilisés dans l&#039;outil existant. Ces modules ont du être intégré dans l&#039;architecture pour pouvoir les réutiliser dans le nouvel outil. &lt;br /&gt;
La séparation des différentes parties a été faite pour isoler chaque partie réalisant les mêmes tâches. Cela facilite le développement et les modification future. &lt;br /&gt;
Cela permet aussi l&#039;utilisation de threads pour paralléliser les différents traitement, pour ne pas bloquer la GUI lors d&#039;un gros traitement dans l&#039;exécution ou dans la partie statistique par exemple. &lt;br /&gt;
 &lt;br /&gt;
La GUI est liée à chaque partie car elle est utilisée en entrée pour que l&#039;utilisateur puisse définir les données de simulation (voir partie Configuration) et en sortie pour que le contrôleur et l&#039;affichage statistique puisse afficher des retours (voir Partie Exécution et Statistique). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Interface Graphique ====&lt;br /&gt;
Cette interface basée sur la librairie GTK permet à l&#039;utilisateur d&#039;interagir avec le noyau de simulation Cooja. &lt;br /&gt;
&lt;br /&gt;
==== Architecture interne ====&lt;br /&gt;
L&#039;architecture interne de Coconode comprend trois parties : &lt;br /&gt;
&lt;br /&gt;
===== Partie Configuration =====&lt;br /&gt;
[[Image:Configurateur_coconode.png|250px|thumb|right|Configuration]]&lt;br /&gt;
&lt;br /&gt;
* Personnalisation de la simulation : &lt;br /&gt;
# Durée de simulation &lt;br /&gt;
# Planification &lt;br /&gt;
# Nombre de simulations&lt;br /&gt;
# Choix du protocole de routage (Ici c&#039;est load, un protocole de routage français)&lt;br /&gt;
Cette partie est lié au module Jsonner qui permet d&#039;exporter ou importer ces paramètres au format JSON. &lt;br /&gt;
[[Image:Topologie_coconode.png|250px|thumb|right|Générateur de topologie]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Génération et visualisation de la topologie :&lt;br /&gt;
# Sélectionner les paramètres de la topologie :&lt;br /&gt;
## Nombre de noeuds &lt;br /&gt;
## Pourcentage de capteurs (qui récupèrent une donnée physique)&lt;br /&gt;
## Pourcentage d&#039;actuateurs (qui réalisent une action)&lt;br /&gt;
## Sélectionner les fichiers utilisateurs qui génèrent une topologie selon un modèle précis (représentation d&#039;une maison ...) &lt;br /&gt;
# Générer la topologie et visualiser le résultat &lt;br /&gt;
&lt;br /&gt;
Après avoir entré toutes les informations précédentes et généré une topologie de réseaux de capteurs, ces informations seront passées au module d&#039;exécution qui va la prendre en charge et l&#039;exécuter en temps voulu.&lt;br /&gt;
&lt;br /&gt;
===== Partie Exécution =====&lt;br /&gt;
[[Image:Coconode_scheduler.png |250px|thumb|right|Scheduler]]&lt;br /&gt;
L&#039;exécution des simulations doit se faire dans un ordre précis défini grâce à l&#039;interface. Cet ordre mélange un ordre temporel et un ordre de définition, en effet, l&#039;utilisateur peut définir un délai de début de simulation en plus de l&#039;ordre de définition de celle-ci. Il faut donc avoir une file d&#039;attente des simulations. &lt;br /&gt;
La file d&#039;attente est une file asynchrone accessible par l&#039;interface et par le contrôleur. Le contrôleur va l&#039;utiliser pour ordonnancer les simulations et gérer l&#039;ordre de départ de chaque simulation. &lt;br /&gt;
&lt;br /&gt;
Ensuite, le contrôle doit être fait en temps réel. L&#039;interface doit être toujours disponible pour l&#039;utilisateurs afin qu&#039;il puisse contrôler les simulations. Comme Cooja est un outil Java, il a fallu utiliser une bibliothèque nommé [http://fr.wikipedia.org/wiki/Java_Native_Interface Java Native Interface] qui permet de faire l&#039;interfaçage entre du code C et du code Java. Cela permet de créer une [http://fr.wikipedia.org/wiki/Machine_virtuelle_Java JVM] personnalisée pour exécuter le noyau Cooja. Il est donc possible d&#039;avoir un contrôle total de Cooja en accédant aux différentes classes présentes.&lt;br /&gt;
&lt;br /&gt;
[[Image:Monitor_coconode.png|250px|thumb|right|Monitor]] &lt;br /&gt;
L&#039;utilisateur aura un retour d&#039;avancement de la simulation en cours ainsi qu&#039;une liste des simulations à venir dans l&#039;ordre de départ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Partie Statistique =====&lt;br /&gt;
[[Image:Pstat.png |250px|thumb|right|Scheduler]]&lt;br /&gt;
&lt;br /&gt;
== Méthodes de gestion de projet == &lt;br /&gt;
&lt;br /&gt;
Nous utilisons d&#039;une part une méthode de gestion de projets classique avec un Chef de projet, mais d&#039;autre part, nous utilisons la méthode Agile/Scrum pour le développement du logiciel.&lt;br /&gt;
&lt;br /&gt;
=== Scrum Master ===&lt;br /&gt;
&lt;br /&gt;
Nous choisissions un scrum master fixe. En effet, nous avons un chef de projet qui a pour rôle d&#039;être le point central de communication avec l&#039;équipe. Or le scrum master est censé isoler l&#039;équipe de l&#039;extérieur. Si on prend un scrum master tournant, on aura un chef de projet, qui ne sera pas isolé de l&#039;extérieur à cause de son rôle et qui ne sera pas scrum master. Ce n&#039;est pas logique. Nous choisissons donc un scrum master fixe qui sera le chef de projet par soucis de cohérence. &lt;br /&gt;
&lt;br /&gt;
=== Points avec les clients ===&lt;br /&gt;
&lt;br /&gt;
Nous feront un point par semaine avec Bernard Tourancheau et Malisa Vucinic. Le rendez-vous hebdomadaire est fixé tous les jeudis à 15h. Ces rendez-vous serviront à faire le point sur l&#039;avancement et à régler les éventuels problèmes qui pourraient nous bloquer. Un rendez-vous tous les 15 jours serait trop espacé en cas de problème. &lt;br /&gt;
&lt;br /&gt;
=== Durée du stage ===&lt;br /&gt;
&lt;br /&gt;
Le projet commence le 4 février et termine le 15 mars. Nous avons en réalité eu deux réunions avant le 4 février, mais nous n&#039;avions que très  peu de temps libre pour le projet la semaine d&#039;avant. La semaine du 18 mars est celle de la soutenance du projet. Nous ne savons pas la date exacte de soutenance, nous ne plaçons donc pas de tâche &lt;br /&gt;
&lt;br /&gt;
=== Sprints ===&lt;br /&gt;
&lt;br /&gt;
Nous choisissons de faire des sprints de deux semaines. Cela nous semble un bon compromis entre un sprint trop long pendant lequel les tâches serait trop complexes et les problèmes s&#039;accumuleraient, et un sprint trop court où nous n&#039;aurions pas assez avancé pour que le sprint soit profitable, malgré le temps qu&#039;il nous prend. &lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 3&#039;&#039;&#039; :11 Mars au 22 Mars ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Scheduler 	&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Monitoring&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
5&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
3&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Interruption d&#039;une simulation&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Observation des résultats&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
8&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Contrôle d&#039;une simulation&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
17&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Validation du logiciel&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Portabilité de l&#039;outil&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
&lt;br /&gt;
* Plus:&lt;br /&gt;
** Point de vue de conception et de technique avancé&lt;br /&gt;
** Connaissances de JNI &lt;br /&gt;
** Développement boosté &lt;br /&gt;
** Reprise de motivation&lt;br /&gt;
&lt;br /&gt;
* A améliorer:&lt;br /&gt;
** Documentation&lt;br /&gt;
** Test de validation&lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Bugs technique complexe&lt;br /&gt;
** Manque de réactivité aux bugs&lt;br /&gt;
** Deadline approché&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:Burndownchart3_coconode.png|1000px|thumb|center|Burndown Chart Sprint 2]]&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 2&#039;&#039;&#039; :18 Février au 8 Mars ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Générateur de topologie&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Configuration des simulations&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
30&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Importer/Exporter données &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
20&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Contrôle d&#039;une simulation &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Observation des résultats &lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
35&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
&lt;br /&gt;
* Plus:&lt;br /&gt;
** Entraide lors de bugs&lt;br /&gt;
** Séparation des modules facilitant le développement &lt;br /&gt;
&lt;br /&gt;
*A améliorer&lt;br /&gt;
** Compréhension de la hiérarchie et fonctionnement de Cooja &lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Répartition du temps&lt;br /&gt;
** Bugs techniques et complexe. &lt;br /&gt;
** Perturbation du rythme de travail lié à:&lt;br /&gt;
*** Problème de santé&lt;br /&gt;
*** Manque de motivation&lt;br /&gt;
*** Problème de l&#039;ordinateur&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:BDCSprint2.jpg|1000px|thumb|center|Burndown Chart Sprint 2]]&lt;br /&gt;
==== &#039;&#039;&#039;Sprint 1&#039;&#039;&#039; : 29 Janvier au 15 Février ====&lt;br /&gt;
===== Sprint Backlog =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable centre&amp;quot; width=&amp;quot;30%&amp;quot;&lt;br /&gt;
|+ Product Backlog&lt;br /&gt;
|-&lt;br /&gt;
! scope=col | Nom&lt;br /&gt;
! scope=col | Valeurs/Importance&lt;br /&gt;
! scope=col | Estimation initiale&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Cahier des charges&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
13&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
15&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Architecture	&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
13&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Prototype de l&#039;IHM&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
8&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
25&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; |&lt;br /&gt;
Prise en main de l&#039;outil&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; |&lt;br /&gt;
10&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Sprint retrospective =====&lt;br /&gt;
* Plus:&lt;br /&gt;
** Rédaction du cahier des charges&lt;br /&gt;
** Utilisation de GIT&lt;br /&gt;
&lt;br /&gt;
*A améliorer&lt;br /&gt;
** Répartition des tâches&lt;br /&gt;
** Mise à jours de Trello &lt;br /&gt;
&lt;br /&gt;
* Moins:&lt;br /&gt;
** Prise en main de l&#039;outil laborieuse&lt;br /&gt;
** Daily stand up oubliée&lt;br /&gt;
&lt;br /&gt;
==== Burndown Chart ====&lt;br /&gt;
[[Image:BDCSprint1.jpg|1000px|thumb|center|Burndown Chart Sprint 1]]&lt;br /&gt;
&lt;br /&gt;
=== Outils de suivi ===&lt;br /&gt;
Pour permettre de suivre l&#039;avancement d&#039;un sprint du projet, nous utilisons des outils de Scrum : &lt;br /&gt;
*Todo-List ;&lt;br /&gt;
*Burn down chart.&lt;br /&gt;
&lt;br /&gt;
=== Tests et validation ===&lt;br /&gt;
Comme nous utilisons la méthode Scrum pour la gestion de projet, chaque développeur fera des tests « unitaires » sur les stories qu&#039;il développera. Ils vont permettre d&#039;assurer de l’intégrité du code pour certaines fonctionnalités, la bonne qualité du code. Ils ne permettent pas de vérifier si le code répond aux besoins du client. &lt;br /&gt;
Les tests permettant de garantir au product owner la fiabilité et le respect des spécifications sont les tests d&#039;acceptation. Chaque test sera développé ou défini grâce aux conditions de satisfaction données par celui-ci.&lt;br /&gt;
&lt;br /&gt;
== Choix non fonctionnels == &lt;br /&gt;
===Licence ===&lt;br /&gt;
Le code sera placé sous la licence libre GNU GPL afin de permettre au projet d&#039;être réutilisé et amélioré. &lt;br /&gt;
La documentation et autres ressources éventuellement créées pour le projet seront placées sous licence Creative Commons CC-BY-NC-SA afin de permettre également une réutilisation et une évolution libres.  &lt;br /&gt;
=== Gestionnaire de version===&lt;br /&gt;
Nous choisissons GIT, un gestionnaire de version récent, évolué et de plus en plus répandu. C&#039;est le gestionnaire de version déjà utilisé pour le projet. &lt;br /&gt;
===Documentation===&lt;br /&gt;
Nous prévoyons différents éléments de documentation pour permettre une bonne continuité du projet. &lt;br /&gt;
====Documents de conception====&lt;br /&gt;
*La documentation sera séparée en plusieurs fichiers : &lt;br /&gt;
**Conception IHM ;&lt;br /&gt;
**Conception système (architecture, librairies, technologies).&lt;br /&gt;
&lt;br /&gt;
====Manuels====&lt;br /&gt;
*Manuel développeur ;&lt;br /&gt;
*Manuel utilisateur.&lt;br /&gt;
&lt;br /&gt;
====Génération automatique de documentation sur le code====&lt;br /&gt;
Nous utiliserons un générateur de documentation capable de produire une documentation logicielle à partir du code source du programme, comme Doxygen.&lt;br /&gt;
&lt;br /&gt;
====Convention de codage====&lt;br /&gt;
&lt;br /&gt;
* Indentation obligatoire (utilisation du caractère tabulation) ;&lt;br /&gt;
* L&#039;accolade ouvrante doit être placée à la ligne suivante ;&lt;br /&gt;
* Les commentaires doivent être écrits en anglais ;&lt;br /&gt;
* Tous les fichiers doivent être codés au format UTF-8 ;&lt;br /&gt;
* Les lignes ne doivent (dans la mesure du possible) pas dépassées 80 caractères ;&lt;br /&gt;
* Le nom des fonctions seront plutôt des verbes, les variables seront des noms (en anglais) ;&lt;br /&gt;
		Exemples : &lt;br /&gt;
**Procédure : draw_something ;&lt;br /&gt;
**Variable : a_variable ;&lt;br /&gt;
**Constante : A_CONSTANT.&lt;br /&gt;
*Chaque fonction doit être commenté selon deux règles :&lt;br /&gt;
**Une explication détaillée de l&#039;utilité de la fonction doit être placé au dessus du corps de la fonction ;&lt;br /&gt;
**Chaque ligne de code complexe doit être commentée .&lt;br /&gt;
*Chaque fonction ne doit (dans la mesure du possible) n&#039;implémenter qu&#039;une seule tâche.&lt;br /&gt;
&lt;br /&gt;
==TODO==&lt;br /&gt;
* Script to parse [http://air.imag.fr/mediawiki/images/a/a8/Coconode_cooja_output.txt COOJA log] in to [http://air.imag.fr/mediawiki/images/8/8a/Coconode_gnuplot_input.txt GNUplot format].&lt;br /&gt;
* Validation test&lt;br /&gt;
* Integrate Statistic module into Coconode (or add callback to launch Statistic module from Coconode)&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Pstat.png&amp;diff=10262</id>
		<title>File:Pstat.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Pstat.png&amp;diff=10262"/>
		<updated>2013-03-23T01:00:28Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Presentation_coconode.pdf&amp;diff=10097</id>
		<title>File:Presentation coconode.pdf</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Presentation_coconode.pdf&amp;diff=10097"/>
		<updated>2013-03-21T17:36:18Z</updated>

		<summary type="html">&lt;p&gt;Carameln: uploaded a new version of &amp;quot;File:Presentation coconode.pdf&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Soutenances_Projet_RICM_5_2012-2013&amp;diff=10021</id>
		<title>Soutenances Projet RICM 5 2012-2013</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Soutenances_Projet_RICM_5_2012-2013&amp;diff=10021"/>
		<updated>2013-03-21T10:13:48Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* Planning */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Planning==&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable alternance&amp;quot;&lt;br /&gt;
 |+ Planning Jeudi 21/03 P257 ([[Polytech Grenoble]])&lt;br /&gt;
 |-&lt;br /&gt;
 |&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Horaire&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Projet&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Encadrant(s)&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Etudiant(s)&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Documents&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
 | 13H00-13H45&lt;br /&gt;
 | [[RobAIR2013]]&lt;br /&gt;
 | [[User:Donsez|Didier Donsez]]&lt;br /&gt;
 | NICOLACCINI MICKAEL , ALEXANDRE ARTHUR, Salem HARRACHE , PAZ HERNANDEZ ELIZABETH&lt;br /&gt;
 | [http://air.imag.fr/mediawiki/index.php/RobAIR2013-RICM5-Suivi Fiche suivi RobAIR] - [[Media:Projet_RobAIR2013_diapo.pdf |Transparents]] - [[Media:Flyer-RobAIR.pdf|Flyer]] - [[Media:Poster-RobAIR.pdf|Poster]] [http://youtu.be/-3mbR5M8lzw Video] - [http://robair.quicker.fr/ Site web]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
 | 13H45-14H30&lt;br /&gt;
 | Armind&lt;br /&gt;
 | Renaud Blanch, Nicolas Glade, Nicolas Vuillerme, Didier Pradon (APHP Garches)&lt;br /&gt;
 | CHEVALLIER MARIE (PL), FALL YACINE, LU XIAO&lt;br /&gt;
 | [http://air.imag.fr/mediawiki/index.php/Armind Fiche de suivi Armind] &amp;amp; [[Media:presentationArmind.ppt|transparents]] &amp;amp; [[Media:flyersArmind.ppt|flyers]] &amp;amp; [[Media:posterArmind.jpg|poster]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
 | 14H30-14H45&lt;br /&gt;
 | Pause&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
 | 14H45-15H15&lt;br /&gt;
 | [[Fusion multi-capteurs pour table tactile]]&lt;br /&gt;
 | Renaud Blanch, Renaud Collin&lt;br /&gt;
 | RAOUX MAXENCE (PL), DAUVERGNE LEOPOLD&lt;br /&gt;
 | [http://air.imag.fr/mediawiki/index.php/Fusion_multi-capteurs_pour_table_tactile fiche suivi] &amp;amp; [http://air.imag.fr/mediawiki/images/b/be/Sonar_TablePresentation.pdf Transparents] &amp;amp; [http://air.imag.fr/mediawiki/images/0/07/FliyerSonarTable.pdf Flyer] &amp;amp; [http://air.imag.fr/mediawiki/images/thumb/2/2f/PosterSonarTable.jpg/600px-PosterSonarTable.jpg Poster] &amp;amp; [http://www.youtube.com/watch?v=8VKd9UdPNmc Video]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
 | 15H15-16H00&lt;br /&gt;
 | [[Projet Réseaux de Capteurs]]&lt;br /&gt;
 | Bernard Tourancheau&lt;br /&gt;
 | CARAMELLI NOE-JEAN (PL), LEVEQUE FLORIAN, HO MINH QUAN&lt;br /&gt;
 | [[fiche suivi ...]] &amp;amp; [[Media:Presentation_coconode.pdf | transparents]] &amp;amp; [[Media:Coconode_flyer.pdf | Flyer]] &amp;amp; [[Media:Coconode_poster.pdf | Poster]] &amp;amp; [[video ...]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
 | 16H00-16H30&lt;br /&gt;
 | [[OAR Cloud Computing 2013]]&lt;br /&gt;
 | Olivier Richard&lt;br /&gt;
 | MERCIER MICHAEL (PL)&lt;br /&gt;
 | [[Proj-2012-2013-OAR-Cloud | fiche suivi]] &amp;amp; [[transparents ...]] &amp;amp; [[flyer ...]] &amp;amp; [[poster ...]] &amp;amp; [[video ...]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable alternance&amp;quot;&lt;br /&gt;
 |+ Planning Vendredi 22/03 P249 ([[Polytech Grenoble]])&lt;br /&gt;
 |-&lt;br /&gt;
 |&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Horaire&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Projet&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Encadrant(s)&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Etudiant(s)&lt;br /&gt;
 !scope=&amp;quot;col&amp;quot;| Documents&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
 | 14H30-15H15&lt;br /&gt;
 | [[Projet 2013 : Interactive Digital Signage]]&lt;br /&gt;
 | [[User:Donsez|Didier Donsez]]&lt;br /&gt;
 | FOURURE FLORIAN, BISCH SIMON (PL), CLAVELIN AURELIEN&lt;br /&gt;
 | [[fiche suivi ...]] &amp;amp; [http://air.imag.fr/mediawiki/index.php/File:-BISCH-FOURURE-CLAVELIN--RICM5-IDS-Presentation.pdf transparents] &amp;amp; [[flyer ...]] &amp;amp; [[poster ...]] &amp;amp; [[video ...]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
 | 15H15-16H00&lt;br /&gt;
 | [http://www.cervin.org/wiki/index.php?title=Prototype_SmartPhone  Projet CERVIN de &amp;quot;Rehab Lab&amp;quot;]&lt;br /&gt;
 | Renaud Blanch, Francois Letellier de l&#039;association [http://www.aconit.org/ ACONIT], le [http://www.ccsti-grenoble.org/ CCSTI Grenoble]&lt;br /&gt;
 | OSWALD CAMILLE, WIRTH CLÉMENT, PRAK SORIYA, GNATTO-BAHIE CHRISTOPHER&lt;br /&gt;
 | [http://www.cervin.org/wiki/index.php?title=Prototype_SmartPhone  Wiki projet Cervin] &amp;amp; [[Media:cervinPres.ppt]] &amp;amp; [[flyer ...]] &amp;amp; [[poster ...]] &amp;amp; [[video ...]]&lt;br /&gt;
 |-&lt;br /&gt;
 !scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
 | 16H00-16H45&lt;br /&gt;
 | [[Développement d&#039;une appli mobile pour urgentistes en Afrique utilisant la synthèse vocale]]&lt;br /&gt;
 | Laurent Besacier, F. Camara et la [http://voxygen.fr/ société Voxygen]&lt;br /&gt;
 | ELOY FABIEN, NGOUALA ROLLY, VIGIER SYLVAIN, GU QIKAI, SEGALA JOACHIM&lt;br /&gt;
 | [[fiche suivi ...]] &amp;amp; [[transparents ...]] &amp;amp; [[flyer ...]] &amp;amp; [[poster ...]] &amp;amp; [[video ...]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
==Recommandations==&lt;br /&gt;
* Prévenez vos tuteurs de votre horaire de passage pour qu&#039;ils assistent à votre soutenance (ainsi que des éventuels changements).&lt;br /&gt;
* La durée des soutenances est STRICTEMENT 45 minutes (et 30 minutes pour Michael Mercier)&lt;br /&gt;
* Chaque soutenance comporte 20 minutes de présentation, 15 minutes de démonstration suivi de 10 minutes de questions/réponse&lt;br /&gt;
* La présentation doit aborder l&#039;ensemble des aspects du projet (contexte, technique, gestion, ...)&lt;br /&gt;
* Les transparents doivent être ajoutés à cette page avant le Jeudi matin&lt;br /&gt;
* Des &#039;&#039;flyers&#039;&#039; (3 volets d&#039;un A4) et un poster (A4 ou 2*A4 ou A3) devront être apportés puis laissés dans la salle AIR.&lt;br /&gt;
&lt;br /&gt;
==Conseils==&lt;br /&gt;
* Le chef de projet orchestre&lt;br /&gt;
* Répétez plusieurs fois et chronométrez vous !&lt;br /&gt;
* Répartissez vous la parole pendant la présentation et la démo&lt;br /&gt;
* Attention à l&#039; &#039;&#039;effet démo&#039;&#039; : prévoyez une vidéo de secours&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Presentation_coconode.pdf&amp;diff=10020</id>
		<title>File:Presentation coconode.pdf</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Presentation_coconode.pdf&amp;diff=10020"/>
		<updated>2013-03-21T10:12:50Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7380</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7380"/>
		<updated>2012-12-24T16:06:54Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* Démonstration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
First, this paper describes the background of supervision needs and introduce the two most famous monitoring software Nagios and Shinken.&lt;br /&gt;
&lt;br /&gt;
Then it focuses on Shinken, presents the architecture, the principles and the most important technical features.&lt;br /&gt;
&lt;br /&gt;
It concludes with a demonstration that the source code is provided.&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, monitoring system, IT infrastructure&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
D&#039;abord, cette présentation rappelle l&#039;origine des besoins en supervision, introduit les deux logiciels de supervision les plus connus Nagios et Shinken. &lt;br /&gt;
&lt;br /&gt;
Puis elle se concentre sur Shinken, en présente l&#039;architecture, le fonctionnement et les points techniques les plus important. &lt;br /&gt;
&lt;br /&gt;
Elle se conclut par une démonstration dont le code source est fournit. &lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, supervision, système d&#039;information&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Présentation de l&#039;information à l&#039;utilisateur : exemples ===&lt;br /&gt;
Exemple d&#039;une liste de caractéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts. &lt;br /&gt;
[[File:Openserviceproblems.png|800px|center|Liste de l&#039;état des composants du système. ]]&lt;br /&gt;
&lt;br /&gt;
Exemples de présentation de statistiques sur l&#039;état du système supervisé. On remarque que les interfaces basiques fournies avec Skinken ou Nagios sont concues pour donner des informations pertinentes à un administrateur ou à un technicien en informatique, mais qu&#039;il existe aussi des pages cnçues pour êtres facilement comprises et interprétables par des non-informaticiens &lt;br /&gt;
[[File:Availability2.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
[[File:Dashboard1.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Exemples de l&#039;interface WebUI ==&lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
La démonstration met en œuvre une carte arduino et un simple potentiomètre pour simuler une sonde de température. &lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
Code du plugin :&lt;br /&gt;
&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*	Noe-Jean Caramelli														  */&lt;br /&gt;
    /*		fonctions d&#039;acces au port com : base developpez.com, modifiees		  */&lt;br /&gt;
    /*	09-11-2012																  */&lt;br /&gt;
    /*	Plugin Shinken pour sonde de temperature Celsius sur port serie RS232	  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    #include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    //status Shinken&lt;br /&gt;
    #define OK			0&lt;br /&gt;
    #define WARNING		1&lt;br /&gt;
    #define CRITICAL	2&lt;br /&gt;
    #define UNKNOW		3&lt;br /&gt;
    &lt;br /&gt;
    #define WARNING_TEMP_LEVEL	333&lt;br /&gt;
    #define CRITICAL_TEMP_LEVEL	666&lt;br /&gt;
    &lt;br /&gt;
    #define COM_NO			3		//Numero du port COM utilise&lt;br /&gt;
    #define RX_SIZE         4096    //taille tampon entree&lt;br /&gt;
    #define TX_SIZE         4096    //taille tampon sortie&lt;br /&gt;
    #define MAX_WAIT_READ   2000    //temps max d&#039;attente pour la lecture (ms)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    HANDLE g_hCOM = NULL; //handle du port COM ouvert&lt;br /&gt;
    &lt;br /&gt;
    //delais d&#039;attente sur le port COM&lt;br /&gt;
    COMMTIMEOUTS g_cto = {&lt;br /&gt;
        MAX_WAIT_READ,  //ReadIntervalTimeOut&lt;br /&gt;
        0,              //ReadTotalTimeOutMultiplier&lt;br /&gt;
        MAX_WAIT_READ,  //ReadTotalTimeOutConstant&lt;br /&gt;
        0,              //WriteTotalTimeOutMultiplier&lt;br /&gt;
        0               //WriteTotalTimeOutConstant&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    //configuration du port COM&lt;br /&gt;
    DCB g_dcb = {&lt;br /&gt;
        sizeof(DCB),        //DCBlength&lt;br /&gt;
        9600,               //BaudRate&lt;br /&gt;
        TRUE,               //fBinary&lt;br /&gt;
        FALSE,              //fParity&lt;br /&gt;
        FALSE,              //fOutxCtsFlow&lt;br /&gt;
        FALSE,              //fOutxDsrFlow&lt;br /&gt;
        DTR_CONTROL_ENABLE, //fDtrControl&lt;br /&gt;
        FALSE,              //fDsrSensitivity&lt;br /&gt;
        FALSE,              //fTXContinueOnXoff&lt;br /&gt;
        FALSE,              //fOutX&lt;br /&gt;
        FALSE,              //fInX&lt;br /&gt;
        FALSE,              //fErrorChar&lt;br /&gt;
        FALSE,              //fNull&lt;br /&gt;
        RTS_CONTROL_ENABLE, //fRtsControl&lt;br /&gt;
        FALSE,              //fAbortOnError&lt;br /&gt;
        0,                  //fDummy2&lt;br /&gt;
        0,                  //wReserved&lt;br /&gt;
        0x100,              //XonLim&lt;br /&gt;
        0x100,              //XoffLim&lt;br /&gt;
        8,                  //ByteSize&lt;br /&gt;
        NOPARITY,           //Parity&lt;br /&gt;
        ONESTOPBIT,         //StopBits&lt;br /&gt;
        0x11,               //XonChar&lt;br /&gt;
        0x13,               //XoffChar&lt;br /&gt;
        &#039;?&#039;,                //ErrorChar&lt;br /&gt;
        0x1A,               //EofChar&lt;br /&gt;
        0x10                //EvtChar&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Prototypes fonctions RS232                                 */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM  (int com_no);&lt;br /&gt;
    BOOL CloseCOM ();&lt;br /&gt;
    BOOL ReadCOM  (void* buffer, int nBytesToRead, int* pBytesRead);&lt;br /&gt;
    BOOL WriteCOM (void* buffer, int nBytesToWrite, int* pBytesWritten);&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Code du plugin Shinken                                     */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
    	&lt;br /&gt;
    	char buffer[16];&lt;br /&gt;
    	int nb_bytes_read;&lt;br /&gt;
    	int temp;&lt;br /&gt;
    	&lt;br /&gt;
    	&lt;br /&gt;
    //ouvre le port serie COM_NO&lt;br /&gt;
        if(!OpenCOM(COM_NO)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de l&#039;ouverture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    &lt;br /&gt;
    //lit une tramme de l&#039;arduino&lt;br /&gt;
    	if(!ReadCOM(buffer, sizeof(buffer)-1, &amp;amp;nb_bytes_read)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de la lecture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    	buffer[nb_bytes_read] = &#039;\0&#039;;&lt;br /&gt;
    	&lt;br /&gt;
    //ferme le port COM_NO&lt;br /&gt;
    	CloseCOM();&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;%d octet(s) recu(s) :\n%s\n&amp;quot;, nb_bytes_read, buffer);&lt;br /&gt;
    	temp=atoi(buffer);&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;temp=%d\n&amp;quot;, temp);&lt;br /&gt;
    	//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    	&lt;br /&gt;
    	if(temp &amp;lt; -274) {&lt;br /&gt;
    		printf(&amp;quot;Valeur de temperature en dessous du 0 absolu ! Verifier capteur... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; WARNING_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Temperature correcte. | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(OK);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; CRITICAL_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Chauffe anormale... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(WARNING);&lt;br /&gt;
    	}&lt;br /&gt;
    	else {&lt;br /&gt;
    		printf(&amp;quot;Ca crame !!!! | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(CRITICAL);&lt;br /&gt;
    	}&lt;br /&gt;
    	&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  OpenCOM : ouverture et configuration du port COM.						  */&lt;br /&gt;
    /*  entree : com_no : Id du port COM a ouvrir.								  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM(int com_no) {&lt;br /&gt;
        //variables locales&lt;br /&gt;
        char szCOM[16];&lt;br /&gt;
    &lt;br /&gt;
        //construction du nom du port, tentative d&#039;ouverture&lt;br /&gt;
        sprintf(szCOM, &amp;quot;COM%d&amp;quot;, com_no);&lt;br /&gt;
        g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,&lt;br /&gt;
                            OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);&lt;br /&gt;
        if(g_hCOM == INVALID_HANDLE_VALUE)&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de l&#039;ouverture du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //affectation taille des tampons d&#039;emission et de reception&lt;br /&gt;
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);&lt;br /&gt;
    &lt;br /&gt;
        //configuration du port COM&lt;br /&gt;
        if(!SetCommTimeouts(g_hCOM, &amp;amp;g_cto) || !SetCommState(g_hCOM, &amp;amp;g_dcb))&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de la configuration du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            CloseHandle(g_hCOM);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //on vide les tampons d&#039;emission et de reception, mise a 1 DTR&lt;br /&gt;
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);&lt;br /&gt;
        EscapeCommFunction(g_hCOM, SETDTR);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  CloseCOM : fermeture du port COM.										  */&lt;br /&gt;
    /*  retour : vrai si reussi.							.					  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL CloseCOM() {&lt;br /&gt;
        //fermeture du port COM&lt;br /&gt;
        CloseHandle(g_hCOM);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  ReadCOM : lecture de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer       : buffer des donnees lues.						  */&lt;br /&gt;
    /*           nBytesToRead : nombre max d&#039;octets a lire.						  */&lt;br /&gt;
    /*           pBytesRead   : variable affectee le nombre d&#039;octets lus.		  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /*----------------------------------------------------------------------------*/&lt;br /&gt;
    /*  Remarques : -la constante MAX_WAIT_READ utilisee dans la structure		  */&lt;br /&gt;
    /*               COMMTIMEOUTS permet de limiter le temps d&#039;attente si aucun   */&lt;br /&gt;
    /*               caracteres n&#039;est present dans le tampon d&#039;entree.			  */&lt;br /&gt;
    /*              -la fonction peut donc retourner vrai sans avoir lu de donnees*/&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead) {&lt;br /&gt;
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  WriteCOM : envoi de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer        : buffer avec les donnees a envoyer.				  */&lt;br /&gt;
    /*           nBytesToWrite : nombre d&#039;octets a envoyer.						  */&lt;br /&gt;
    /*           pBytesWritten : variable qui va recevoir le nombre d&#039;octets	  */&lt;br /&gt;
    /*                           envoyes.										  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten) {&lt;br /&gt;
        //ecriture sur le port&lt;br /&gt;
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7378</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7378"/>
		<updated>2012-12-24T16:06:05Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
First, this paper describes the background of supervision needs and introduce the two most famous monitoring software Nagios and Shinken.&lt;br /&gt;
&lt;br /&gt;
Then it focuses on Shinken, presents the architecture, the principles and the most important technical features.&lt;br /&gt;
&lt;br /&gt;
It concludes with a demonstration that the source code is provided.&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, monitoring system, IT infrastructure&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
D&#039;abord, cette présentation rappelle l&#039;origine des besoins en supervision, introduit les deux logiciels de supervision les plus connus Nagios et Shinken. &lt;br /&gt;
&lt;br /&gt;
Puis elle se concentre sur Shinken, en présente l&#039;architecture, le fonctionnement et les points techniques les plus important. &lt;br /&gt;
&lt;br /&gt;
Elle se conclut par une démonstration dont le code source est fournit. &lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, supervision, système d&#039;information&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Présentation de l&#039;information à l&#039;utilisateur : exemples ===&lt;br /&gt;
Exemple d&#039;une liste de caractéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts. &lt;br /&gt;
[[File:Openserviceproblems.png|800px|center|Liste de l&#039;état des composants du système. ]]&lt;br /&gt;
&lt;br /&gt;
Exemples de présentation de statistiques sur l&#039;état du système supervisé. On remarque que les interfaces basiques fournies avec Skinken ou Nagios sont concues pour donner des informations pertinentes à un administrateur ou à un technicien en informatique, mais qu&#039;il existe aussi des pages cnçues pour êtres facilement comprises et interprétables par des non-informaticiens &lt;br /&gt;
[[File:Availability2.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
[[File:Dashboard1.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Exemples de l&#039;interface WebUI ==&lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
Code du plugin :&lt;br /&gt;
&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*	Noe-Jean Caramelli														  */&lt;br /&gt;
    /*		fonctions d&#039;acces au port com : base developpez.com, modifiees		  */&lt;br /&gt;
    /*	09-11-2012																  */&lt;br /&gt;
    /*	Plugin Shinken pour sonde de temperature Celsius sur port serie RS232	  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    #include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    //status Shinken&lt;br /&gt;
    #define OK			0&lt;br /&gt;
    #define WARNING		1&lt;br /&gt;
    #define CRITICAL	2&lt;br /&gt;
    #define UNKNOW		3&lt;br /&gt;
    &lt;br /&gt;
    #define WARNING_TEMP_LEVEL	333&lt;br /&gt;
    #define CRITICAL_TEMP_LEVEL	666&lt;br /&gt;
    &lt;br /&gt;
    #define COM_NO			3		//Numero du port COM utilise&lt;br /&gt;
    #define RX_SIZE         4096    //taille tampon entree&lt;br /&gt;
    #define TX_SIZE         4096    //taille tampon sortie&lt;br /&gt;
    #define MAX_WAIT_READ   2000    //temps max d&#039;attente pour la lecture (ms)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    HANDLE g_hCOM = NULL; //handle du port COM ouvert&lt;br /&gt;
    &lt;br /&gt;
    //delais d&#039;attente sur le port COM&lt;br /&gt;
    COMMTIMEOUTS g_cto = {&lt;br /&gt;
        MAX_WAIT_READ,  //ReadIntervalTimeOut&lt;br /&gt;
        0,              //ReadTotalTimeOutMultiplier&lt;br /&gt;
        MAX_WAIT_READ,  //ReadTotalTimeOutConstant&lt;br /&gt;
        0,              //WriteTotalTimeOutMultiplier&lt;br /&gt;
        0               //WriteTotalTimeOutConstant&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    //configuration du port COM&lt;br /&gt;
    DCB g_dcb = {&lt;br /&gt;
        sizeof(DCB),        //DCBlength&lt;br /&gt;
        9600,               //BaudRate&lt;br /&gt;
        TRUE,               //fBinary&lt;br /&gt;
        FALSE,              //fParity&lt;br /&gt;
        FALSE,              //fOutxCtsFlow&lt;br /&gt;
        FALSE,              //fOutxDsrFlow&lt;br /&gt;
        DTR_CONTROL_ENABLE, //fDtrControl&lt;br /&gt;
        FALSE,              //fDsrSensitivity&lt;br /&gt;
        FALSE,              //fTXContinueOnXoff&lt;br /&gt;
        FALSE,              //fOutX&lt;br /&gt;
        FALSE,              //fInX&lt;br /&gt;
        FALSE,              //fErrorChar&lt;br /&gt;
        FALSE,              //fNull&lt;br /&gt;
        RTS_CONTROL_ENABLE, //fRtsControl&lt;br /&gt;
        FALSE,              //fAbortOnError&lt;br /&gt;
        0,                  //fDummy2&lt;br /&gt;
        0,                  //wReserved&lt;br /&gt;
        0x100,              //XonLim&lt;br /&gt;
        0x100,              //XoffLim&lt;br /&gt;
        8,                  //ByteSize&lt;br /&gt;
        NOPARITY,           //Parity&lt;br /&gt;
        ONESTOPBIT,         //StopBits&lt;br /&gt;
        0x11,               //XonChar&lt;br /&gt;
        0x13,               //XoffChar&lt;br /&gt;
        &#039;?&#039;,                //ErrorChar&lt;br /&gt;
        0x1A,               //EofChar&lt;br /&gt;
        0x10                //EvtChar&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Prototypes fonctions RS232                                 */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM  (int com_no);&lt;br /&gt;
    BOOL CloseCOM ();&lt;br /&gt;
    BOOL ReadCOM  (void* buffer, int nBytesToRead, int* pBytesRead);&lt;br /&gt;
    BOOL WriteCOM (void* buffer, int nBytesToWrite, int* pBytesWritten);&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Code du plugin Shinken                                     */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
    	&lt;br /&gt;
    	char buffer[16];&lt;br /&gt;
    	int nb_bytes_read;&lt;br /&gt;
    	int temp;&lt;br /&gt;
    	&lt;br /&gt;
    	&lt;br /&gt;
    //ouvre le port serie COM_NO&lt;br /&gt;
        if(!OpenCOM(COM_NO)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de l&#039;ouverture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    &lt;br /&gt;
    //lit une tramme de l&#039;arduino&lt;br /&gt;
    	if(!ReadCOM(buffer, sizeof(buffer)-1, &amp;amp;nb_bytes_read)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de la lecture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    	buffer[nb_bytes_read] = &#039;\0&#039;;&lt;br /&gt;
    	&lt;br /&gt;
    //ferme le port COM_NO&lt;br /&gt;
    	CloseCOM();&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;%d octet(s) recu(s) :\n%s\n&amp;quot;, nb_bytes_read, buffer);&lt;br /&gt;
    	temp=atoi(buffer);&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;temp=%d\n&amp;quot;, temp);&lt;br /&gt;
    	//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    	&lt;br /&gt;
    	if(temp &amp;lt; -274) {&lt;br /&gt;
    		printf(&amp;quot;Valeur de temperature en dessous du 0 absolu ! Verifier capteur... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; WARNING_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Temperature correcte. | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(OK);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; CRITICAL_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Chauffe anormale... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(WARNING);&lt;br /&gt;
    	}&lt;br /&gt;
    	else {&lt;br /&gt;
    		printf(&amp;quot;Ca crame !!!! | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(CRITICAL);&lt;br /&gt;
    	}&lt;br /&gt;
    	&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  OpenCOM : ouverture et configuration du port COM.						  */&lt;br /&gt;
    /*  entree : com_no : Id du port COM a ouvrir.								  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM(int com_no) {&lt;br /&gt;
        //variables locales&lt;br /&gt;
        char szCOM[16];&lt;br /&gt;
    &lt;br /&gt;
        //construction du nom du port, tentative d&#039;ouverture&lt;br /&gt;
        sprintf(szCOM, &amp;quot;COM%d&amp;quot;, com_no);&lt;br /&gt;
        g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,&lt;br /&gt;
                            OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);&lt;br /&gt;
        if(g_hCOM == INVALID_HANDLE_VALUE)&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de l&#039;ouverture du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //affectation taille des tampons d&#039;emission et de reception&lt;br /&gt;
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);&lt;br /&gt;
    &lt;br /&gt;
        //configuration du port COM&lt;br /&gt;
        if(!SetCommTimeouts(g_hCOM, &amp;amp;g_cto) || !SetCommState(g_hCOM, &amp;amp;g_dcb))&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de la configuration du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            CloseHandle(g_hCOM);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //on vide les tampons d&#039;emission et de reception, mise a 1 DTR&lt;br /&gt;
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);&lt;br /&gt;
        EscapeCommFunction(g_hCOM, SETDTR);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  CloseCOM : fermeture du port COM.										  */&lt;br /&gt;
    /*  retour : vrai si reussi.							.					  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL CloseCOM() {&lt;br /&gt;
        //fermeture du port COM&lt;br /&gt;
        CloseHandle(g_hCOM);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  ReadCOM : lecture de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer       : buffer des donnees lues.						  */&lt;br /&gt;
    /*           nBytesToRead : nombre max d&#039;octets a lire.						  */&lt;br /&gt;
    /*           pBytesRead   : variable affectee le nombre d&#039;octets lus.		  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /*----------------------------------------------------------------------------*/&lt;br /&gt;
    /*  Remarques : -la constante MAX_WAIT_READ utilisee dans la structure		  */&lt;br /&gt;
    /*               COMMTIMEOUTS permet de limiter le temps d&#039;attente si aucun   */&lt;br /&gt;
    /*               caracteres n&#039;est present dans le tampon d&#039;entree.			  */&lt;br /&gt;
    /*              -la fonction peut donc retourner vrai sans avoir lu de donnees*/&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead) {&lt;br /&gt;
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  WriteCOM : envoi de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer        : buffer avec les donnees a envoyer.				  */&lt;br /&gt;
    /*           nBytesToWrite : nombre d&#039;octets a envoyer.						  */&lt;br /&gt;
    /*           pBytesWritten : variable qui va recevoir le nombre d&#039;octets	  */&lt;br /&gt;
    /*                           envoyes.										  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten) {&lt;br /&gt;
        //ecriture sur le port&lt;br /&gt;
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7377</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7377"/>
		<updated>2012-12-24T16:05:23Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
First, this paper describes the background of supervision needs and introduce the two most famous monitoring software Nagios and Shinken.&lt;br /&gt;
&lt;br /&gt;
Then it focuses on Shinken, presents the architecture, the principles and the most important technical features.&lt;br /&gt;
&lt;br /&gt;
It concludes with a demonstration that the source code is provided.&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, monitoring system, IT infrastructure&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
D&#039;abord, cette présentation rappelle l&#039;origine des besoins en supervision, introduit les deux logiciels de supervision les plus connus Nagios et Shinken. &lt;br /&gt;
&lt;br /&gt;
Puis elle se concentre sur Shinken, en présente l&#039;architecture, le fonctionnement et les points techniques les plus important. &lt;br /&gt;
&lt;br /&gt;
Elle se conclut par une démonstration dont le code source est fournit. &lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, supervision, système d&#039;information&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Présentation de l&#039;information à l&#039;utilisateur : exemples ===&lt;br /&gt;
Exemple d&#039;une liste de caractéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts. &lt;br /&gt;
[[File:Openserviceproblems.png|800px|center|Liste de l&#039;état des composants du système. ]]&lt;br /&gt;
&lt;br /&gt;
Exemples de présentation de statistiques sur l&#039;état du système supervisé. On remarque que les interfaces basiques fournies avec Skinken ou Nagios sont concues pour donner des informations pertinentes à un administrateur ou à un technicien en informatique, mais qu&#039;il existe aussi des pages cnçues pour êtres facilement comprises et interprétables par des non-informaticiens &lt;br /&gt;
[[File:Availability2.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
[[File:Dashboard1.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Exemples de l&#039;interface WebUI ==&lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code du plugin :&lt;br /&gt;
&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*	Noe-Jean Caramelli														  */&lt;br /&gt;
    /*		fonctions d&#039;acces au port com : base developpez.com, modifiees		  */&lt;br /&gt;
    /*	09-11-2012																  */&lt;br /&gt;
    /*	Plugin Shinken pour sonde de temperature Celsius sur port serie RS232	  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    #include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    //status Shinken&lt;br /&gt;
    #define OK			0&lt;br /&gt;
    #define WARNING		1&lt;br /&gt;
    #define CRITICAL	2&lt;br /&gt;
    #define UNKNOW		3&lt;br /&gt;
    &lt;br /&gt;
    #define WARNING_TEMP_LEVEL	333&lt;br /&gt;
    #define CRITICAL_TEMP_LEVEL	666&lt;br /&gt;
    &lt;br /&gt;
    #define COM_NO			3		//Numero du port COM utilise&lt;br /&gt;
    #define RX_SIZE         4096    //taille tampon entree&lt;br /&gt;
    #define TX_SIZE         4096    //taille tampon sortie&lt;br /&gt;
    #define MAX_WAIT_READ   2000    //temps max d&#039;attente pour la lecture (ms)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    HANDLE g_hCOM = NULL; //handle du port COM ouvert&lt;br /&gt;
    &lt;br /&gt;
    //delais d&#039;attente sur le port COM&lt;br /&gt;
    COMMTIMEOUTS g_cto = {&lt;br /&gt;
        MAX_WAIT_READ,  //ReadIntervalTimeOut&lt;br /&gt;
        0,              //ReadTotalTimeOutMultiplier&lt;br /&gt;
        MAX_WAIT_READ,  //ReadTotalTimeOutConstant&lt;br /&gt;
        0,              //WriteTotalTimeOutMultiplier&lt;br /&gt;
        0               //WriteTotalTimeOutConstant&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    //configuration du port COM&lt;br /&gt;
    DCB g_dcb = {&lt;br /&gt;
        sizeof(DCB),        //DCBlength&lt;br /&gt;
        9600,               //BaudRate&lt;br /&gt;
        TRUE,               //fBinary&lt;br /&gt;
        FALSE,              //fParity&lt;br /&gt;
        FALSE,              //fOutxCtsFlow&lt;br /&gt;
        FALSE,              //fOutxDsrFlow&lt;br /&gt;
        DTR_CONTROL_ENABLE, //fDtrControl&lt;br /&gt;
        FALSE,              //fDsrSensitivity&lt;br /&gt;
        FALSE,              //fTXContinueOnXoff&lt;br /&gt;
        FALSE,              //fOutX&lt;br /&gt;
        FALSE,              //fInX&lt;br /&gt;
        FALSE,              //fErrorChar&lt;br /&gt;
        FALSE,              //fNull&lt;br /&gt;
        RTS_CONTROL_ENABLE, //fRtsControl&lt;br /&gt;
        FALSE,              //fAbortOnError&lt;br /&gt;
        0,                  //fDummy2&lt;br /&gt;
        0,                  //wReserved&lt;br /&gt;
        0x100,              //XonLim&lt;br /&gt;
        0x100,              //XoffLim&lt;br /&gt;
        8,                  //ByteSize&lt;br /&gt;
        NOPARITY,           //Parity&lt;br /&gt;
        ONESTOPBIT,         //StopBits&lt;br /&gt;
        0x11,               //XonChar&lt;br /&gt;
        0x13,               //XoffChar&lt;br /&gt;
        &#039;?&#039;,                //ErrorChar&lt;br /&gt;
        0x1A,               //EofChar&lt;br /&gt;
        0x10                //EvtChar&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Prototypes fonctions RS232                                 */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM  (int com_no);&lt;br /&gt;
    BOOL CloseCOM ();&lt;br /&gt;
    BOOL ReadCOM  (void* buffer, int nBytesToRead, int* pBytesRead);&lt;br /&gt;
    BOOL WriteCOM (void* buffer, int nBytesToWrite, int* pBytesWritten);&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Code du plugin Shinken                                     */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
    	&lt;br /&gt;
    	char buffer[16];&lt;br /&gt;
    	int nb_bytes_read;&lt;br /&gt;
    	int temp;&lt;br /&gt;
    	&lt;br /&gt;
    	&lt;br /&gt;
    //ouvre le port serie COM_NO&lt;br /&gt;
        if(!OpenCOM(COM_NO)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de l&#039;ouverture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    &lt;br /&gt;
    //lit une tramme de l&#039;arduino&lt;br /&gt;
    	if(!ReadCOM(buffer, sizeof(buffer)-1, &amp;amp;nb_bytes_read)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de la lecture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    	buffer[nb_bytes_read] = &#039;\0&#039;;&lt;br /&gt;
    	&lt;br /&gt;
    //ferme le port COM_NO&lt;br /&gt;
    	CloseCOM();&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;%d octet(s) recu(s) :\n%s\n&amp;quot;, nb_bytes_read, buffer);&lt;br /&gt;
    	temp=atoi(buffer);&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;temp=%d\n&amp;quot;, temp);&lt;br /&gt;
    	//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    	&lt;br /&gt;
    	if(temp &amp;lt; -274) {&lt;br /&gt;
    		printf(&amp;quot;Valeur de temperature en dessous du 0 absolu ! Verifier capteur... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; WARNING_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Temperature correcte. | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(OK);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; CRITICAL_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Chauffe anormale... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(WARNING);&lt;br /&gt;
    	}&lt;br /&gt;
    	else {&lt;br /&gt;
    		printf(&amp;quot;Ca crame !!!! | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(CRITICAL);&lt;br /&gt;
    	}&lt;br /&gt;
    	&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  OpenCOM : ouverture et configuration du port COM.						  */&lt;br /&gt;
    /*  entree : com_no : Id du port COM a ouvrir.								  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM(int com_no) {&lt;br /&gt;
        //variables locales&lt;br /&gt;
        char szCOM[16];&lt;br /&gt;
    &lt;br /&gt;
        //construction du nom du port, tentative d&#039;ouverture&lt;br /&gt;
        sprintf(szCOM, &amp;quot;COM%d&amp;quot;, com_no);&lt;br /&gt;
        g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,&lt;br /&gt;
                            OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);&lt;br /&gt;
        if(g_hCOM == INVALID_HANDLE_VALUE)&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de l&#039;ouverture du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //affectation taille des tampons d&#039;emission et de reception&lt;br /&gt;
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);&lt;br /&gt;
    &lt;br /&gt;
        //configuration du port COM&lt;br /&gt;
        if(!SetCommTimeouts(g_hCOM, &amp;amp;g_cto) || !SetCommState(g_hCOM, &amp;amp;g_dcb))&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de la configuration du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            CloseHandle(g_hCOM);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //on vide les tampons d&#039;emission et de reception, mise a 1 DTR&lt;br /&gt;
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);&lt;br /&gt;
        EscapeCommFunction(g_hCOM, SETDTR);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  CloseCOM : fermeture du port COM.										  */&lt;br /&gt;
    /*  retour : vrai si reussi.							.					  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL CloseCOM() {&lt;br /&gt;
        //fermeture du port COM&lt;br /&gt;
        CloseHandle(g_hCOM);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  ReadCOM : lecture de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer       : buffer des donnees lues.						  */&lt;br /&gt;
    /*           nBytesToRead : nombre max d&#039;octets a lire.						  */&lt;br /&gt;
    /*           pBytesRead   : variable affectee le nombre d&#039;octets lus.		  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /*----------------------------------------------------------------------------*/&lt;br /&gt;
    /*  Remarques : -la constante MAX_WAIT_READ utilisee dans la structure		  */&lt;br /&gt;
    /*               COMMTIMEOUTS permet de limiter le temps d&#039;attente si aucun   */&lt;br /&gt;
    /*               caracteres n&#039;est present dans le tampon d&#039;entree.			  */&lt;br /&gt;
    /*              -la fonction peut donc retourner vrai sans avoir lu de donnees*/&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead) {&lt;br /&gt;
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  WriteCOM : envoi de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer        : buffer avec les donnees a envoyer.				  */&lt;br /&gt;
    /*           nBytesToWrite : nombre d&#039;octets a envoyer.						  */&lt;br /&gt;
    /*           pBytesWritten : variable qui va recevoir le nombre d&#039;octets	  */&lt;br /&gt;
    /*                           envoyes.										  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten) {&lt;br /&gt;
        //ecriture sur le port&lt;br /&gt;
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7376</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7376"/>
		<updated>2012-12-24T16:03:34Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
First, this paper describes the background of supervision needs and introduce the two most famous monitoring software Nagios and Shinken.&lt;br /&gt;
&lt;br /&gt;
Then it focuses on Shinken, presents the architecture, the principles and the most important technical features.&lt;br /&gt;
&lt;br /&gt;
It concludes with a demonstration that the source code is provided.&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, monitoring system, IT infrastructure&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
D&#039;abord, cette présentation rappelle l&#039;origine des besoins en supervision, introduit les deux logiciels de supervision les plus connus Nagios et Shinken. &lt;br /&gt;
&lt;br /&gt;
Puis elle se concentre sur Shinken, en présente l&#039;architecture, le fonctionnement et les points techniques les plus important. &lt;br /&gt;
&lt;br /&gt;
Elle se conclut par une démonstration dont le code source est fournit. &lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, supervision, système d&#039;information&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
[[File:Availability2.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
[[File:Dashboard1.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Présentation de l&#039;information à l&#039;utilisateur : exemples ===&lt;br /&gt;
Exemple d&#039;une liste de caractéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts. &lt;br /&gt;
[[File:Openserviceproblems.png|800px|center|Liste de l&#039;état des composants du système. ]]&lt;br /&gt;
&lt;br /&gt;
Exemples de présentation de statistiques sur l&#039;état du système supervisé. On remarque que les interfaces basiques fournies avec Skinken ou Nagios sont concues pour donner des informations pertinentes à un administrateur ou à un technicien en informatique, mais qu&#039;il existe aussi des pages cnçues pour êtres facilement comprises et interprétables par des non-informaticiens &lt;br /&gt;
[img]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Exemples de l&#039;interface WebUI ==&lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code du plugin :&lt;br /&gt;
&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*	Noe-Jean Caramelli														  */&lt;br /&gt;
    /*		fonctions d&#039;acces au port com : base developpez.com, modifiees		  */&lt;br /&gt;
    /*	09-11-2012																  */&lt;br /&gt;
    /*	Plugin Shinken pour sonde de temperature Celsius sur port serie RS232	  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    #include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    //status Shinken&lt;br /&gt;
    #define OK			0&lt;br /&gt;
    #define WARNING		1&lt;br /&gt;
    #define CRITICAL	2&lt;br /&gt;
    #define UNKNOW		3&lt;br /&gt;
    &lt;br /&gt;
    #define WARNING_TEMP_LEVEL	333&lt;br /&gt;
    #define CRITICAL_TEMP_LEVEL	666&lt;br /&gt;
    &lt;br /&gt;
    #define COM_NO			3		//Numero du port COM utilise&lt;br /&gt;
    #define RX_SIZE         4096    //taille tampon entree&lt;br /&gt;
    #define TX_SIZE         4096    //taille tampon sortie&lt;br /&gt;
    #define MAX_WAIT_READ   2000    //temps max d&#039;attente pour la lecture (ms)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    HANDLE g_hCOM = NULL; //handle du port COM ouvert&lt;br /&gt;
    &lt;br /&gt;
    //delais d&#039;attente sur le port COM&lt;br /&gt;
    COMMTIMEOUTS g_cto = {&lt;br /&gt;
        MAX_WAIT_READ,  //ReadIntervalTimeOut&lt;br /&gt;
        0,              //ReadTotalTimeOutMultiplier&lt;br /&gt;
        MAX_WAIT_READ,  //ReadTotalTimeOutConstant&lt;br /&gt;
        0,              //WriteTotalTimeOutMultiplier&lt;br /&gt;
        0               //WriteTotalTimeOutConstant&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    //configuration du port COM&lt;br /&gt;
    DCB g_dcb = {&lt;br /&gt;
        sizeof(DCB),        //DCBlength&lt;br /&gt;
        9600,               //BaudRate&lt;br /&gt;
        TRUE,               //fBinary&lt;br /&gt;
        FALSE,              //fParity&lt;br /&gt;
        FALSE,              //fOutxCtsFlow&lt;br /&gt;
        FALSE,              //fOutxDsrFlow&lt;br /&gt;
        DTR_CONTROL_ENABLE, //fDtrControl&lt;br /&gt;
        FALSE,              //fDsrSensitivity&lt;br /&gt;
        FALSE,              //fTXContinueOnXoff&lt;br /&gt;
        FALSE,              //fOutX&lt;br /&gt;
        FALSE,              //fInX&lt;br /&gt;
        FALSE,              //fErrorChar&lt;br /&gt;
        FALSE,              //fNull&lt;br /&gt;
        RTS_CONTROL_ENABLE, //fRtsControl&lt;br /&gt;
        FALSE,              //fAbortOnError&lt;br /&gt;
        0,                  //fDummy2&lt;br /&gt;
        0,                  //wReserved&lt;br /&gt;
        0x100,              //XonLim&lt;br /&gt;
        0x100,              //XoffLim&lt;br /&gt;
        8,                  //ByteSize&lt;br /&gt;
        NOPARITY,           //Parity&lt;br /&gt;
        ONESTOPBIT,         //StopBits&lt;br /&gt;
        0x11,               //XonChar&lt;br /&gt;
        0x13,               //XoffChar&lt;br /&gt;
        &#039;?&#039;,                //ErrorChar&lt;br /&gt;
        0x1A,               //EofChar&lt;br /&gt;
        0x10                //EvtChar&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Prototypes fonctions RS232                                 */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM  (int com_no);&lt;br /&gt;
    BOOL CloseCOM ();&lt;br /&gt;
    BOOL ReadCOM  (void* buffer, int nBytesToRead, int* pBytesRead);&lt;br /&gt;
    BOOL WriteCOM (void* buffer, int nBytesToWrite, int* pBytesWritten);&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Code du plugin Shinken                                     */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
    	&lt;br /&gt;
    	char buffer[16];&lt;br /&gt;
    	int nb_bytes_read;&lt;br /&gt;
    	int temp;&lt;br /&gt;
    	&lt;br /&gt;
    	&lt;br /&gt;
    //ouvre le port serie COM_NO&lt;br /&gt;
        if(!OpenCOM(COM_NO)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de l&#039;ouverture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    &lt;br /&gt;
    //lit une tramme de l&#039;arduino&lt;br /&gt;
    	if(!ReadCOM(buffer, sizeof(buffer)-1, &amp;amp;nb_bytes_read)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de la lecture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    	buffer[nb_bytes_read] = &#039;\0&#039;;&lt;br /&gt;
    	&lt;br /&gt;
    //ferme le port COM_NO&lt;br /&gt;
    	CloseCOM();&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;%d octet(s) recu(s) :\n%s\n&amp;quot;, nb_bytes_read, buffer);&lt;br /&gt;
    	temp=atoi(buffer);&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;temp=%d\n&amp;quot;, temp);&lt;br /&gt;
    	//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    	&lt;br /&gt;
    	if(temp &amp;lt; -274) {&lt;br /&gt;
    		printf(&amp;quot;Valeur de temperature en dessous du 0 absolu ! Verifier capteur... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; WARNING_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Temperature correcte. | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(OK);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; CRITICAL_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Chauffe anormale... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(WARNING);&lt;br /&gt;
    	}&lt;br /&gt;
    	else {&lt;br /&gt;
    		printf(&amp;quot;Ca crame !!!! | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(CRITICAL);&lt;br /&gt;
    	}&lt;br /&gt;
    	&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  OpenCOM : ouverture et configuration du port COM.						  */&lt;br /&gt;
    /*  entree : com_no : Id du port COM a ouvrir.								  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM(int com_no) {&lt;br /&gt;
        //variables locales&lt;br /&gt;
        char szCOM[16];&lt;br /&gt;
    &lt;br /&gt;
        //construction du nom du port, tentative d&#039;ouverture&lt;br /&gt;
        sprintf(szCOM, &amp;quot;COM%d&amp;quot;, com_no);&lt;br /&gt;
        g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,&lt;br /&gt;
                            OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);&lt;br /&gt;
        if(g_hCOM == INVALID_HANDLE_VALUE)&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de l&#039;ouverture du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //affectation taille des tampons d&#039;emission et de reception&lt;br /&gt;
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);&lt;br /&gt;
    &lt;br /&gt;
        //configuration du port COM&lt;br /&gt;
        if(!SetCommTimeouts(g_hCOM, &amp;amp;g_cto) || !SetCommState(g_hCOM, &amp;amp;g_dcb))&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de la configuration du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            CloseHandle(g_hCOM);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //on vide les tampons d&#039;emission et de reception, mise a 1 DTR&lt;br /&gt;
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);&lt;br /&gt;
        EscapeCommFunction(g_hCOM, SETDTR);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  CloseCOM : fermeture du port COM.										  */&lt;br /&gt;
    /*  retour : vrai si reussi.							.					  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL CloseCOM() {&lt;br /&gt;
        //fermeture du port COM&lt;br /&gt;
        CloseHandle(g_hCOM);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  ReadCOM : lecture de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer       : buffer des donnees lues.						  */&lt;br /&gt;
    /*           nBytesToRead : nombre max d&#039;octets a lire.						  */&lt;br /&gt;
    /*           pBytesRead   : variable affectee le nombre d&#039;octets lus.		  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /*----------------------------------------------------------------------------*/&lt;br /&gt;
    /*  Remarques : -la constante MAX_WAIT_READ utilisee dans la structure		  */&lt;br /&gt;
    /*               COMMTIMEOUTS permet de limiter le temps d&#039;attente si aucun   */&lt;br /&gt;
    /*               caracteres n&#039;est present dans le tampon d&#039;entree.			  */&lt;br /&gt;
    /*              -la fonction peut donc retourner vrai sans avoir lu de donnees*/&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead) {&lt;br /&gt;
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  WriteCOM : envoi de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer        : buffer avec les donnees a envoyer.				  */&lt;br /&gt;
    /*           nBytesToWrite : nombre d&#039;octets a envoyer.						  */&lt;br /&gt;
    /*           pBytesWritten : variable qui va recevoir le nombre d&#039;octets	  */&lt;br /&gt;
    /*                           envoyes.										  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten) {&lt;br /&gt;
        //ecriture sur le port&lt;br /&gt;
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Dashboard1.png&amp;diff=7375</id>
		<title>File:Dashboard1.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Dashboard1.png&amp;diff=7375"/>
		<updated>2012-12-24T16:03:08Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Exemple de présentation de statistiques sur l&amp;#039;état du système supervisé avec Nagios.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de présentation de statistiques sur l&#039;état du système supervisé avec Nagios.&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Availability2.png&amp;diff=7374</id>
		<title>File:Availability2.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Availability2.png&amp;diff=7374"/>
		<updated>2012-12-24T16:01:14Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Exemple de présentation de statistiques sur l&amp;#039;état du système supervisé.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de présentation de statistiques sur l&#039;état du système supervisé.&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7373</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7373"/>
		<updated>2012-12-24T15:59:57Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
First, this paper describes the background of supervision needs and introduce the two most famous monitoring software Nagios and Shinken.&lt;br /&gt;
&lt;br /&gt;
Then it focuses on Shinken, presents the architecture, the principles and the most important technical features.&lt;br /&gt;
&lt;br /&gt;
It concludes with a demonstration that the source code is provided.&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, monitoring system, IT infrastructure&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
D&#039;abord, cette présentation rappelle l&#039;origine des besoins en supervision, introduit les deux logiciels de supervision les plus connus Nagios et Shinken. &lt;br /&gt;
&lt;br /&gt;
Puis elle se concentre sur Shinken, en présente l&#039;architecture, le fonctionnement et les points techniques les plus important. &lt;br /&gt;
&lt;br /&gt;
Elle se conclut par une démonstration dont le code source est fournit. &lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, supervision, système d&#039;information&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Présentation de l&#039;information à l&#039;utilisateur : exemples ===&lt;br /&gt;
Exemple d&#039;une liste de caractéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts. &lt;br /&gt;
[[File:Openserviceproblems.png|800px|center|Liste de l&#039;état des composants du système. ]]&lt;br /&gt;
&lt;br /&gt;
Exemples de présentation de statistiques sur l&#039;état du système supervisé. On remarque que les interfaces basiques fournies avec Skinken ou Nagios sont concues pour donner des informations pertinentes à un administrateur ou à un technicien en informatique, mais qu&#039;il existe aussi des pages cnçues pour êtres facilement comprises et interprétables par des non-informaticiens &lt;br /&gt;
[img]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Exemples de l&#039;interface WebUI ==&lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code du plugin :&lt;br /&gt;
&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*	Noe-Jean Caramelli														  */&lt;br /&gt;
    /*		fonctions d&#039;acces au port com : base developpez.com, modifiees		  */&lt;br /&gt;
    /*	09-11-2012																  */&lt;br /&gt;
    /*	Plugin Shinken pour sonde de temperature Celsius sur port serie RS232	  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    #include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    //status Shinken&lt;br /&gt;
    #define OK			0&lt;br /&gt;
    #define WARNING		1&lt;br /&gt;
    #define CRITICAL	2&lt;br /&gt;
    #define UNKNOW		3&lt;br /&gt;
    &lt;br /&gt;
    #define WARNING_TEMP_LEVEL	333&lt;br /&gt;
    #define CRITICAL_TEMP_LEVEL	666&lt;br /&gt;
    &lt;br /&gt;
    #define COM_NO			3		//Numero du port COM utilise&lt;br /&gt;
    #define RX_SIZE         4096    //taille tampon entree&lt;br /&gt;
    #define TX_SIZE         4096    //taille tampon sortie&lt;br /&gt;
    #define MAX_WAIT_READ   2000    //temps max d&#039;attente pour la lecture (ms)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    HANDLE g_hCOM = NULL; //handle du port COM ouvert&lt;br /&gt;
    &lt;br /&gt;
    //delais d&#039;attente sur le port COM&lt;br /&gt;
    COMMTIMEOUTS g_cto = {&lt;br /&gt;
        MAX_WAIT_READ,  //ReadIntervalTimeOut&lt;br /&gt;
        0,              //ReadTotalTimeOutMultiplier&lt;br /&gt;
        MAX_WAIT_READ,  //ReadTotalTimeOutConstant&lt;br /&gt;
        0,              //WriteTotalTimeOutMultiplier&lt;br /&gt;
        0               //WriteTotalTimeOutConstant&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    //configuration du port COM&lt;br /&gt;
    DCB g_dcb = {&lt;br /&gt;
        sizeof(DCB),        //DCBlength&lt;br /&gt;
        9600,               //BaudRate&lt;br /&gt;
        TRUE,               //fBinary&lt;br /&gt;
        FALSE,              //fParity&lt;br /&gt;
        FALSE,              //fOutxCtsFlow&lt;br /&gt;
        FALSE,              //fOutxDsrFlow&lt;br /&gt;
        DTR_CONTROL_ENABLE, //fDtrControl&lt;br /&gt;
        FALSE,              //fDsrSensitivity&lt;br /&gt;
        FALSE,              //fTXContinueOnXoff&lt;br /&gt;
        FALSE,              //fOutX&lt;br /&gt;
        FALSE,              //fInX&lt;br /&gt;
        FALSE,              //fErrorChar&lt;br /&gt;
        FALSE,              //fNull&lt;br /&gt;
        RTS_CONTROL_ENABLE, //fRtsControl&lt;br /&gt;
        FALSE,              //fAbortOnError&lt;br /&gt;
        0,                  //fDummy2&lt;br /&gt;
        0,                  //wReserved&lt;br /&gt;
        0x100,              //XonLim&lt;br /&gt;
        0x100,              //XoffLim&lt;br /&gt;
        8,                  //ByteSize&lt;br /&gt;
        NOPARITY,           //Parity&lt;br /&gt;
        ONESTOPBIT,         //StopBits&lt;br /&gt;
        0x11,               //XonChar&lt;br /&gt;
        0x13,               //XoffChar&lt;br /&gt;
        &#039;?&#039;,                //ErrorChar&lt;br /&gt;
        0x1A,               //EofChar&lt;br /&gt;
        0x10                //EvtChar&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Prototypes fonctions RS232                                 */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM  (int com_no);&lt;br /&gt;
    BOOL CloseCOM ();&lt;br /&gt;
    BOOL ReadCOM  (void* buffer, int nBytesToRead, int* pBytesRead);&lt;br /&gt;
    BOOL WriteCOM (void* buffer, int nBytesToWrite, int* pBytesWritten);&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Code du plugin Shinken                                     */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
    	&lt;br /&gt;
    	char buffer[16];&lt;br /&gt;
    	int nb_bytes_read;&lt;br /&gt;
    	int temp;&lt;br /&gt;
    	&lt;br /&gt;
    	&lt;br /&gt;
    //ouvre le port serie COM_NO&lt;br /&gt;
        if(!OpenCOM(COM_NO)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de l&#039;ouverture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    &lt;br /&gt;
    //lit une tramme de l&#039;arduino&lt;br /&gt;
    	if(!ReadCOM(buffer, sizeof(buffer)-1, &amp;amp;nb_bytes_read)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de la lecture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    	buffer[nb_bytes_read] = &#039;\0&#039;;&lt;br /&gt;
    	&lt;br /&gt;
    //ferme le port COM_NO&lt;br /&gt;
    	CloseCOM();&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;%d octet(s) recu(s) :\n%s\n&amp;quot;, nb_bytes_read, buffer);&lt;br /&gt;
    	temp=atoi(buffer);&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;temp=%d\n&amp;quot;, temp);&lt;br /&gt;
    	//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    	&lt;br /&gt;
    	if(temp &amp;lt; -274) {&lt;br /&gt;
    		printf(&amp;quot;Valeur de temperature en dessous du 0 absolu ! Verifier capteur... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; WARNING_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Temperature correcte. | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(OK);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; CRITICAL_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Chauffe anormale... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(WARNING);&lt;br /&gt;
    	}&lt;br /&gt;
    	else {&lt;br /&gt;
    		printf(&amp;quot;Ca crame !!!! | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(CRITICAL);&lt;br /&gt;
    	}&lt;br /&gt;
    	&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  OpenCOM : ouverture et configuration du port COM.						  */&lt;br /&gt;
    /*  entree : com_no : Id du port COM a ouvrir.								  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM(int com_no) {&lt;br /&gt;
        //variables locales&lt;br /&gt;
        char szCOM[16];&lt;br /&gt;
    &lt;br /&gt;
        //construction du nom du port, tentative d&#039;ouverture&lt;br /&gt;
        sprintf(szCOM, &amp;quot;COM%d&amp;quot;, com_no);&lt;br /&gt;
        g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,&lt;br /&gt;
                            OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);&lt;br /&gt;
        if(g_hCOM == INVALID_HANDLE_VALUE)&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de l&#039;ouverture du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //affectation taille des tampons d&#039;emission et de reception&lt;br /&gt;
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);&lt;br /&gt;
    &lt;br /&gt;
        //configuration du port COM&lt;br /&gt;
        if(!SetCommTimeouts(g_hCOM, &amp;amp;g_cto) || !SetCommState(g_hCOM, &amp;amp;g_dcb))&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de la configuration du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            CloseHandle(g_hCOM);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //on vide les tampons d&#039;emission et de reception, mise a 1 DTR&lt;br /&gt;
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);&lt;br /&gt;
        EscapeCommFunction(g_hCOM, SETDTR);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  CloseCOM : fermeture du port COM.										  */&lt;br /&gt;
    /*  retour : vrai si reussi.							.					  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL CloseCOM() {&lt;br /&gt;
        //fermeture du port COM&lt;br /&gt;
        CloseHandle(g_hCOM);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  ReadCOM : lecture de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer       : buffer des donnees lues.						  */&lt;br /&gt;
    /*           nBytesToRead : nombre max d&#039;octets a lire.						  */&lt;br /&gt;
    /*           pBytesRead   : variable affectee le nombre d&#039;octets lus.		  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /*----------------------------------------------------------------------------*/&lt;br /&gt;
    /*  Remarques : -la constante MAX_WAIT_READ utilisee dans la structure		  */&lt;br /&gt;
    /*               COMMTIMEOUTS permet de limiter le temps d&#039;attente si aucun   */&lt;br /&gt;
    /*               caracteres n&#039;est present dans le tampon d&#039;entree.			  */&lt;br /&gt;
    /*              -la fonction peut donc retourner vrai sans avoir lu de donnees*/&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead) {&lt;br /&gt;
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  WriteCOM : envoi de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer        : buffer avec les donnees a envoyer.				  */&lt;br /&gt;
    /*           nBytesToWrite : nombre d&#039;octets a envoyer.						  */&lt;br /&gt;
    /*           pBytesWritten : variable qui va recevoir le nombre d&#039;octets	  */&lt;br /&gt;
    /*                           envoyes.										  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten) {&lt;br /&gt;
        //ecriture sur le port&lt;br /&gt;
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7371</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7371"/>
		<updated>2012-12-24T15:59:00Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
First, this paper describes the background of supervision needs and introduce the two most famous monitoring software Nagios and Shinken.&lt;br /&gt;
&lt;br /&gt;
Then it focuses on Shinken, presents the architecture, the principles and the most important technical features.&lt;br /&gt;
&lt;br /&gt;
It concludes with a demonstration that the source code is provided.&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, monitoring system, IT infrastructure&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
D&#039;abord, cette présentation rappelle l&#039;origine des besoins en supervision, introduit les deux logiciels de supervision les plus connus Nagios et Shinken. &lt;br /&gt;
&lt;br /&gt;
Puis elle se concentre sur Shinken, en présente l&#039;architecture, le fonctionnement et les points techniques les plus important. &lt;br /&gt;
&lt;br /&gt;
Elle se conclut par une démonstration dont le code source est fournit. &lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, supervision, système d&#039;information&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Présentation de l&#039;information à l&#039;utilisateur : exemples ===&lt;br /&gt;
Exemple d&#039;une liste de caractéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts. &lt;br /&gt;
[[File:Openserviceproblems.png|800px|center|Liste de l&#039;état des composants du système. ]]&lt;br /&gt;
&lt;br /&gt;
Exemples de présentation de statistiques sur l&#039;état du système supervisé. On remarque que les interfaces basiques fournies avec Skinken ou Nagios sont concues pour donner des informations pertinentes à un administrateur ou à un technicien en informatique, mais qu&#039;il existe aussi des pages cnçues pour êtres facilement comprises et interprétables par des non-informaticiens &lt;br /&gt;
[img]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Exemples de l&#039;interface WebUI ==&lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code du plugin :&lt;br /&gt;
&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*	Noe-Jean Caramelli														  */&lt;br /&gt;
    /*		fonctions d&#039;acces au port com : base developpez.com, modifiees		  */&lt;br /&gt;
    /*	09-11-2012																  */&lt;br /&gt;
    /*	Plugin Shinken pour sonde de temperature Celsius sur port serie RS232	  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    #include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    //status Shinken&lt;br /&gt;
    #define OK			0&lt;br /&gt;
    #define WARNING		1&lt;br /&gt;
    #define CRITICAL	2&lt;br /&gt;
    #define UNKNOW		3&lt;br /&gt;
    &lt;br /&gt;
    #define WARNING_TEMP_LEVEL	333&lt;br /&gt;
    #define CRITICAL_TEMP_LEVEL	666&lt;br /&gt;
    &lt;br /&gt;
    #define COM_NO			3		//Numero du port COM utilise&lt;br /&gt;
    #define RX_SIZE         4096    //taille tampon entree&lt;br /&gt;
    #define TX_SIZE         4096    //taille tampon sortie&lt;br /&gt;
    #define MAX_WAIT_READ   2000    //temps max d&#039;attente pour la lecture (ms)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    HANDLE g_hCOM = NULL; //handle du port COM ouvert&lt;br /&gt;
    &lt;br /&gt;
    //delais d&#039;attente sur le port COM&lt;br /&gt;
    COMMTIMEOUTS g_cto = {&lt;br /&gt;
        MAX_WAIT_READ,  //ReadIntervalTimeOut&lt;br /&gt;
        0,              //ReadTotalTimeOutMultiplier&lt;br /&gt;
        MAX_WAIT_READ,  //ReadTotalTimeOutConstant&lt;br /&gt;
        0,              //WriteTotalTimeOutMultiplier&lt;br /&gt;
        0               //WriteTotalTimeOutConstant&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    //configuration du port COM&lt;br /&gt;
    DCB g_dcb = {&lt;br /&gt;
        sizeof(DCB),        //DCBlength&lt;br /&gt;
        9600,               //BaudRate&lt;br /&gt;
        TRUE,               //fBinary&lt;br /&gt;
        FALSE,              //fParity&lt;br /&gt;
        FALSE,              //fOutxCtsFlow&lt;br /&gt;
        FALSE,              //fOutxDsrFlow&lt;br /&gt;
        DTR_CONTROL_ENABLE, //fDtrControl&lt;br /&gt;
        FALSE,              //fDsrSensitivity&lt;br /&gt;
        FALSE,              //fTXContinueOnXoff&lt;br /&gt;
        FALSE,              //fOutX&lt;br /&gt;
        FALSE,              //fInX&lt;br /&gt;
        FALSE,              //fErrorChar&lt;br /&gt;
        FALSE,              //fNull&lt;br /&gt;
        RTS_CONTROL_ENABLE, //fRtsControl&lt;br /&gt;
        FALSE,              //fAbortOnError&lt;br /&gt;
        0,                  //fDummy2&lt;br /&gt;
        0,                  //wReserved&lt;br /&gt;
        0x100,              //XonLim&lt;br /&gt;
        0x100,              //XoffLim&lt;br /&gt;
        8,                  //ByteSize&lt;br /&gt;
        NOPARITY,           //Parity&lt;br /&gt;
        ONESTOPBIT,         //StopBits&lt;br /&gt;
        0x11,               //XonChar&lt;br /&gt;
        0x13,               //XoffChar&lt;br /&gt;
        &#039;?&#039;,                //ErrorChar&lt;br /&gt;
        0x1A,               //EofChar&lt;br /&gt;
        0x10                //EvtChar&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Prototypes fonctions RS232                                 */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM  (int com_no);&lt;br /&gt;
    BOOL CloseCOM ();&lt;br /&gt;
    BOOL ReadCOM  (void* buffer, int nBytesToRead, int* pBytesRead);&lt;br /&gt;
    BOOL WriteCOM (void* buffer, int nBytesToWrite, int* pBytesWritten);&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Code du plugin Shinken                                     */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
    	&lt;br /&gt;
    	char buffer[16];&lt;br /&gt;
    	int nb_bytes_read;&lt;br /&gt;
    	int temp;&lt;br /&gt;
    	&lt;br /&gt;
    	&lt;br /&gt;
    //ouvre le port serie COM_NO&lt;br /&gt;
        if(!OpenCOM(COM_NO)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de l&#039;ouverture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    &lt;br /&gt;
    //lit une tramme de l&#039;arduino&lt;br /&gt;
    	if(!ReadCOM(buffer, sizeof(buffer)-1, &amp;amp;nb_bytes_read)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de la lecture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    	buffer[nb_bytes_read] = &#039;\0&#039;;&lt;br /&gt;
    	&lt;br /&gt;
    //ferme le port COM_NO&lt;br /&gt;
    	CloseCOM();&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;%d octet(s) recu(s) :\n%s\n&amp;quot;, nb_bytes_read, buffer);&lt;br /&gt;
    	temp=atoi(buffer);&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;temp=%d\n&amp;quot;, temp);&lt;br /&gt;
    	//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    	&lt;br /&gt;
    	if(temp &amp;lt; -274) {&lt;br /&gt;
    		printf(&amp;quot;Valeur de temperature en dessous du 0 absolu ! Verifier capteur... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; WARNING_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Temperature correcte. | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(OK);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; CRITICAL_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Chauffe anormale... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(WARNING);&lt;br /&gt;
    	}&lt;br /&gt;
    	else {&lt;br /&gt;
    		printf(&amp;quot;Ca crame !!!! | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(CRITICAL);&lt;br /&gt;
    	}&lt;br /&gt;
    	&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  OpenCOM : ouverture et configuration du port COM.						  */&lt;br /&gt;
    /*  entree : com_no : Id du port COM a ouvrir.								  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM(int com_no) {&lt;br /&gt;
        //variables locales&lt;br /&gt;
        char szCOM[16];&lt;br /&gt;
    &lt;br /&gt;
        //construction du nom du port, tentative d&#039;ouverture&lt;br /&gt;
        sprintf(szCOM, &amp;quot;COM%d&amp;quot;, com_no);&lt;br /&gt;
        g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,&lt;br /&gt;
                            OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);&lt;br /&gt;
        if(g_hCOM == INVALID_HANDLE_VALUE)&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de l&#039;ouverture du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //affectation taille des tampons d&#039;emission et de reception&lt;br /&gt;
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);&lt;br /&gt;
    &lt;br /&gt;
        //configuration du port COM&lt;br /&gt;
        if(!SetCommTimeouts(g_hCOM, &amp;amp;g_cto) || !SetCommState(g_hCOM, &amp;amp;g_dcb))&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de la configuration du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            CloseHandle(g_hCOM);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //on vide les tampons d&#039;emission et de reception, mise a 1 DTR&lt;br /&gt;
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);&lt;br /&gt;
        EscapeCommFunction(g_hCOM, SETDTR);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  CloseCOM : fermeture du port COM.										  */&lt;br /&gt;
    /*  retour : vrai si reussi.							.					  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL CloseCOM() {&lt;br /&gt;
        //fermeture du port COM&lt;br /&gt;
        CloseHandle(g_hCOM);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  ReadCOM : lecture de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer       : buffer des donnees lues.						  */&lt;br /&gt;
    /*           nBytesToRead : nombre max d&#039;octets a lire.						  */&lt;br /&gt;
    /*           pBytesRead   : variable affectee le nombre d&#039;octets lus.		  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /*----------------------------------------------------------------------------*/&lt;br /&gt;
    /*  Remarques : -la constante MAX_WAIT_READ utilisee dans la structure		  */&lt;br /&gt;
    /*               COMMTIMEOUTS permet de limiter le temps d&#039;attente si aucun   */&lt;br /&gt;
    /*               caracteres n&#039;est present dans le tampon d&#039;entree.			  */&lt;br /&gt;
    /*              -la fonction peut donc retourner vrai sans avoir lu de donnees*/&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead) {&lt;br /&gt;
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  WriteCOM : envoi de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer        : buffer avec les donnees a envoyer.				  */&lt;br /&gt;
    /*           nBytesToWrite : nombre d&#039;octets a envoyer.						  */&lt;br /&gt;
    /*           pBytesWritten : variable qui va recevoir le nombre d&#039;octets	  */&lt;br /&gt;
    /*                           envoyes.										  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten) {&lt;br /&gt;
        //ecriture sur le port&lt;br /&gt;
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7364</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7364"/>
		<updated>2012-12-24T15:51:11Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, monitoring system, IT infrastructure&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios, supervision, système d&#039;information&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Présentation de l&#039;information à l&#039;utilisateur : exemples ===&lt;br /&gt;
Exemple d&#039;une liste de caractéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts. &lt;br /&gt;
[[File:Openserviceproblems.png|800px|center|Liste de l&#039;état des composants du système. ]]&lt;br /&gt;
&lt;br /&gt;
Exemples de présentation de statistiques sur l&#039;état du système supervisé. On remarque que les interfaces basiques fournies avec Skinken ou Nagios sont concues pour donner des informations pertinentes à un administrateur ou à un technicien en informatique, mais qu&#039;il existe aussi des pages cnçues pour êtres facilement comprises et interprétables par des non-informaticiens &lt;br /&gt;
[img]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Exemples de l&#039;interface WebUI ==&lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code du plugin :&lt;br /&gt;
&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*	Noe-Jean Caramelli														  */&lt;br /&gt;
    /*		fonctions d&#039;acces au port com : base developpez.com, modifiees		  */&lt;br /&gt;
    /*	09-11-2012																  */&lt;br /&gt;
    /*	Plugin Shinken pour sonde de temperature Celsius sur port serie RS232	  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    #include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    //status Shinken&lt;br /&gt;
    #define OK			0&lt;br /&gt;
    #define WARNING		1&lt;br /&gt;
    #define CRITICAL	2&lt;br /&gt;
    #define UNKNOW		3&lt;br /&gt;
    &lt;br /&gt;
    #define WARNING_TEMP_LEVEL	333&lt;br /&gt;
    #define CRITICAL_TEMP_LEVEL	666&lt;br /&gt;
    &lt;br /&gt;
    #define COM_NO			3		//Numero du port COM utilise&lt;br /&gt;
    #define RX_SIZE         4096    //taille tampon entree&lt;br /&gt;
    #define TX_SIZE         4096    //taille tampon sortie&lt;br /&gt;
    #define MAX_WAIT_READ   2000    //temps max d&#039;attente pour la lecture (ms)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    HANDLE g_hCOM = NULL; //handle du port COM ouvert&lt;br /&gt;
    &lt;br /&gt;
    //delais d&#039;attente sur le port COM&lt;br /&gt;
    COMMTIMEOUTS g_cto = {&lt;br /&gt;
        MAX_WAIT_READ,  //ReadIntervalTimeOut&lt;br /&gt;
        0,              //ReadTotalTimeOutMultiplier&lt;br /&gt;
        MAX_WAIT_READ,  //ReadTotalTimeOutConstant&lt;br /&gt;
        0,              //WriteTotalTimeOutMultiplier&lt;br /&gt;
        0               //WriteTotalTimeOutConstant&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    //configuration du port COM&lt;br /&gt;
    DCB g_dcb = {&lt;br /&gt;
        sizeof(DCB),        //DCBlength&lt;br /&gt;
        9600,               //BaudRate&lt;br /&gt;
        TRUE,               //fBinary&lt;br /&gt;
        FALSE,              //fParity&lt;br /&gt;
        FALSE,              //fOutxCtsFlow&lt;br /&gt;
        FALSE,              //fOutxDsrFlow&lt;br /&gt;
        DTR_CONTROL_ENABLE, //fDtrControl&lt;br /&gt;
        FALSE,              //fDsrSensitivity&lt;br /&gt;
        FALSE,              //fTXContinueOnXoff&lt;br /&gt;
        FALSE,              //fOutX&lt;br /&gt;
        FALSE,              //fInX&lt;br /&gt;
        FALSE,              //fErrorChar&lt;br /&gt;
        FALSE,              //fNull&lt;br /&gt;
        RTS_CONTROL_ENABLE, //fRtsControl&lt;br /&gt;
        FALSE,              //fAbortOnError&lt;br /&gt;
        0,                  //fDummy2&lt;br /&gt;
        0,                  //wReserved&lt;br /&gt;
        0x100,              //XonLim&lt;br /&gt;
        0x100,              //XoffLim&lt;br /&gt;
        8,                  //ByteSize&lt;br /&gt;
        NOPARITY,           //Parity&lt;br /&gt;
        ONESTOPBIT,         //StopBits&lt;br /&gt;
        0x11,               //XonChar&lt;br /&gt;
        0x13,               //XoffChar&lt;br /&gt;
        &#039;?&#039;,                //ErrorChar&lt;br /&gt;
        0x1A,               //EofChar&lt;br /&gt;
        0x10                //EvtChar&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Prototypes fonctions RS232                                 */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM  (int com_no);&lt;br /&gt;
    BOOL CloseCOM ();&lt;br /&gt;
    BOOL ReadCOM  (void* buffer, int nBytesToRead, int* pBytesRead);&lt;br /&gt;
    BOOL WriteCOM (void* buffer, int nBytesToWrite, int* pBytesWritten);&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Code du plugin Shinken                                     */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
    	&lt;br /&gt;
    	char buffer[16];&lt;br /&gt;
    	int nb_bytes_read;&lt;br /&gt;
    	int temp;&lt;br /&gt;
    	&lt;br /&gt;
    	&lt;br /&gt;
    //ouvre le port serie COM_NO&lt;br /&gt;
        if(!OpenCOM(COM_NO)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de l&#039;ouverture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    &lt;br /&gt;
    //lit une tramme de l&#039;arduino&lt;br /&gt;
    	if(!ReadCOM(buffer, sizeof(buffer)-1, &amp;amp;nb_bytes_read)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de la lecture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    	buffer[nb_bytes_read] = &#039;\0&#039;;&lt;br /&gt;
    	&lt;br /&gt;
    //ferme le port COM_NO&lt;br /&gt;
    	CloseCOM();&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;%d octet(s) recu(s) :\n%s\n&amp;quot;, nb_bytes_read, buffer);&lt;br /&gt;
    	temp=atoi(buffer);&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;temp=%d\n&amp;quot;, temp);&lt;br /&gt;
    	//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    	&lt;br /&gt;
    	if(temp &amp;lt; -274) {&lt;br /&gt;
    		printf(&amp;quot;Valeur de temperature en dessous du 0 absolu ! Verifier capteur... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; WARNING_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Temperature correcte. | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(OK);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; CRITICAL_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Chauffe anormale... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(WARNING);&lt;br /&gt;
    	}&lt;br /&gt;
    	else {&lt;br /&gt;
    		printf(&amp;quot;Ca crame !!!! | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(CRITICAL);&lt;br /&gt;
    	}&lt;br /&gt;
    	&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  OpenCOM : ouverture et configuration du port COM.						  */&lt;br /&gt;
    /*  entree : com_no : Id du port COM a ouvrir.								  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM(int com_no) {&lt;br /&gt;
        //variables locales&lt;br /&gt;
        char szCOM[16];&lt;br /&gt;
    &lt;br /&gt;
        //construction du nom du port, tentative d&#039;ouverture&lt;br /&gt;
        sprintf(szCOM, &amp;quot;COM%d&amp;quot;, com_no);&lt;br /&gt;
        g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,&lt;br /&gt;
                            OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);&lt;br /&gt;
        if(g_hCOM == INVALID_HANDLE_VALUE)&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de l&#039;ouverture du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //affectation taille des tampons d&#039;emission et de reception&lt;br /&gt;
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);&lt;br /&gt;
    &lt;br /&gt;
        //configuration du port COM&lt;br /&gt;
        if(!SetCommTimeouts(g_hCOM, &amp;amp;g_cto) || !SetCommState(g_hCOM, &amp;amp;g_dcb))&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de la configuration du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            CloseHandle(g_hCOM);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //on vide les tampons d&#039;emission et de reception, mise a 1 DTR&lt;br /&gt;
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);&lt;br /&gt;
        EscapeCommFunction(g_hCOM, SETDTR);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  CloseCOM : fermeture du port COM.										  */&lt;br /&gt;
    /*  retour : vrai si reussi.							.					  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL CloseCOM() {&lt;br /&gt;
        //fermeture du port COM&lt;br /&gt;
        CloseHandle(g_hCOM);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  ReadCOM : lecture de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer       : buffer des donnees lues.						  */&lt;br /&gt;
    /*           nBytesToRead : nombre max d&#039;octets a lire.						  */&lt;br /&gt;
    /*           pBytesRead   : variable affectee le nombre d&#039;octets lus.		  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /*----------------------------------------------------------------------------*/&lt;br /&gt;
    /*  Remarques : -la constante MAX_WAIT_READ utilisee dans la structure		  */&lt;br /&gt;
    /*               COMMTIMEOUTS permet de limiter le temps d&#039;attente si aucun   */&lt;br /&gt;
    /*               caracteres n&#039;est present dans le tampon d&#039;entree.			  */&lt;br /&gt;
    /*              -la fonction peut donc retourner vrai sans avoir lu de donnees*/&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead) {&lt;br /&gt;
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  WriteCOM : envoi de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer        : buffer avec les donnees a envoyer.				  */&lt;br /&gt;
    /*           nBytesToWrite : nombre d&#039;octets a envoyer.						  */&lt;br /&gt;
    /*           pBytesWritten : variable qui va recevoir le nombre d&#039;octets	  */&lt;br /&gt;
    /*                           envoyes.										  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten) {&lt;br /&gt;
        //ecriture sur le port&lt;br /&gt;
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7363</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7363"/>
		<updated>2012-12-24T15:46:47Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Présentation de l&#039;information à l&#039;utilisateur : exemples ===&lt;br /&gt;
Exemple d&#039;une liste de caractéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts. &lt;br /&gt;
[[File:Openserviceproblems.png|800px|center|Liste de l&#039;état des composants du système. ]]&lt;br /&gt;
&lt;br /&gt;
Exemples de présentation de statistiques sur l&#039;état du système supervisé. On remarque que les interfaces basiques fournies avec Skinken ou Nagios sont concues pour donner des informations pertinentes à un administrateur ou à un technicien en informatique, mais qu&#039;il existe aussi des pages cnçues pour êtres facilement comprises et interprétables par des non-informaticiens &lt;br /&gt;
[img]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Exemples de l&#039;interface WebUI ==&lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code du plugin :&lt;br /&gt;
&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*	Noe-Jean Caramelli														  */&lt;br /&gt;
    /*		fonctions d&#039;acces au port com : base developpez.com, modifiees		  */&lt;br /&gt;
    /*	09-11-2012																  */&lt;br /&gt;
    /*	Plugin Shinken pour sonde de temperature Celsius sur port serie RS232	  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    #include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    //status Shinken&lt;br /&gt;
    #define OK			0&lt;br /&gt;
    #define WARNING		1&lt;br /&gt;
    #define CRITICAL	2&lt;br /&gt;
    #define UNKNOW		3&lt;br /&gt;
    &lt;br /&gt;
    #define WARNING_TEMP_LEVEL	333&lt;br /&gt;
    #define CRITICAL_TEMP_LEVEL	666&lt;br /&gt;
    &lt;br /&gt;
    #define COM_NO			3		//Numero du port COM utilise&lt;br /&gt;
    #define RX_SIZE         4096    //taille tampon entree&lt;br /&gt;
    #define TX_SIZE         4096    //taille tampon sortie&lt;br /&gt;
    #define MAX_WAIT_READ   2000    //temps max d&#039;attente pour la lecture (ms)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    HANDLE g_hCOM = NULL; //handle du port COM ouvert&lt;br /&gt;
    &lt;br /&gt;
    //delais d&#039;attente sur le port COM&lt;br /&gt;
    COMMTIMEOUTS g_cto = {&lt;br /&gt;
        MAX_WAIT_READ,  //ReadIntervalTimeOut&lt;br /&gt;
        0,              //ReadTotalTimeOutMultiplier&lt;br /&gt;
        MAX_WAIT_READ,  //ReadTotalTimeOutConstant&lt;br /&gt;
        0,              //WriteTotalTimeOutMultiplier&lt;br /&gt;
        0               //WriteTotalTimeOutConstant&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    //configuration du port COM&lt;br /&gt;
    DCB g_dcb = {&lt;br /&gt;
        sizeof(DCB),        //DCBlength&lt;br /&gt;
        9600,               //BaudRate&lt;br /&gt;
        TRUE,               //fBinary&lt;br /&gt;
        FALSE,              //fParity&lt;br /&gt;
        FALSE,              //fOutxCtsFlow&lt;br /&gt;
        FALSE,              //fOutxDsrFlow&lt;br /&gt;
        DTR_CONTROL_ENABLE, //fDtrControl&lt;br /&gt;
        FALSE,              //fDsrSensitivity&lt;br /&gt;
        FALSE,              //fTXContinueOnXoff&lt;br /&gt;
        FALSE,              //fOutX&lt;br /&gt;
        FALSE,              //fInX&lt;br /&gt;
        FALSE,              //fErrorChar&lt;br /&gt;
        FALSE,              //fNull&lt;br /&gt;
        RTS_CONTROL_ENABLE, //fRtsControl&lt;br /&gt;
        FALSE,              //fAbortOnError&lt;br /&gt;
        0,                  //fDummy2&lt;br /&gt;
        0,                  //wReserved&lt;br /&gt;
        0x100,              //XonLim&lt;br /&gt;
        0x100,              //XoffLim&lt;br /&gt;
        8,                  //ByteSize&lt;br /&gt;
        NOPARITY,           //Parity&lt;br /&gt;
        ONESTOPBIT,         //StopBits&lt;br /&gt;
        0x11,               //XonChar&lt;br /&gt;
        0x13,               //XoffChar&lt;br /&gt;
        &#039;?&#039;,                //ErrorChar&lt;br /&gt;
        0x1A,               //EofChar&lt;br /&gt;
        0x10                //EvtChar&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Prototypes fonctions RS232                                 */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM  (int com_no);&lt;br /&gt;
    BOOL CloseCOM ();&lt;br /&gt;
    BOOL ReadCOM  (void* buffer, int nBytesToRead, int* pBytesRead);&lt;br /&gt;
    BOOL WriteCOM (void* buffer, int nBytesToWrite, int* pBytesWritten);&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Code du plugin Shinken                                     */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
    	&lt;br /&gt;
    	char buffer[16];&lt;br /&gt;
    	int nb_bytes_read;&lt;br /&gt;
    	int temp;&lt;br /&gt;
    	&lt;br /&gt;
    	&lt;br /&gt;
    //ouvre le port serie COM_NO&lt;br /&gt;
        if(!OpenCOM(COM_NO)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de l&#039;ouverture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    &lt;br /&gt;
    //lit une tramme de l&#039;arduino&lt;br /&gt;
    	if(!ReadCOM(buffer, sizeof(buffer)-1, &amp;amp;nb_bytes_read)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de la lecture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    	buffer[nb_bytes_read] = &#039;\0&#039;;&lt;br /&gt;
    	&lt;br /&gt;
    //ferme le port COM_NO&lt;br /&gt;
    	CloseCOM();&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;%d octet(s) recu(s) :\n%s\n&amp;quot;, nb_bytes_read, buffer);&lt;br /&gt;
    	temp=atoi(buffer);&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;temp=%d\n&amp;quot;, temp);&lt;br /&gt;
    	//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    	&lt;br /&gt;
    	if(temp &amp;lt; -274) {&lt;br /&gt;
    		printf(&amp;quot;Valeur de temperature en dessous du 0 absolu ! Verifier capteur... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; WARNING_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Temperature correcte. | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(OK);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; CRITICAL_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Chauffe anormale... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(WARNING);&lt;br /&gt;
    	}&lt;br /&gt;
    	else {&lt;br /&gt;
    		printf(&amp;quot;Ca crame !!!! | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(CRITICAL);&lt;br /&gt;
    	}&lt;br /&gt;
    	&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  OpenCOM : ouverture et configuration du port COM.						  */&lt;br /&gt;
    /*  entree : com_no : Id du port COM a ouvrir.								  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM(int com_no) {&lt;br /&gt;
        //variables locales&lt;br /&gt;
        char szCOM[16];&lt;br /&gt;
    &lt;br /&gt;
        //construction du nom du port, tentative d&#039;ouverture&lt;br /&gt;
        sprintf(szCOM, &amp;quot;COM%d&amp;quot;, com_no);&lt;br /&gt;
        g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,&lt;br /&gt;
                            OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);&lt;br /&gt;
        if(g_hCOM == INVALID_HANDLE_VALUE)&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de l&#039;ouverture du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //affectation taille des tampons d&#039;emission et de reception&lt;br /&gt;
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);&lt;br /&gt;
    &lt;br /&gt;
        //configuration du port COM&lt;br /&gt;
        if(!SetCommTimeouts(g_hCOM, &amp;amp;g_cto) || !SetCommState(g_hCOM, &amp;amp;g_dcb))&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de la configuration du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            CloseHandle(g_hCOM);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //on vide les tampons d&#039;emission et de reception, mise a 1 DTR&lt;br /&gt;
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);&lt;br /&gt;
        EscapeCommFunction(g_hCOM, SETDTR);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  CloseCOM : fermeture du port COM.										  */&lt;br /&gt;
    /*  retour : vrai si reussi.							.					  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL CloseCOM() {&lt;br /&gt;
        //fermeture du port COM&lt;br /&gt;
        CloseHandle(g_hCOM);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  ReadCOM : lecture de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer       : buffer des donnees lues.						  */&lt;br /&gt;
    /*           nBytesToRead : nombre max d&#039;octets a lire.						  */&lt;br /&gt;
    /*           pBytesRead   : variable affectee le nombre d&#039;octets lus.		  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /*----------------------------------------------------------------------------*/&lt;br /&gt;
    /*  Remarques : -la constante MAX_WAIT_READ utilisee dans la structure		  */&lt;br /&gt;
    /*               COMMTIMEOUTS permet de limiter le temps d&#039;attente si aucun   */&lt;br /&gt;
    /*               caracteres n&#039;est present dans le tampon d&#039;entree.			  */&lt;br /&gt;
    /*              -la fonction peut donc retourner vrai sans avoir lu de donnees*/&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead) {&lt;br /&gt;
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  WriteCOM : envoi de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer        : buffer avec les donnees a envoyer.				  */&lt;br /&gt;
    /*           nBytesToWrite : nombre d&#039;octets a envoyer.						  */&lt;br /&gt;
    /*           pBytesWritten : variable qui va recevoir le nombre d&#039;octets	  */&lt;br /&gt;
    /*                           envoyes.										  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten) {&lt;br /&gt;
        //ecriture sur le port&lt;br /&gt;
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7359</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7359"/>
		<updated>2012-12-24T15:38:25Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code du plugin :&lt;br /&gt;
&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*	Noe-Jean Caramelli														  */&lt;br /&gt;
    /*		fonctions d&#039;acces au port com : base developpez.com, modifiees		  */&lt;br /&gt;
    /*	09-11-2012																  */&lt;br /&gt;
    /*	Plugin Shinken pour sonde de temperature Celsius sur port serie RS232	  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    #include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
    #include &amp;lt;conio.h&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    //status Shinken&lt;br /&gt;
    #define OK			0&lt;br /&gt;
    #define WARNING		1&lt;br /&gt;
    #define CRITICAL	2&lt;br /&gt;
    #define UNKNOW		3&lt;br /&gt;
    &lt;br /&gt;
    #define WARNING_TEMP_LEVEL	333&lt;br /&gt;
    #define CRITICAL_TEMP_LEVEL	666&lt;br /&gt;
    &lt;br /&gt;
    #define COM_NO			3		//Numero du port COM utilise&lt;br /&gt;
    #define RX_SIZE         4096    //taille tampon entree&lt;br /&gt;
    #define TX_SIZE         4096    //taille tampon sortie&lt;br /&gt;
    #define MAX_WAIT_READ   2000    //temps max d&#039;attente pour la lecture (ms)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    HANDLE g_hCOM = NULL; //handle du port COM ouvert&lt;br /&gt;
    &lt;br /&gt;
    //delais d&#039;attente sur le port COM&lt;br /&gt;
    COMMTIMEOUTS g_cto = {&lt;br /&gt;
        MAX_WAIT_READ,  //ReadIntervalTimeOut&lt;br /&gt;
        0,              //ReadTotalTimeOutMultiplier&lt;br /&gt;
        MAX_WAIT_READ,  //ReadTotalTimeOutConstant&lt;br /&gt;
        0,              //WriteTotalTimeOutMultiplier&lt;br /&gt;
        0               //WriteTotalTimeOutConstant&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    //configuration du port COM&lt;br /&gt;
    DCB g_dcb = {&lt;br /&gt;
        sizeof(DCB),        //DCBlength&lt;br /&gt;
        9600,               //BaudRate&lt;br /&gt;
        TRUE,               //fBinary&lt;br /&gt;
        FALSE,              //fParity&lt;br /&gt;
        FALSE,              //fOutxCtsFlow&lt;br /&gt;
        FALSE,              //fOutxDsrFlow&lt;br /&gt;
        DTR_CONTROL_ENABLE, //fDtrControl&lt;br /&gt;
        FALSE,              //fDsrSensitivity&lt;br /&gt;
        FALSE,              //fTXContinueOnXoff&lt;br /&gt;
        FALSE,              //fOutX&lt;br /&gt;
        FALSE,              //fInX&lt;br /&gt;
        FALSE,              //fErrorChar&lt;br /&gt;
        FALSE,              //fNull&lt;br /&gt;
        RTS_CONTROL_ENABLE, //fRtsControl&lt;br /&gt;
        FALSE,              //fAbortOnError&lt;br /&gt;
        0,                  //fDummy2&lt;br /&gt;
        0,                  //wReserved&lt;br /&gt;
        0x100,              //XonLim&lt;br /&gt;
        0x100,              //XoffLim&lt;br /&gt;
        8,                  //ByteSize&lt;br /&gt;
        NOPARITY,           //Parity&lt;br /&gt;
        ONESTOPBIT,         //StopBits&lt;br /&gt;
        0x11,               //XonChar&lt;br /&gt;
        0x13,               //XoffChar&lt;br /&gt;
        &#039;?&#039;,                //ErrorChar&lt;br /&gt;
        0x1A,               //EofChar&lt;br /&gt;
        0x10                //EvtChar&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Prototypes fonctions RS232                                 */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM  (int com_no);&lt;br /&gt;
    BOOL CloseCOM ();&lt;br /&gt;
    BOOL ReadCOM  (void* buffer, int nBytesToRead, int* pBytesRead);&lt;br /&gt;
    BOOL WriteCOM (void* buffer, int nBytesToWrite, int* pBytesWritten);&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*                 Code du plugin Shinken                                     */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    int main(int argc, char* argv[]) {&lt;br /&gt;
    	&lt;br /&gt;
    	char buffer[16];&lt;br /&gt;
    	int nb_bytes_read;&lt;br /&gt;
    	int temp;&lt;br /&gt;
    	&lt;br /&gt;
    	&lt;br /&gt;
    //ouvre le port serie COM_NO&lt;br /&gt;
        if(!OpenCOM(COM_NO)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de l&#039;ouverture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    &lt;br /&gt;
    //lit une tramme de l&#039;arduino&lt;br /&gt;
    	if(!ReadCOM(buffer, sizeof(buffer)-1, &amp;amp;nb_bytes_read)) {&lt;br /&gt;
    		printf(&amp;quot;Probleme lors de la lecture du port COM%d ! \n&amp;quot;, COM_NO);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW); &lt;br /&gt;
    	}&lt;br /&gt;
    	buffer[nb_bytes_read] = &#039;\0&#039;;&lt;br /&gt;
    	&lt;br /&gt;
    //ferme le port COM_NO&lt;br /&gt;
    	CloseCOM();&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;%d octet(s) recu(s) :\n%s\n&amp;quot;, nb_bytes_read, buffer);&lt;br /&gt;
    	temp=atoi(buffer);&lt;br /&gt;
    	&lt;br /&gt;
    	//printf(&amp;quot;temp=%d\n&amp;quot;, temp);&lt;br /&gt;
    	//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    	&lt;br /&gt;
    	if(temp &amp;lt; -274) {&lt;br /&gt;
    		printf(&amp;quot;Valeur de temperature en dessous du 0 absolu ! Verifier capteur... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(UNKNOW);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; WARNING_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Temperature correcte. | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(OK);&lt;br /&gt;
    	}&lt;br /&gt;
    	else if(temp &amp;lt; CRITICAL_TEMP_LEVEL) {&lt;br /&gt;
    		printf(&amp;quot;Chauffe anormale... | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(WARNING);&lt;br /&gt;
    	}&lt;br /&gt;
    	else {&lt;br /&gt;
    		printf(&amp;quot;Ca crame !!!! | %d \n&amp;quot;, temp);&lt;br /&gt;
    		//system (&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
    		exit(CRITICAL);&lt;br /&gt;
    	}&lt;br /&gt;
    	&lt;br /&gt;
        return 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  OpenCOM : ouverture et configuration du port COM.						  */&lt;br /&gt;
    /*  entree : com_no : Id du port COM a ouvrir.								  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL OpenCOM(int com_no) {&lt;br /&gt;
        //variables locales&lt;br /&gt;
        char szCOM[16];&lt;br /&gt;
    &lt;br /&gt;
        //construction du nom du port, tentative d&#039;ouverture&lt;br /&gt;
        sprintf(szCOM, &amp;quot;COM%d&amp;quot;, com_no);&lt;br /&gt;
        g_hCOM = CreateFile(szCOM, GENERIC_READ|GENERIC_WRITE, 0, NULL,&lt;br /&gt;
                            OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);&lt;br /&gt;
        if(g_hCOM == INVALID_HANDLE_VALUE)&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de l&#039;ouverture du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //affectation taille des tampons d&#039;emission et de reception&lt;br /&gt;
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);&lt;br /&gt;
    &lt;br /&gt;
        //configuration du port COM&lt;br /&gt;
        if(!SetCommTimeouts(g_hCOM, &amp;amp;g_cto) || !SetCommState(g_hCOM, &amp;amp;g_dcb))&lt;br /&gt;
        {&lt;br /&gt;
            //printf(&amp;quot;Erreur lors de la configuration du port COM%d&amp;quot;, com_no);&lt;br /&gt;
            CloseHandle(g_hCOM);&lt;br /&gt;
            return FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        //on vide les tampons d&#039;emission et de reception, mise a 1 DTR&lt;br /&gt;
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);&lt;br /&gt;
        EscapeCommFunction(g_hCOM, SETDTR);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  CloseCOM : fermeture du port COM.										  */&lt;br /&gt;
    /*  retour : vrai si reussi.							.					  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL CloseCOM() {&lt;br /&gt;
        //fermeture du port COM&lt;br /&gt;
        CloseHandle(g_hCOM);&lt;br /&gt;
        return TRUE;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  ReadCOM : lecture de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer       : buffer des donnees lues.						  */&lt;br /&gt;
    /*           nBytesToRead : nombre max d&#039;octets a lire.						  */&lt;br /&gt;
    /*           pBytesRead   : variable affectee le nombre d&#039;octets lus.		  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /*----------------------------------------------------------------------------*/&lt;br /&gt;
    /*  Remarques : -la constante MAX_WAIT_READ utilisee dans la structure		  */&lt;br /&gt;
    /*               COMMTIMEOUTS permet de limiter le temps d&#039;attente si aucun   */&lt;br /&gt;
    /*               caracteres n&#039;est present dans le tampon d&#039;entree.			  */&lt;br /&gt;
    /*              -la fonction peut donc retourner vrai sans avoir lu de donnees*/&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead) {&lt;br /&gt;
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    /*  WriteCOM : envoi de donnees sur le port COM.							  */&lt;br /&gt;
    /*  entree : buffer        : buffer avec les donnees a envoyer.				  */&lt;br /&gt;
    /*           nBytesToWrite : nombre d&#039;octets a envoyer.						  */&lt;br /&gt;
    /*           pBytesWritten : variable qui va recevoir le nombre d&#039;octets	  */&lt;br /&gt;
    /*                           envoyes.										  */&lt;br /&gt;
    /*  retour : vrai si l&#039;operation a reussi, faux sinon.						  */&lt;br /&gt;
    /******************************************************************************/&lt;br /&gt;
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten) {&lt;br /&gt;
        //ecriture sur le port&lt;br /&gt;
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7340</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7340"/>
		<updated>2012-12-24T15:09:42Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Démonstration ==&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7339</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7339"/>
		<updated>2012-12-24T15:09:14Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Cette définition de la criticité de l&#039;état d&#039;un composant est valable pour Shinken et Nagios mais est uun standard de fait pour les outils de supervision. C&#039;est la seule spécification que les plugins doivent respecter pour fonctionner avec Shinken. &lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7334</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7334"/>
		<updated>2012-12-24T15:06:43Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* GNU/Linux Magasine France - Hors Série, numéro 62, septembre/octobre 2012, 8€, aux éditions Diamond : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/gnulinux-magazine-hs-n62-septembreoctobre-2012-en-kiosque/&lt;br /&gt;
* http://www.shinken-monitoring.org/&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Shinken_(informatique)/&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7330</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7330"/>
		<updated>2012-12-24T15:03:57Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Définition de la criticité ==&lt;br /&gt;
&lt;br /&gt;
=== Statuts de l&#039;état des composants ===&lt;br /&gt;
Les statuts (universel) : &lt;br /&gt;
*0 = OK&lt;br /&gt;
*1 = WARNING&lt;br /&gt;
*2 = CRITICAL&lt;br /&gt;
*3 = UNKNOW&lt;br /&gt;
&lt;br /&gt;
=== Données métriques ===&lt;br /&gt;
Le statuts est couplé à des données métriques qui permettent d&#039;avoir un historique des caractéristiques importantes du système et de prendre des décisions, des mesures ou de faire des actions plus fines que simplement avec le statuts.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7327</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7327"/>
		<updated>2012-12-24T15:02:23Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités qu&#039;offre Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinken permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : reçoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7325</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7325"/>
		<updated>2012-12-24T15:01:02Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités et l&#039;architecture de Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinlen permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les plugins sont indépendants de Shinken. Ils n&#039;ont qu&#039;une spécification (que l&#039;on verra plus tard) à respecter pour fonctionner. Un plugin n&#039;est en fait qu&#039;un programme qui peut être écrit dans n&#039;importe quel langage, Cela confère à Shinken une grande flexibilité. &lt;br /&gt;
&lt;br /&gt;
== Architecture de Shinken ==&lt;br /&gt;
Shinken est découpé en 6 démons&lt;br /&gt;
* Arbiter : gestion configuration, assurance de disponibilité • Scheduler : ordonnance les checks (plugins). Analyse les&lt;br /&gt;
résultats ; déclenche une action.&lt;br /&gt;
* Poller : lance les plugins (requêtes Scheduler)&lt;br /&gt;
* Reactionner : envoi des notifications et lance des actions (event handler)&lt;br /&gt;
* Broker : Interface entre Shinken (scheduler) et l’extérieur (une BD)&lt;br /&gt;
* Receiver : recoit les données d’acquisition passive et les passe au sheduler pour traitement. &lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7324</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7324"/>
		<updated>2012-12-24T15:00:00Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités et l&#039;architecture de Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinlen permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel spécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7322</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7322"/>
		<updated>2012-12-24T14:59:41Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités et l&#039;architecture de Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinlen permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le système des Packs permet une mise en place rapide de l&#039;acquisition active des données. Il facilite la découverte, le partage et l&#039;installation des fichiers de configuration nécessaires pour superviser un matériel sécifique ou spécialisé.&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7320</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7320"/>
		<updated>2012-12-24T14:59:06Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;où vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités et l&#039;architecture de Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinlen permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notifications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7319</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7319"/>
		<updated>2012-12-24T14:58:31Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;ou vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités et l&#039;architecture de Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinlen permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
De plus l&#039;interface WebUI qui est fournie de base permet d&#039;interpréter les données de performances et permet d&#039;émettre des notofications sur l&#039;état du parc informatique supervisé. Cette interface peut être complétée avec d&#039;autres couches logicielles ou remplacée par une autre interface.&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7317</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7317"/>
		<updated>2012-12-24T14:57:43Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* Les possibilités et l&amp;#039;architecture de Shinken */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;ou vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités et l&#039;architecture de Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinlen permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins : http://www.shinken-monitoring.org/wiki/official/thebasics-plugins/&lt;br /&gt;
* l&#039;acquisition passive grâce à NSCA/TSCA, des protocoles spécialisés dans cette fonction : http://www.shinken-monitoring.org/wiki/scaling_shinken/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7307</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7307"/>
		<updated>2012-12-24T14:50:56Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;ou vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
La suite de la présentation se concentre sur Shinken. &lt;br /&gt;
&lt;br /&gt;
== Les possibilités et l&#039;architecture de Shinken ==&lt;br /&gt;
L&#039;architecture distribuée de Shinken permet de mettre en place un système de supervision disponible avec une balance de charge. &lt;br /&gt;
Sinlen permet : &lt;br /&gt;
* l&#039;acquisition active des données grâce aux plugins [lien]&lt;br /&gt;
* l&#039;acquision passive grâce à NSCA/TSCA [lien]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7304</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7304"/>
		<updated>2012-12-24T14:48:57Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;ou vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Shinken ===&lt;br /&gt;
[[File:Jean gabes new.png|250px|thumb|right|Jean Gabès, créateur de Shinken. ]]&lt;br /&gt;
Shinken est céé en 2010 par Jean Gabès diplômé en 2005 de l&#039;ENSEIRB à Bordeaux. Il repose sur une architecture distribuée et est constitué d&#039;un pool de démon. Pour prendre en compte l&#039;aspect de mise en réseau apporté par l&#039;aspect distribué du logiciel, mais aussi son utilisation qui n&#039;a de sens que sur un réseau, il est placé sous licence GNU-AGPL. Il est développé en Python. &lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Jean_gabes_new.png&amp;diff=7303</id>
		<title>File:Jean gabes new.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Jean_gabes_new.png&amp;diff=7303"/>
		<updated>2012-12-24T14:46:45Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Jean Gabès, créateur de Shinken.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Jean Gabès, créateur de Shinken.&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7302</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7302"/>
		<updated>2012-12-24T14:42:13Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;ou vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Exemple d&#039;un réseau de serveurs (exchange.nagois.org)]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
Il existe deux outils majeurs pour la supervision de parcs informatiques : Nagios et Shinken. Ces deux outils sont liés par l&#039;histoire du développement des outils de supervision, puisque Shinken est directement inspiré de Nagios. Il est cependant important de préciser que la supervision ne se restreint pas à ces deux logiciels. Il existe d&#039;autres méthodes de supervision et également d&#039;autres logiciels et technologies qui viennent compléter les logiciels de supervision présentés ici, en leur ajoutant différentes couches. &lt;br /&gt;
&lt;br /&gt;
=== Nagios ===&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
Nagios est céé en 1996 par Ethan Galstad dans le Minnesota (U.S.). Il repose sur un modèle centralisé et mono-démon. Il est sous licence GNU-GPL. Nagios est développé en C. &lt;br /&gt;
En pratique, il résiste mal à une charge de plus de 200 machines. Bien sûr cela dépend des performances du réseau et du serveur de supervision utilisé, mais la limite imposée par l&#039;architecture mono-demon apparaît rapidement. Elle constitue un goulot d&#039;étranglement. &lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|exemple]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7301</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7301"/>
		<updated>2012-12-24T14:38:52Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
[[File:Robot rouge alpha.png|250px|thumb|right|Mascotte actuelle de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;ou vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Architecture client/serveur de Urbi]]&lt;br /&gt;
&lt;br /&gt;
== Les outils de supervision ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ethan.jpg|250px|thumb|right|Ethan Galstad, créateur de Nagios. ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|Architecture client/serveur de Urbi]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Robot_rouge_alpha.png&amp;diff=7300</id>
		<title>File:Robot rouge alpha.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Robot_rouge_alpha.png&amp;diff=7300"/>
		<updated>2012-12-24T14:36:44Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Mascotte actuelle de Shinken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mascotte actuelle de Shinken&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Ethan.jpg&amp;diff=7296</id>
		<title>File:Ethan.jpg</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Ethan.jpg&amp;diff=7296"/>
		<updated>2012-12-24T14:34:33Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Ethan Galstad, créateur de Nagios.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ethan Galstad, créateur de Nagios.&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7277</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7277"/>
		<updated>2012-12-24T14:18:25Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;ou vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
=== Un exemple === &lt;br /&gt;
Voici l&#039;exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état. &lt;br /&gt;
[[File:Googlemap.png|800px|center|Architecture client/serveur de Urbi]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|Architecture client/serveur de Urbi]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Googlemap.png&amp;diff=7275</id>
		<title>File:Googlemap.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Googlemap.png&amp;diff=7275"/>
		<updated>2012-12-24T14:17:22Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Exemple d&amp;#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&amp;#039;état.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple d&#039;un réseau de serveurs (exchange.nagois.org) répartit à travers États-Unis, qui demande un système de supervision performant pour en assurer le fonctionnement et en connaître l&#039;état.&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7274</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7274"/>
		<updated>2012-12-24T14:11:02Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;ou vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
Ces dernières années, les réseaux se sont particulièrement développés. Les débits augmentent, et avec ceux, les possibilités. Les réseaux informatiques sont devenus un des piliers centraux de l&#039;économie et du fonctionnement des entreprises, à la fois pour les communications, mais aussi pour les données vitales des entreprises (bases de données clients, stocks, …) et enfin pour la gestion des finances. En conséquence, l&#039;état des machines assurant ces fonctionnalités devient de plus en plus critique à mesure que le papier est entièrement remplacé par des systèmes informatisés. &lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
L&#039;autre raison de la naissance de ce besoin de supervision est l&#039;augmentation du nombre et du type des machines interconnectées. Les réseaux ne se restreignent plus aux serveurs et ordinateurs de bureau traditionnels comme c&#039;était le cas il y a quelques années. Les systèmes d&#039;information des entreprises sont désormais constitués d&#039;un parc de machines très hétérogènes tel que des téléphones VoIP, des imprimantes de plus en plus nombreuses, des appareils mobiles, des sondes, des caméra de surveillances, des pare-feu, des portails… Et cette diversification tends à évoluer vers l&#039;internet des objets. &lt;br /&gt;
Les caractéristiques et les constantes vitales des appareils connectés deviennent de plus en plus variées avec la diversification de leur type. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L&#039;augmentation de la quantité d&#039;information, la taille des réseaux et du type des machines mène à la création de services dont l&#039;état est critique, et le besoin de supervision et d&#039;administration de ces réseaux est de plus en plus important. &lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|Architecture client/serveur de Urbi]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7271</id>
		<title>EA2012-Shinken</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=EA2012-Shinken&amp;diff=7271"/>
		<updated>2012-12-24T14:07:46Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Created page with &amp;quot;= Présentation = Logo de Shinken  * Enseignants: Georges-Pierre Bonneau, Didier Donsez * Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.uj…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[File:Logo.png|250px|thumb|right|Logo de Shinken]]&lt;br /&gt;
&lt;br /&gt;
* Enseignants: Georges-Pierre Bonneau, Didier Donsez&lt;br /&gt;
* Auteur: Noé-Jean Caramelli (Noe-Jean.Caramelli@e.ujf-grenoble.fr)&lt;br /&gt;
* Télécharger : [[Media:Shinken.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Résumé =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mots Clés ===&lt;br /&gt;
&lt;br /&gt;
Shinken, Nagios&lt;br /&gt;
&lt;br /&gt;
= Synthèse =&lt;br /&gt;
&lt;br /&gt;
lien externe [http://fr.wikipedia.org/wiki/Shinken_%28informatique%29].&lt;br /&gt;
&lt;br /&gt;
Shinken est un logiciel de surveillance de parc informatique. Mais d&#039;ou vient ce besoin ? &lt;br /&gt;
&lt;br /&gt;
== Besoin des entreprises ==&lt;br /&gt;
=== Le développement des réseaux ===&lt;br /&gt;
&lt;br /&gt;
=== L’Expansion des systèmes d&#039;information ===&lt;br /&gt;
&lt;br /&gt;
blabla&lt;br /&gt;
&lt;br /&gt;
[[File:Openserviceproblems.png|250px|center|Architecture client/serveur de Urbi]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Démonstration ===&lt;br /&gt;
&lt;br /&gt;
==== Code ====&lt;br /&gt;
&lt;br /&gt;
code :&lt;br /&gt;
  code source&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
&lt;br /&gt;
* liens&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Logo.png&amp;diff=7269</id>
		<title>File:Logo.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Logo.png&amp;diff=7269"/>
		<updated>2012-12-24T14:06:26Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Logo Shinken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Logo Shinken&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Openserviceproblems.png&amp;diff=7267</id>
		<title>File:Openserviceproblems.png</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Openserviceproblems.png&amp;diff=7267"/>
		<updated>2012-12-24T14:03:42Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Exemple d&amp;#039;une liste de caratéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple d&#039;une liste de caratéristiques systèmes de différentes machines supervisées et de leur état, incluant leur statuts.&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=File:Shinken.pdf&amp;diff=7261</id>
		<title>File:Shinken.pdf</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=File:Shinken.pdf&amp;diff=7261"/>
		<updated>2012-12-24T13:50:39Z</updated>

		<summary type="html">&lt;p&gt;Carameln: Transparents de la présentation de Shinken en Études D&amp;#039;approfondissement, le 9 novembre 2012.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Transparents de la présentation de Shinken en Études D&#039;approfondissement, le 9 novembre 2012.&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=7039</id>
		<title>Ecom-sapins de noel 2012</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=7039"/>
		<updated>2012-12-18T23:19:13Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* mardi 11 décembre 2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Équipe ==&lt;br /&gt;
Qikai Gu &amp;lt;br /&amp;gt;&lt;br /&gt;
Xiao Lu &amp;lt;br /&amp;gt;&lt;br /&gt;
Noé-Jean Caramelli &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Rôles : répartition des responsabilités&#039;&#039;&#039;&amp;lt;br /&amp;gt; &lt;br /&gt;
Chef de projet : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Auteur : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Concepteur d&#039;interaction : Noé-Jean, Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Développeur : Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Expert en utilisabilité : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
Graphiste : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Page de suivi ==&lt;br /&gt;
----&lt;br /&gt;
== Description du projet ==&lt;br /&gt;
&lt;br /&gt;
Site web d&#039;e-commerce pour la vente de sapins de Noël.&lt;br /&gt;
&lt;br /&gt;
== Méthode Aglie et Scrum ==&lt;br /&gt;
=== Choix de fonctionnement et justification ===&lt;br /&gt;
Nous avons choisi de prendre le chef de projet pour ScrumMaster. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Il faut noter que l&#039;on nous a demandé de nous organiser à la fois de façon traditionnelle et selon la méthode Scrum. &lt;br /&gt;
Le rôle du ScrumMaster est &amp;quot;de la protéger des perturbations extérieures. Il est complètement transparent pour la communication entre l&#039;équipe et les clients et n&#039;a aucun pouvoir hiérarchique sur l&#039;équipe. C&#039;est en revanche un facilitateur pour les problèmes non techniques de l&#039;équipe.&amp;quot; (Wikipedia). Le chef de projet a aussi pour rôle de gérer les perturbations extérieures, et en principe il a aussi un rôle hiérarchique. C&#039;est toujours le chef de projet qui doit envoyer les livrables demandés par l&#039;équipe pédaggique (constat). Pour concilier au mieux les deux méthodes d&#039;organisation que nous devons appliquer, nous avons choisi de prendre le chef de projet pour ScrumMaster et de gommer l&#039;aspect hiérarchie. Chaque membre de l&#039;équipe a des responsablilités et un pouvoir d&#039;arbitrage déterminé (voir les rôles définis ci-dessus), mais aucun n&#039;a plus de pouvoir qu&#039;un autre. &lt;br /&gt;
&lt;br /&gt;
Nous avons choisi une durée de sprint de 15 jours. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Plusieurs critères nous orientent vers différents choix pour la durée du sprint. Nous avons affectés un coefficient à chacun d&#039;eux puis avons fait la moyenne pondérée de durée de sprint : &lt;br /&gt;
&lt;br /&gt;
(coef pour le critère*nb semaines/sprints) &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*1) La courte durée du projet, de 2 mois (date de fin de la release fixée au 18 décembre 2012), nous insite à choisir des sprints d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*3) La faible disponibilité de l&#039;équipe de développement sur une semaine, compte tenu du cadre scolaire, nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.15*3) L&#039;effectif réduit de l&#039;équipe de développement, compte tenu du coût supplémentaire engendré par la préparation d&#039;un produit partiel (démo+rétrospective), nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La stabilité de l&#039;architecture (sujette à modifications sur conseils dans un cadre pédagogique, méconnaissance des technologies utilisées) nous insite à choisir un sprint de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La durée maximum pour prendre en compte un changement (taille équipe, disponibilité, perturbations) nous oriente vsers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.05*1) Le maintient de la motivation de l&#039;équipe nous oriente vers un sprint d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0) L&#039;implication des clients et utilisateurs n&#039;est pas comptabilisée. &amp;lt;br /&amp;gt;&lt;br /&gt;
Si l&#039;équipe pédagogique (PO) est disponible physiquement une fois par semaine, les utilisateurs réellement ciblés sont inaccessibles ! &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous obtenons une durée de sprint de 2.3 semaines, arrondie à 2 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétrospectives ===&lt;br /&gt;
Pour les prévisions pour l&#039;application de la méthode Agile, et par rapport aux informations qui nous ont été communiquées, nous retenons ces dates :  &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce sont les dates de fin de chaque sprint, toutes les 2 semaines&lt;br /&gt;
==== mardi 9 octobre 2012 ====&lt;br /&gt;
Pas de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 23 octobre 2012 ====&lt;br /&gt;
Première 15&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu : prototype de front-end, avec login et liste de produit (JSP) ; EJB basique pour login ; Mise en place d&#039;un accès à une BD &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : front end JSP OK, EJB ne fnctionnement pas, problèmes techniques ; donc, pas de temps pour la BD &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : démo fonctionnelle du front-end présentant le login/logout/inscription et une liste de deux produits.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mardi 30 octobre 2012 : vacances] &amp;lt;br /&amp;gt;&lt;br /&gt;
==== mardi 13 novembre 2012 ==== &lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  front-end : fiche produit lorsqu&#039;on clique sur un produit de la liste, panier. &amp;lt;br /&amp;gt;back-end : EJB pour connexion login et base de données (Hibernate) utilisable pour le login. &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : front-end : fiche produit lorsqu&#039;on clique sur un produit de la liste. &amp;lt;br /&amp;gt;back-end : mise en place des EJB. &amp;lt;br /&amp;gt;Pas encore de BD, actuellement en cours. &amp;lt;br /&amp;gt;Également en cours : conception de la charte graphique. &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : bouton panier avec compteur cliquable, redirige vers une fiche panier. &amp;lt;br /&amp;gt;Produit de la liste cliquable, redirige vers une fiche produit dévelppée. &amp;lt;br /&amp;gt;Projet test simple qui montre l&#039;accès RMI aux EJB. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 27 novembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  page panier. &amp;lt;br /&amp;gt; Mise en place base de données et lien avec le projet (JDBS). &amp;lt;br /&amp;gt; Première IHM implémentée. &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : Mise en place d&#039;un exemple simple pour les EJB. &amp;lt;br /&amp;gt; Base de donnée crées avec les tables nécessaires pour le site et des exemples. &amp;lt;br /&amp;gt; Problème de base de donnée. &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : Petite démo test pour les EJB dans le projet. Ajout page commentaire accessible pour chaque produit grace à un bouton sur la page du produit concerné. Permet de laisser un commentaire et une note si on est loggé ; sinon redirige vers la page de log, puis une fois loggé, revient à la page commentaire. Ajout barre de recherche. Ajout page panier affichant le contenu du panier avec un champ pour modifier les quantités. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 11 décembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu : IHM terminée, ajout boutons suppr et modifier au panier. Connexion entre base de donnée et site JSP. Page commande, et page admin. &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : Premier jet d&#039;IHM, encore en développement, très peu intégrée au noyau fonctionnel. Intégration des EJB au site. Connexion à la base de donnée. Modification des quantités du panier. Fonction login/logout terminée (avec gestion des erreurs...). Première page pour passer commande : informations de livraison. Les informations du compte d&#039;utilisateur sont accessibles et modifiables en cliquant sur le login. Page admin  non réalisée, fonction de recherche encore non fonctionnelle. &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : permet l&#039;inscription d&#039;un utilisateur, la constitution d&#039;un panier et donne accès à la première page permettant de renseigner les informations de livraison pour passer la commande. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nombre d&#039;itérations : 4 &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Product backlog&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
fonctionnalités &amp;lt;br /&amp;gt;&lt;br /&gt;
N scprints backlog (bonnus : poker planning, estimation, complexité) &amp;lt;br /&amp;gt;&lt;br /&gt;
N sprints planning &amp;lt;br /&amp;gt;&lt;br /&gt;
N demo à la fin du sprint &amp;lt;br /&amp;gt;&lt;br /&gt;
N rétrospectives (thérapie de groupe, ce qui s&#039;est bien/mal passé, ce qui peut être amélioré) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sapins/code/trunk/ Dépôt SVN code] ==&lt;br /&gt;
&#039;&#039;Ne contient que ce qui est nécessaire à l&#039;application, le code.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sdn-doc/code/trunk Dépôt SVN documentation] ==&lt;br /&gt;
&#039;&#039;Contient toute la documentation et les fichiers annexes.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6883</id>
		<title>Ecom-sapins de noel 2012</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6883"/>
		<updated>2012-12-04T10:08:56Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Équipe ==&lt;br /&gt;
Qikai Gu &amp;lt;br /&amp;gt;&lt;br /&gt;
Xiao Lu &amp;lt;br /&amp;gt;&lt;br /&gt;
Noé-Jean Caramelli &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Rôles : répartition des responsabilités&#039;&#039;&#039;&amp;lt;br /&amp;gt; &lt;br /&gt;
Chef de projet : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Auteur : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Concepteur d&#039;interaction : Noé-Jean, Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Développeur : Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Expert en utilisabilité : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
Graphiste : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Page de suivi ==&lt;br /&gt;
----&lt;br /&gt;
== Description du projet ==&lt;br /&gt;
&lt;br /&gt;
Site web d&#039;e-commerce pour la vente de sapins de Noël.&lt;br /&gt;
&lt;br /&gt;
== Méthode Aglie et Scrum ==&lt;br /&gt;
=== Choix de fonctionnement et justification ===&lt;br /&gt;
Nous avons choisi de prendre le chef de projet pour ScrumMaster. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Il faut noter que l&#039;on nous a demandé de nous organiser à la fois de façon traditionnelle et selon la méthode Scrum. &lt;br /&gt;
Le rôle du ScrumMaster est &amp;quot;de la protéger des perturbations extérieures. Il est complètement transparent pour la communication entre l&#039;équipe et les clients et n&#039;a aucun pouvoir hiérarchique sur l&#039;équipe. C&#039;est en revanche un facilitateur pour les problèmes non techniques de l&#039;équipe.&amp;quot; (Wikipedia). Le chef de projet a aussi pour rôle de gérer les perturbations extérieures, et en principe il a aussi un rôle hiérarchique. C&#039;est toujours le chef de projet qui doit envoyer les livrables demandés par l&#039;équipe pédaggique (constat). Pour concilier au mieux les deux méthodes d&#039;organisation que nous devons appliquer, nous avons choisi de prendre le chef de projet pour ScrumMaster et de gommer l&#039;aspect hiérarchie. Chaque membre de l&#039;équipe a des responsablilités et un pouvoir d&#039;arbitrage déterminé (voir les rôles définis ci-dessus), mais aucun n&#039;a plus de pouvoir qu&#039;un autre. &lt;br /&gt;
&lt;br /&gt;
Nous avons choisi une durée de sprint de 15 jours. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Plusieurs critères nous orientent vers différents choix pour la durée du sprint. Nous avons affectés un coefficient à chacun d&#039;eux puis avons fait la moyenne pondérée de durée de sprint : &lt;br /&gt;
&lt;br /&gt;
(coef pour le critère*nb semaines/sprints) &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*1) La courte durée du projet, de 2 mois (date de fin de la release fixée au 18 décembre 2012), nous insite à choisir des sprints d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*3) La faible disponibilité de l&#039;équipe de développement sur une semaine, compte tenu du cadre scolaire, nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.15*3) L&#039;effectif réduit de l&#039;équipe de développement, compte tenu du coût supplémentaire engendré par la préparation d&#039;un produit partiel (démo+rétrospective), nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La stabilité de l&#039;architecture (sujette à modifications sur conseils dans un cadre pédagogique, méconnaissance des technologies utilisées) nous insite à choisir un sprint de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La durée maximum pour prendre en compte un changement (taille équipe, disponibilité, perturbations) nous oriente vsers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.05*1) Le maintient de la motivation de l&#039;équipe nous oriente vers un sprint d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0) L&#039;implication des clients et utilisateurs n&#039;est pas comptabilisée. &amp;lt;br /&amp;gt;&lt;br /&gt;
Si l&#039;équipe pédagogique (PO) est disponible physiquement une fois par semaine, les utilisateurs réellement ciblés sont inaccessibles ! &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous obtenons une durée de sprint de 2.3 semaines, arrondie à 2 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétrospectives ===&lt;br /&gt;
Pour les prévisions pour l&#039;application de la méthode Agile, et par rapport aux informations qui nous ont été communiquées, nous retenons ces dates :  &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce sont les dates de fin de chaque sprint, toutes les 2 semaines&lt;br /&gt;
==== mardi 9 octobre 2012 ====&lt;br /&gt;
Pas de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 23 octobre 2012 ====&lt;br /&gt;
Première 15&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu : prototype de front-end, avec login et liste de produit (JSP) ; EJB basique pour login ; Mise en place d&#039;un accès à une BD &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : front end JSP OK, EJB ne fnctionnement pas, problèmes techniques ; donc, pas de temps pour la BD &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : démo fonctionnelle du front-end présentant le login/logout/inscription et une liste de deux produits.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mardi 30 octobre 2012 : vacances] &amp;lt;br /&amp;gt;&lt;br /&gt;
==== mardi 13 novembre 2012 ==== &lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  front-end : fiche produit lorsqu&#039;on clique sur un produit de la liste, panier. &amp;lt;br /&amp;gt;back-end : EJB pour connexion login et base de données (Hibernate) utilisable pour le login. &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : front-end : fiche produit lorsqu&#039;on clique sur un produit de la liste. &amp;lt;br /&amp;gt;back-end : mise en place des EJB. &amp;lt;br /&amp;gt;Pas encore de BD, actuellement en cours. &amp;lt;br /&amp;gt;Également en cours : conception de la charte graphique. &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : bouton panier avec compteur cliquable, redirige vers une fiche panier. &amp;lt;br /&amp;gt;Produit de la liste cliquable, redirige vers une fiche produit dévelppée. &amp;lt;br /&amp;gt;Projet test simple qui montre l&#039;accès RMI aux EJB. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 27 novembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  page panier. &amp;lt;br /&amp;gt; Mise en place base de données et lien avec le projet (JDBS). &amp;lt;br /&amp;gt; Première IHM implémentée. &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : Mise en place d&#039;un exemple simple pour les EJB. &amp;lt;br /&amp;gt; Base de donnée crées avec les tables nécessaires pour le site et des exemples. &amp;lt;br /&amp;gt; Problème de base de donnée. &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : Petite démo test pour les EJB dans le projet. Ajout page commentaire accessible pour chaque produit grace à un bouton sur la page du produit concerné. Permet de laisser un commentaire et une note si on est loggé ; sinon redirige vers la page de log, puis une fois loggé, revient à la page commentaire. Ajout barre de recherche. Ajout page panier affichant le contenu du panier avec un champ pour modifier les quantités. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 11 décembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nombre d&#039;itérations : 4 &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Product backlog&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
fonctionnalités &amp;lt;br /&amp;gt;&lt;br /&gt;
N scprints backlog (bonnus : poker planning, estimation, complexité) &amp;lt;br /&amp;gt;&lt;br /&gt;
N sprints planning &amp;lt;br /&amp;gt;&lt;br /&gt;
N demo à la fin du sprint &amp;lt;br /&amp;gt;&lt;br /&gt;
N rétrospectives (thérapie de groupe, ce qui s&#039;est bien/mal passé, ce qui peut être amélioré) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sapins/code/trunk/ Dépôt SVN code] ==&lt;br /&gt;
&#039;&#039;Ne contient que ce qui est nécessaire à l&#039;application, le code.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sdn-doc/code/trunk Dépôt SVN documentation] ==&lt;br /&gt;
&#039;&#039;Contient toute la documentation et les fichiers annexes.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6513</id>
		<title>Ecom-sapins de noel 2012</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6513"/>
		<updated>2012-11-13T10:05:30Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Équipe ==&lt;br /&gt;
Qikai Gu &amp;lt;br /&amp;gt;&lt;br /&gt;
Xiao Lu &amp;lt;br /&amp;gt;&lt;br /&gt;
Noé-Jean Caramelli &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Rôles : répartition des responsabilités&#039;&#039;&#039;&amp;lt;br /&amp;gt; &lt;br /&gt;
Chef de projet : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Auteur : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Concepteur d&#039;interaction : Noé-Jean, Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Développeur : Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Expert en utilisabilité : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
Graphiste : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Page de suivi ==&lt;br /&gt;
----&lt;br /&gt;
== Description du projet ==&lt;br /&gt;
&lt;br /&gt;
Site web d&#039;e-commerce pour la vente de sapins de Noël.&lt;br /&gt;
&lt;br /&gt;
== Méthode Aglie et Scrum ==&lt;br /&gt;
=== Choix de fonctionnement et justification ===&lt;br /&gt;
Nous avons choisi de prendre le chef de projet pour ScrumMaster. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Il faut noter que l&#039;on nous a demandé de nous organiser à la fois de façon traditionnelle et selon la méthode Scrum. &lt;br /&gt;
Le rôle du ScrumMaster est &amp;quot;de la protéger des perturbations extérieures. Il est complètement transparent pour la communication entre l&#039;équipe et les clients et n&#039;a aucun pouvoir hiérarchique sur l&#039;équipe. C&#039;est en revanche un facilitateur pour les problèmes non techniques de l&#039;équipe.&amp;quot; (Wikipedia). Le chef de projet a aussi pour rôle de gérer les perturbations extérieures, et en principe il a aussi un rôle hiérarchique. C&#039;est toujours le chef de projet qui doit envoyer les livrables demandés par l&#039;équipe pédaggique (constat). Pour concilier au mieux les deux méthodes d&#039;organisation que nous devons appliquer, nous avons choisi de prendre le chef de projet pour ScrumMaster et de gommer l&#039;aspect hiérarchie. Chaque membre de l&#039;équipe a des responsablilités et un pouvoir d&#039;arbitrage déterminé (voir les rôles définis ci-dessus), mais aucun n&#039;a plus de pouvoir qu&#039;un autre. &lt;br /&gt;
&lt;br /&gt;
Nous avons choisi une durée de sprint de 15 jours. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Plusieurs critères nous orientent vers différents choix pour la durée du sprint. Nous avons affectés un coefficient à chacun d&#039;eux puis avons fait la moyenne pondérée de durée de sprint : &lt;br /&gt;
&lt;br /&gt;
(coef pour le critère*nb semaines/sprints) &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*1) La courte durée du projet, de 2 mois (date de fin de la release fixée au 18 décembre 2012), nous insite à choisir des sprints d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*3) La faible disponibilité de l&#039;équipe de développement sur une semaine, compte tenu du cadre scolaire, nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.15*3) L&#039;effectif réduit de l&#039;équipe de développement, compte tenu du coût supplémentaire engendré par la préparation d&#039;un produit partiel (démo+rétrospective), nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La stabilité de l&#039;architecture (sujette à modifications sur conseils dans un cadre pédagogique, méconnaissance des technologies utilisées) nous insite à choisir un sprint de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La durée maximum pour prendre en compte un changement (taille équipe, disponibilité, perturbations) nous oriente vsers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.05*1) Le maintient de la motivation de l&#039;équipe nous oriente vers un sprint d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0) L&#039;implication des clients et utilisateurs n&#039;est pas comptabilisée. &amp;lt;br /&amp;gt;&lt;br /&gt;
Si l&#039;équipe pédagogique (PO) est disponible physiquement une fois par semaine, les utilisateurs réellement ciblés sont inaccessibles ! &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous obtenons une durée de sprint de 2.3 semaines, arrondie à 2 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétrospectives ===&lt;br /&gt;
Pour les prévisions pour l&#039;application de la méthode Agile, et par rapport aux informations qui nous ont été communiquées, nous retenons ces dates :  &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce sont les dates de fin de chaque sprint, toutes les 2 semaines&lt;br /&gt;
==== mardi 9 octobre 2012 ====&lt;br /&gt;
Pas de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 23 octobre 2012 ====&lt;br /&gt;
Première 15&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu : prototype de front-end, avec login et liste de produit (JSP) ; EJB basique pour login ; Mise en place d&#039;un accès à une BD &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : front end JSP OK, EJB ne fnctionnement pas, problèmes techniques ; donc, pas de temps pour la BD &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : démo fonctionnelle du front-end présentant le login/logout/inscription et une liste de deux produits.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mardi 30 octobre 2012 : vacances] &amp;lt;br /&amp;gt;&lt;br /&gt;
==== mardi 13 novembre 2012 ==== &lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  front-end : fiche produit lorsqu&#039;on clique sur un produit de la liste, panier. &amp;lt;br /&amp;gt;back-end : EJB pour connexion login et base de données (Hibernate) utilisable pour le login. &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : front-end : fiche produit lorsqu&#039;on clique sur un produit de la liste. &amp;lt;br /&amp;gt;back-end : mise en place des EJB. &amp;lt;br /&amp;gt;Pas encore de BD, actuellement en cours. &amp;lt;br /&amp;gt;Également en cours : conception de la charte graphique. &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : bouton panier avec compteur cliquable, redirige vers une fiche panier. &amp;lt;br /&amp;gt;Produit de la liste cliquable, redirige vers une fiche produit dévelppée. &amp;lt;br /&amp;gt;Projet test simple qui montre l&#039;accès RMI aux EJB. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 27 novembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 11 décembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nombre d&#039;itérations : 4 &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Product backlog&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
fonctionnalités &amp;lt;br /&amp;gt;&lt;br /&gt;
N scprints backlog (bonnus : poker planning, estimation, complexité) &amp;lt;br /&amp;gt;&lt;br /&gt;
N sprints planning &amp;lt;br /&amp;gt;&lt;br /&gt;
N demo à la fin du sprint &amp;lt;br /&amp;gt;&lt;br /&gt;
N rétrospectives (thérapie de groupe, ce qui s&#039;est bien/mal passé, ce qui peut être amélioré) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sapins/code/trunk/ Dépôt SVN code] ==&lt;br /&gt;
&#039;&#039;Ne contient que ce qui est nécessaire à l&#039;application, le code.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sdn-doc/code/trunk Dépôt SVN documentation] ==&lt;br /&gt;
&#039;&#039;Contient toute la documentation et les fichiers annexes.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6451</id>
		<title>Ecom-sapins de noel 2012</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6451"/>
		<updated>2012-11-06T21:08:38Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Équipe ==&lt;br /&gt;
Qikai Gu &amp;lt;br /&amp;gt;&lt;br /&gt;
Xiao Lu &amp;lt;br /&amp;gt;&lt;br /&gt;
Noé-Jean Caramelli &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Rôles : répartition des responsabilités&#039;&#039;&#039;&amp;lt;br /&amp;gt; &lt;br /&gt;
Chef de projet : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Auteur : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Concepteur d&#039;interaction : Noé-Jean, Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Développeur : Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Expert en utilisabilité : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
Graphiste : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Page de suivi ==&lt;br /&gt;
----&lt;br /&gt;
== Description du projet ==&lt;br /&gt;
&lt;br /&gt;
Site web d&#039;e-commerce pour la vente de sapins de Noël.&lt;br /&gt;
&lt;br /&gt;
== Méthode Aglie et Scrum ==&lt;br /&gt;
=== Choix de fonctionnement et justification ===&lt;br /&gt;
Nous avons choisi de prendre le chef de projet pour ScrumMaster. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Il faut noter que l&#039;on nous a demandé de nous organiser à la fois de façon traditionnelle et selon la méthode Scrum. &lt;br /&gt;
Le rôle du ScrumMaster est &amp;quot;de la protéger des perturbations extérieures. Il est complètement transparent pour la communication entre l&#039;équipe et les clients et n&#039;a aucun pouvoir hiérarchique sur l&#039;équipe. C&#039;est en revanche un facilitateur pour les problèmes non techniques de l&#039;équipe.&amp;quot; (Wikipedia). Le chef de projet a aussi pour rôle de gérer les perturbations extérieures, et en principe il a aussi un rôle hiérarchique. C&#039;est toujours le chef de projet qui doit envoyer les livrables demandés par l&#039;équipe pédaggique (constat). Pour concilier au mieux les deux méthodes d&#039;organisation que nous devons appliquer, nous avons choisi de prendre le chef de projet pour ScrumMaster et de gommer l&#039;aspect hiérarchie. Chaque membre de l&#039;équipe a des responsablilités et un pouvoir d&#039;arbitrage déterminé (voir les rôles définis ci-dessus), mais aucun n&#039;a plus de pouvoir qu&#039;un autre. &lt;br /&gt;
&lt;br /&gt;
Nous avons choisi une durée de sprint de 15 jours. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Plusieurs critères nous orientent vers différents choix pour la durée du sprint. Nous avons affectés un coefficient à chacun d&#039;eux puis avons fait la moyenne pondérée de durée de sprint : &lt;br /&gt;
&lt;br /&gt;
(coef pour le critère*nb semaines/sprints) &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*1) La courte durée du projet, de 2 mois (date de fin de la release fixée au 18 décembre 2012), nous insite à choisir des sprints d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*3) La faible disponibilité de l&#039;équipe de développement sur une semaine, compte tenu du cadre scolaire, nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.15*3) L&#039;effectif réduit de l&#039;équipe de développement, compte tenu du coût supplémentaire engendré par la préparation d&#039;un produit partiel (démo+rétrospective), nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La stabilité de l&#039;architecture (sujette à modifications sur conseils dans un cadre pédagogique, méconnaissance des technologies utilisées) nous insite à choisir un sprint de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La durée maximum pour prendre en compte un changement (taille équipe, disponibilité, perturbations) nous oriente vsers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.05*1) Le maintient de la motivation de l&#039;équipe nous oriente vers un sprint d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0) L&#039;implication des clients et utilisateurs n&#039;est pas comptabilisée. &amp;lt;br /&amp;gt;&lt;br /&gt;
Si l&#039;équipe pédagogique (PO) est disponible physiquement une fois par semaine, les utilisateurs réellement ciblés sont inaccessibles ! &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous obtenons une durée de sprint de 2.3 semaines, arrondie à 2 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétrospectives ===&lt;br /&gt;
Pour les prévisions pour l&#039;application de la méthode Agile, et par rapport aux informations qui nous ont été communiquées, nous retenons ces dates :  &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce sont les dates de fin de chaque sprint, toutes les 2 semaines&lt;br /&gt;
==== mardi 9 octobre 2012 ====&lt;br /&gt;
Pas de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 23 octobre 2012 ====&lt;br /&gt;
Première 15&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu : prototype de front-end, avec login et liste de produit (JSP) ; EJB basique pour login ; Mise en place d&#039;un accès à une BD &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : front end JSP OK, EJB ne fnctionnement pas, problèmes techniques ; donc, pas de temps pour la BD &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : démo fonctionnelle du front-end présentant le login/logout/inscription et une liste de deux produits.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mardi 30 octobre 2012 : vacances] &amp;lt;br /&amp;gt;&lt;br /&gt;
==== mardi 13 novembre 2012 ==== &lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 27 novembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 11 décembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nombre d&#039;itérations : 4 &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Product backlog&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
fonctionnalités &amp;lt;br /&amp;gt;&lt;br /&gt;
N scprints backlog (bonnus : poker planning, estimation, complexité) &amp;lt;br /&amp;gt;&lt;br /&gt;
N sprints planning &amp;lt;br /&amp;gt;&lt;br /&gt;
N demo à la fin du sprint &amp;lt;br /&amp;gt;&lt;br /&gt;
N rétrospectives (thérapie de groupe, ce qui s&#039;est bien/mal passé, ce qui peut être amélioré) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sapins/code/trunk/ Dépôt SVN code] ==&lt;br /&gt;
&#039;&#039;Ne contient que ce qui est nécessaire à l&#039;application, le code.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sdn-doc/code/trunk Dépôt SVN documentation] ==&lt;br /&gt;
&#039;&#039;Contient toute la documentation et les fichiers annexes.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6450</id>
		<title>Ecom-sapins de noel 2012</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6450"/>
		<updated>2012-11-06T21:07:26Z</updated>

		<summary type="html">&lt;p&gt;Carameln: /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Équipe ==&lt;br /&gt;
Qikai Gu &amp;lt;br /&amp;gt;&lt;br /&gt;
Xiao Lu &amp;lt;br /&amp;gt;&lt;br /&gt;
Noé-Jean Caramelli &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Rôles : répartition des responsabilités&#039;&#039;&#039;&amp;lt;br /&amp;gt; &lt;br /&gt;
Chef de projet : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Auteur : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Concepteur d&#039;interaction : Noé-Jean, Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Développeur : Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Expert en utilisabilité : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
Graphiste : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Page de suivi ==&lt;br /&gt;
----&lt;br /&gt;
== Description du projet ==&lt;br /&gt;
&lt;br /&gt;
Site web d&#039;e-commerce pour la vente de sapins de Noël.&lt;br /&gt;
&lt;br /&gt;
== Méthode Aglie et Scrum ==&lt;br /&gt;
=== Choix de fonctionnement et justification ===&lt;br /&gt;
Nous avons choisi de prendre le chef de projet pour ScrumMaster. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Il faut noter que l&#039;on nous a demandé de nous organiser à la fois de façon traditionnelle et selon la méthode Scrum. &lt;br /&gt;
Le rôle du ScrumMaster est &amp;quot;de la protéger des perturbations extérieures. Il est complètement transparent pour la communication entre l&#039;équipe et les clients et n&#039;a aucun pouvoir hiérarchique sur l&#039;équipe. C&#039;est en revanche un facilitateur pour les problèmes non techniques de l&#039;équipe.&amp;quot; (Wikipedia). Le chef de projet a aussi pour rôle de gérer les perturbations extérieures, et en principe il a aussi un rôle hiérarchique. C&#039;est toujours le chef de projet qui doit envoyer les livrables demandés par l&#039;équipe pédaggique (constat). Pour concilier au mieux les deux méthodes d&#039;organisation que nous devons appliquer, nous avons choisi de prendre le chef de projet pour ScrumMaster et de gommer l&#039;aspect hiérarchie. Chaque membre de l&#039;équipe a des responsablilités et un pouvoir d&#039;arbitrage déterminé (voir les rôles définis ci-dessus), mais aucun n&#039;a plus de pouvoir qu&#039;un autre. &lt;br /&gt;
&lt;br /&gt;
Nous avons choisi une durée de sprint de 15 jours. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Plusieurs critères nous orientent vers différents choix pour la durée du sprint. Nous avons affectés un coefficient à chacun d&#039;eux puis avons fait la moyenne pondérée de durée de sprint : &lt;br /&gt;
&lt;br /&gt;
(coef pour le critère*nb semaines/sprints) &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*1) La courte durée du projet, de 2 mois (date de fin de la release fixée au 18 décembre 2012), nous insite à choisir des sprints d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*3) La faible disponibilité de l&#039;équipe de développement sur une semaine, compte tenu du cadre scolaire, nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.15*3) L&#039;effectif réduit de l&#039;équipe de développement, compte tenu du coût supplémentaire engendré par la préparation d&#039;un produit partiel (démo+rétrospective), nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La stabilité de l&#039;architecture (sujette à modifications sur conseils dans un cadre pédagogique, méconnaissance des technologies utilisées) nous insite à choisir un sprint de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La durée maximum pour prendre en compte un changement (taille équipe, disponibilité, perturbations) nous oriente vsers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.05*1) Le maintient de la motivation de l&#039;équipe nous oriente vers un sprint d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0) L&#039;implication des clients et utilisateurs n&#039;est pas comptabilisée. &amp;lt;br /&amp;gt;&lt;br /&gt;
Si l&#039;équipe pédagogique (PO) est disponible physiquement une fois par semaine, les utilisateurs réellement ciblés sont inaccessibles ! &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous obtenons une durée de sprint de 2.3 semaines, arrondie à 2 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétrospectives ===&lt;br /&gt;
Pour les prévisions pour l&#039;application de la méthode Agile, et par rapport aux informations qui nous ont été communiquées, nous retenons ces dates :  &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce sont les dates de fin de chaque sprint, toutes les 2 semaines&lt;br /&gt;
==== mardi 9 octobre 2012 ====&lt;br /&gt;
Pas de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 23 octobre 2012 ====&lt;br /&gt;
Première 15&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu : prototype de front-end, avec login et liste de produit (JSP) ; EJB basique pour login ; Mise en place d&#039;un accès à une BD &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : front end JSP OK, EJB ne fnctionnement pas, problèmes techniques ; donc, pas de temps pour la BD &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : démo fonctionnelle du front-end présentant le login/logout/inscription et une liste de deux produits.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mardi 30 octobre 2012 : vacances] &amp;lt;br /&amp;gt;&lt;br /&gt;
==== mardi 13 novembre 2012 ==== &lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 27 novembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 11 décembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nombre d&#039;itérations : 4 &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Product backlog&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
fonctionnalités &amp;lt;br /&amp;gt;&lt;br /&gt;
N scprints backlog (bonnus : poker planning, estimation, complexité) &amp;lt;br /&amp;gt;&lt;br /&gt;
N sprints planning &amp;lt;br /&amp;gt;&lt;br /&gt;
N demo à la fin du sprint &amp;lt;br /&amp;gt;&lt;br /&gt;
N rétrospectives (thérapie de groupe, ce qui s&#039;est bien/mal passé, ce qui peut être amélioré) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sapins/code/trunk/ Dépôt SVN code] ==&lt;br /&gt;
&#039;&#039;Ne contient que ce qui est nécessaire à l&#039;application, le code.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sdn-doc/code/trunk Dépôt SVN documentation] ==&lt;br /&gt;
&#039;&#039;Contient toute la documentation et les fichiers annexes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Matériels - Quantité ==&lt;br /&gt;
&lt;br /&gt;
* Item 1&lt;br /&gt;
* Item 2&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
	<entry>
		<id>https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6437</id>
		<title>Ecom-sapins de noel 2012</title>
		<link rel="alternate" type="text/html" href="https://air.imag.fr/index.php?title=Ecom-sapins_de_noel_2012&amp;diff=6437"/>
		<updated>2012-11-06T08:43:27Z</updated>

		<summary type="html">&lt;p&gt;Carameln: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Équipe ==&lt;br /&gt;
Qikai Gu &amp;lt;br /&amp;gt;&lt;br /&gt;
Xiao Lu &amp;lt;br /&amp;gt;&lt;br /&gt;
Noé-Jean Caramelli &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Rôles : répartition des responsabilités&#039;&#039;&#039;&amp;lt;br /&amp;gt; &lt;br /&gt;
Chef de projet : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Auteur : Noé-Jean &amp;lt;br /&amp;gt;&lt;br /&gt;
Concepteur d&#039;interaction : Noé-Jean, Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Développeur : Xiao &amp;lt;br /&amp;gt;&lt;br /&gt;
Expert en utilisabilité : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
Graphiste : Qikai &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Page de suivi ==&lt;br /&gt;
----&lt;br /&gt;
== Description du projet ==&lt;br /&gt;
Nous avons choisi d&#039;avoir un scrum master tournant.&lt;br /&gt;
Justification : &lt;br /&gt;
Nous avons choisi une durée de sprint de 15 jours. &lt;br /&gt;
&lt;br /&gt;
Product backlog&lt;br /&gt;
finctionnalités&lt;br /&gt;
N scprint backlog (bonnus : poker planning, estimation, complexité)&lt;br /&gt;
N sprint planning&lt;br /&gt;
N demo à la fin du sprint&lt;br /&gt;
N rétrospectives (thérapie de groupe, ce qui s&#039;est bien/mal passé, ce qui peut être amélioré)&lt;br /&gt;
&lt;br /&gt;
== Méthode Aglie et Scrum ==&lt;br /&gt;
=== Choix de fonctionnement et justification ===&lt;br /&gt;
Nous avons choisi de prendre le chef de projet pour ScrumMaster. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Il faut noter que l&#039;on nous a demandé de nous organiser à la fois de façon traditionnelle et selon la méthode Scrum. &lt;br /&gt;
Le rôle du ScrumMaster est &amp;quot;de la protéger des perturbations extérieures. Il est complètement transparent pour la communication entre l&#039;équipe et les clients et n&#039;a aucun pouvoir hiérarchique sur l&#039;équipe. C&#039;est en revanche un facilitateur pour les problèmes non techniques de l&#039;équipe.&amp;quot; (Wikipedia). Le chef de projet a aussi pour rôle de gérer les perturbations extérieures, et en principe il a aussi un rôle hiérarchique. C&#039;est toujours le chef de projet qui doit envoyer les livrables demandés par l&#039;équipe pédaggique (constat). Pour concilier au mieux les deux méthodes d&#039;organisation que nous devons appliquer, nous avons choisi de prendre le chef de projet pour ScrumMaster et de gommer l&#039;aspect hiérarchie. Chaque membre de l&#039;équipe a des responsablilités et un pouvoir d&#039;arbitrage déterminé (voir les rôles définis ci-dessus), mais aucun n&#039;a plus de pouvoir qu&#039;un autre. &lt;br /&gt;
&lt;br /&gt;
Nous avons choisi une durée de sprint de 15 jours. &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;Justification : &#039;&#039;&lt;br /&gt;
Plusieurs critères nous orientent vers différents choix pour la durée du sprint. Nous avons affectés un coefficient à chacun d&#039;eux puis avons fait la moyenne pondérée de durée de sprint : &lt;br /&gt;
&lt;br /&gt;
(coef pour le critère*nb semaines/sprints) &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*1) La courte durée du projet, de 2 mois (date de fin de la release fixée au 18 décembre 2012), nous insite à choisir des sprints d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.3*3) La faible disponibilité de l&#039;équipe de développement sur une semaine, compte tenu du cadre scolaire, nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.15*3) L&#039;effectif réduit de l&#039;équipe de développement, compte tenu du coût supplémentaire engendré par la préparation d&#039;un produit partiel (démo+rétrospective), nous oriente vers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La stabilité de l&#039;architecture (sujette à modifications sur conseils dans un cadre pédagogique, méconnaissance des technologies utilisées) nous insite à choisir un sprint de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.1*3) La durée maximum pour prendre en compte un changement (taille équipe, disponibilité, perturbations) nous oriente vsers des sprints de 3 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0.05*1) Le maintient de la motivation de l&#039;équipe nous oriente vers un sprint d&#039;1 semaine. &amp;lt;br /&amp;gt;&lt;br /&gt;
(0) L&#039;implication des clients et utilisateurs n&#039;est pas comptabilisée. &amp;lt;br /&amp;gt;&lt;br /&gt;
Si l&#039;équipe pédagogique (PO) est disponible physiquement une fois par semaine, les utilisateurs réellement ciblés sont inaccessibles ! &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous obtenons une durée de sprint de 2.3 semaines, arrondie à 2 semaines. &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rétrospectives ===&lt;br /&gt;
Pour les prévisions pour l&#039;application de la méthode Agile, et par rapport aux informations qui nous ont été communiquées, nous retenons ces dates :  &amp;lt;br /&amp;gt;&lt;br /&gt;
Ce sont les dates de fin de chaque sprint, toutes les 2 semaines&lt;br /&gt;
==== mardi 9 octobre 2012 ====&lt;br /&gt;
Pas de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 23 octobre 2012 ====&lt;br /&gt;
Première 15&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; de développement &amp;lt;br /&amp;gt;&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu : prototype de front-end, avec login et liste de produit (JSP) ; EJB basique pour login ; Mise en place d&#039;un accès à une BD &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé : front end JSP OK, EJB ne fnctionnement pas, problèmes techniques ; donc, pas de temps pour la BD &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo : démo fonctionnelle du front-end présentant le login/logout/inscription et une liste de deux produits.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[mardi 30 octobre 2012 : vacances] &amp;lt;br /&amp;gt;&lt;br /&gt;
==== mardi 13 novembre 2012 ==== &lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 27 novembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mardi 11 décembre 2012 ====&lt;br /&gt;
*Rétrospective :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**prévu :  &amp;lt;br /&amp;gt;&lt;br /&gt;
**réalisé :  &amp;lt;br /&amp;gt;&lt;br /&gt;
*Démo :  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nombre d&#039;itérations : 4 &amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Product backlog&#039;&#039;&#039; &amp;lt;br /&amp;gt;&lt;br /&gt;
fonctionnalités &amp;lt;br /&amp;gt;&lt;br /&gt;
N scprints backlog (bonnus : poker planning, estimation, complexité) &amp;lt;br /&amp;gt;&lt;br /&gt;
N sprints planning &amp;lt;br /&amp;gt;&lt;br /&gt;
N demo à la fin du sprint &amp;lt;br /&amp;gt;&lt;br /&gt;
N rétrospectives (thérapie de groupe, ce qui s&#039;est bien/mal passé, ce qui peut être amélioré) &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sapins/code/trunk/ Dépôt SVN code] ==&lt;br /&gt;
&#039;&#039;Ne contient que ce qui est nécessaire à l&#039;application, le code.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [http://svn.code.sf.net/p/ecom2012sdn-doc/code/trunk Dépôt SVN documentation] ==&lt;br /&gt;
&#039;&#039;Contient toute la documentation et les fichiers annexes.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Matériels - Quantité ==&lt;br /&gt;
&lt;br /&gt;
* Item 1&lt;br /&gt;
* Item 2&lt;/div&gt;</summary>
		<author><name>Carameln</name></author>
	</entry>
</feed>