 Je vais vous présenter un petit projet qu'on a fait dans l'entrepouche travail à Sourafalé Nukz avec Christian. Donc en fait, on a créé un site web qui s'appelle Québec 24-7. Je vous ai expliqué d'abord pourquoi, vous avez présenté le site après, l'architecture, vous allez voir c'est pas mal cool. La roadmap, ce qu'on pense faire après, ce qu'il faut savoir c'est que tout est open source donc vous pouvez contribuer. Si vous avez des idées de quoi superviser au Québec, il ne faut pas hésiter. Et puis j'ai fait un petit exemple de comment contribuer au projet. Donc en fait, le projet initial c'était de monter une démonstration de Schinken et Adagios. En fait, moi je suis leader de pratique à Sourafalé Nukz au niveau de la supervision. Donc je suis spécialisé entre Adagios mais surtout Schinken qui est un Adagios en piton. Et donc je voulais monter juste dans une site de démonstration et puis avec mon stagiaire on s'est dit ok mais c'est un peu nul juste de faire ça. Et donc on s'est basé sur un site qui est fait par les gens qui font Adagios. Adagios c'est l'interface pour Adagios écrit en Django et c'est des Islandais qui font ça. Et eux ils ont créé une page web qui monitor l'Islande. Ils monitorent entre autres les volcans, l'état des hôpitaux, le service transport en commun, les sites de rencontre. Il y a toutes sortes de choses donc on est parti cette idée et on a fait ça pour le Québec. Donc en gros je vous montre à quoi ça ressemble. Donc c'est disponible sur kebec247.org, ça ressemble à ça. Donc en fait on a fait le site aussi pour qu'il puisse fiter sur un téléphone ou sur une tablette. Donc aujourd'hui on monitor quelques services entre autres les DNS du Canada, du Québec pardon. Quelques EFI aussi, quelques sites de rencontre. Par exemple nous avons Québec rencontre et réseau contact. Voilà. Qu'est-ce qu'on a certaines affaires au niveau de l'écologie, donc le pollen, un dissuvé, des choses comme ça. Et puis si je reviens ici. Donc en fait comment ça fonctionne, on supervise les infrastructures au Québec. On va chercher les informations sur différentes sites web. La plupart du temps on va faire du scrapping parce que les sites n'ont pas d'API. Donc là on essaie de rentrer en contact à certains sites pour qu'ils nous donnent des accès à certains d'API. Ça fonctionne aussi avec trois codes de couleurs, donc vert, orange et rouge. Donc ça c'est basé sur le fonctionnement interne de Najus. Donc OK, warning, critique. Donc là on a défini un peu arbitrairement les états. Donc vous pouvez voir que généralement les hôpitaux sont tout le temps rouges. Donc on a une petite carte avec la liste des hôpitaux. Vous voyez qu'en ce moment on a 24 hôpitaux à plus de 100% d'occupation. Et on a quand même 25, il faut le souligner, à moins de 80% de taux d'occupation. Donc ça en fait c'est le taux d'occupation des civières. Donc toutes ces données là sont publiques. Il suffit de se connecter sur les sites des hôpitaux puis on va pouvoir les avoir. Donc aujourd'hui on supervise tous ces données là. Donc ça va aussi sur les sites des banques. On va essayer aussi de superviser les FAI un peu plus précisément parce qu'actuellement on supervise seulement les sites web. Donc on voudrait vraiment avoir l'état de la connexion chez les huileteurs de Vidiotron, ou de Bell, etc. Qu'est-ce qu'on a ? On a seulement les transports publics de Montréal. On pourrait avoir Québec aussi. La qualité de l'air aussi, on a Montréal. On faudrait qu'on rajoute Québec. Ça ça va être en notre point, savoir si on va couper ou pas. On va créer deux sites, un pour Montréal, un pour Québec et pourquoi pas d'autres villes Ottawa. Ça pourrait être aussi Sherbrooke, Trois-Rivers. Ça on verra après. Donc ça c'est pour ce qui est fait actuellement. Au niveau technique maintenant, on a plusieurs composants. On a Shinkan qui va s'occuper d'aller interroger chaque site web. Et on a l'interface web que vous avez vue qui est basée sur AngularJS. Donc si vous faites du web, vous devez connaître cette techno-là qui est quand même assez sympathique. Et puis on utilise donc Adagios. En fait on l'utilise seulement comme interface entre Shinkan et AngularJS. En fait Adagios fournit l'interface REST. Donc on va taper dessus pour avoir toutes les informations. On a des plugins de supervision. Donc ça c'est des petits scripts Python qui vont l'interroger les sites web qui vont se craper tout ça. On utilise entre autres BeautifulSoup pour les chercher, pour parser le HTML. Et puis comment ça s'appelle Python Request pour faire les requêtes HTTP. Et bientôt on va utiliser un flux DB pour stocker toutes ces données là, toutes l'historique et on va pouvoir avoir des graphs sur le temps. Donc savoir si un hôpital est tout le temps plein ou d'ici à un moment c'est plus un peu plus vide. Il y a des choses qu'on a remarquées déjà qui sont assez rigolettes à voir. Vous en parleriez tout à l'heure. Donc au niveau de l'architecture, comment ça se passe ? On a tous les éléments bleus sont dans un docker en fait. Donc aujourd'hui si vous allez sur le guide, vous avez juste à cloner le guide. Vous faites un make run puis ça va construire tout à partir du docker. Et puis vous avez déjà votre instance de KBedon 4.7 sur votre machine qui roule, en une seule commande. La seule dépendance c'est docker. Ensuite donc les plugins, donc les petits scripts vont les interroger les sites. Donc si ils sont rouge, si ils sont en critique, ça va envoyer l'information, ça va les afficher dans l'interface web. La partie en violet, un flux DB, pas encore là, là on travaille dessus, on travaille surtout sur l'intégration, avec Adagios qui va être après affiché dans KBedon 4.7. C'est Philippe, ici présent, qui travaille là-dessus. Donc la roadmap, en ce moment même, qui est ici, travaille lui sur un plugin pour Hydro KBek. Il y a un mois de ça je pense, on a eu une grosse panne à Montréal sur Hydro KBek, une grosse coupure d'électricité, il y a eu 200 000 abonnés coupés je pense. Donc on a eu l'idée de rajouter ça. Donc là on va voir le nombre de pannes en direct sur toutes les régions du Québec. Donc ça, ça va être prêt, je pense, dans quelques semaines. Donc l'utilisation d'un flux DB, on va se regarder toute l'historique, tous les événements dans une base de données un flux DB. Il reste encore quelques bugs CSS, donc ça, si vous êtes à l'aise en CSS, n'hésitez pas à contribuer. C'est assez simple, mais bon, moi je suis pas un spécialiste du CSS. Ensuite, si vous avez des idées ou des nouvelles vérifications à l'aise, on pensait au prix de l'essence, au trafic, je sais pas après à quoi vous pouvez, vous avez sûrement des merdidés. Et ensuite, c'est ça qu'on se posait sur la roadmap, la question qu'on se posait, c'est est-ce qu'on va découper par ville, parce que les gens de Québec, généralement, ils n'ont aucun intérêt pour la situation des métro de Montréal, puis nous en Montréal, les transports de Québec, pareil, on n'a pas vraiment d'intérêt là-dessus. Ok, là je vais vous montrer un peu comment contribuer à Québec 24-7. Donc, en gros, qu'est-ce qu'on peut faire déjà à remonter les bugs, si vous voyez quelque chose sur le site, il y a, je vais le montrer ici, il y a un lien en bas avec le GitHub. En cliquant là-dessus, vous arrivez directement sur le site, donc vous pouvez soumettre un issue assez rapidement. Ensuite, donc vous pouvez corriger le CSS, proposer des idées, ouvrir des issues sur le GitHub, si vous avez des idées de nouvelles vérifications et puis aussi coder des plugins. Donc ça, je vais vous montrer comment faire. Avant de commencer à coder, il faut juste un environnement de développement, donc c'est assez simple. On installe juste docker.io et make. Généralement, on a make, docker peut-être pas. Donc ça, c'est l'exemple pour sur une débienne. Si vous avez Fedora ou autre, il faut utiliser yam install. Vous clenez le dépôt, j'aurais dû mettre guide aussi en dépendance, mais bon. Vous clenez le dépôt, vous faites un make.dev et le make.dev va vous mettre directement dans l'environnement docker et vous avez juste ensuite à démarrer Shinken et Apache. Vous vous connectez là-dessus et ça marche. Donc vous arrivez en fait directement sur une interface, si je reviens directement sur l'interface comme ceci, sur cette interface là. Et ensuite, vous n'avez plus qu'à créer un nouveau plugin. Donc pour créer une nouvelle vérification, il faut créer un plugin, vous allez voir un petit script Python assez rapide à faire. Un script qui va générer la configuration pour Shinken, ajouter les deux fichiers, enfin les fichiers qu'on modifie au docker et ensuite faire une poudre request. Donc comment ça se passe? Là, je prends l'exemple de check hydro kebek, qui est en train de faire en ce moment. Donc, on a fait aussi un autre dépôt sur GitHub où il y a beaucoup d'exemples de plugins. Donc on peut se baser là-dessus. Il y a une librairie qui permet de faire des plugins, ce qui permet de simplifier vraiment le code. Un plugin, c'est quoi? C'est un script Python qui doit retourner une string sur la sortie standard. Donc en gros, vous faites un print avec le texte que vous voulez. Donc par exemple, ok, avec un texte et ce texte là sera affiché par exemple si on va ici. C'est le texte qui est affiché ici, ok, tirez 16. Et ensuite, un code de sortie, donc en pitant 6.exe avec ok, avec 0 pour ok, 1 pour warning, 2 pour critique et 3 ou autre pour si votre plugin par exemple fait une exception, il va sortir avec un autre code de sortie. Donc là, le warning et critique par exemple, si on prend le plugin de check hydro kebek, on va dire que si on a plus de 10% de clients coupés du réseau, on va tomber en warning, si on a plus de 20%, on va tomber en critique. Donc, est-ce que c'est assez gros? On va grossir un petit peu, voilà. Plugins et donc je vais vous montrer le plugin de hydro kebek. Donc en fait, vous avez juste à importer la libre qu'on a créée pour simplifier le développement de plugins. Vous créez un objet plugin qui érite de base plugins. Il y a des petites variables à définir. Les arguments que le plugin va prendre, par exemple, le h pour le help, la région pour quelle région, Montréal, kebek, etc., qu'on veut superviser. L'état du warning par exemple, l'état du critique et enfin le seuil de warning, le seuil de critique. Et puis après, alors, second, après on va descendre et on a le run, alors c'est un peu difficile et ici en fait, ce que fait le plugin, il va aller chercher cette page là. Donc je ne sais pas si vous connaissez cette page. Donc en fait, on a une page fournie par les drogues kebikes pas mal en temps réel, donc vous voyez c'est 19 heures, je ne sais pas qu'il est actuellement 19h27, donc moins d'une 30 minutes où on a le nombre de clients coupés par région, le nombre de clients coupés du réseau par région avec le nombre d'interruptions, le nombre de panne en fait. Donc ce que fait le plugin, il va aller chercher cette page là, il va le parser par région et il va donner un pourcentage ainsi que le nombre de clients coupés. Donc on va avoir vraiment deux statistiques et on va baser bien sûr le warning et le critique sur les pourcentages. Donc juste pour finir là-dessus, donc en gros le plugin ici voilà en gros on fait tout notre, je vais passer sur le détail technique de qu'est-ce que fait le plugin vraiment, donc il va chercher, il pars la page et il compute des choses et ici vous voyez, il prépare les messages qui vont être printés sur la sortie standard donc le warning, le critique, ici on a notre calcul, enfin notre comparation on compare le warning avec le warning ici avec le pourcentage de panne, ici ça va être le critique ici voilà, ici avec le critique donc en fonction de ça on va sortir notre message de on va ficher notre message de sortie et ensuite on a juste à faire un self.exe avec notre code de sortie ici et notre message je passe aussi là-dessus les pertes d'attaque qui sont pas encore utilisées ça ça va être pour la partie influx db qui n'est pas encore finalisé si on revient ici donc une fois qu'on a fait le plugin, là vous allez voir donc grâce à la lib shinkan si vous vous creusez un peu plus en détail vous allez pouvoir voir que c'est quand même assez simple malgré que je suis passé assez vite ensuite il suffit juste de faire un script qui va générer la configuration pour shinkan qu'est-ce que c'est la configuration qu'on doit avoir c'est en fait vraiment ça il suffit de pouvoir voir un host et un service ça c'est de la configuration de la configuration de la configuration de shinkan il suffit juste de copier ce template là et de changer tout ce qu'il y a en grand donc par exemple pour l'abitibi on va juste mettre ici on a l'utilisation du plugin donc shake hydro kebec on va spécifier la région ça va aller chercher pour ce service-là ça va aller chercher la région et ça va afficher dans kibbenKat7 cette statistique là et puis voilà une fois qu'on a fait ça là je vais passer là-dessus une fois qu'on a fait ça on va ajouter on va ajouter donc le plugin dans l'installation dans le docker file pardon ici dans la pt get install donc on ajoute ce plugin là on ajoute aussi dans le dans le docker file on va ajouter notre notre script de génération de configuration et ensuite on ajoute tout ça donc nos deux modifications notre guide on fait un guide commit on fait un guide push et on fait bien sûr le le pour le request je sais pas si vous êtes vraiment habitué avec docker c'est un peu difficile à prendre en main une fois qu'on a joué deux deux trois heures avec on est assez assez à l'aise normalement on arrive à tout faire à quelques commandes donc c'est c'est quand même assez simple si vous allez sur le guide 11 ok si vous allez sur le guide de kebeck 24 7 ok ici on a bien sûr documenté toute la façon toute toute la procédure pour mettre en place le site et aussi comment contribuer ce que je viens de vous expliquer donc là c'est un peu plus technique aussi et puis après faut pas est-elle nous contacter sur github nous on répond assez vite puis c'est ça donc là tout ce que je expliquais et puis donc deux de choses à voir donc le site de keben 4 7 et puis donc le guide du projet à lui même puis ben voilà c'est à peu près tout j'ai pas voulu rentrer à des techniques si vous voulez je peux rentrer plus il n'y a pas de problème est ce que vous avez des questions