[LaTeX] Mon rapport de stage ST40
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

656 lines
37KB

  1. %%
  2. %
  3. % Skia
  4. % skia@libskia.so
  5. %
  6. %%
  7. \documentclass[a4paper]{report}
  8. %packages
  9. \usepackage[utf8]{inputenc}
  10. \usepackage[francais]{babel}
  11. \usepackage{graphicx}\graphicspath{{pictures/}}
  12. \usepackage{float}
  13. \usepackage[T1]{fontenc}
  14. \usepackage{color}
  15. \usepackage{fancyhdr}
  16. \usepackage{listings}
  17. \usepackage[colorlinks=true,linkcolor=black]{hyperref}
  18. \usepackage{pdfpages}
  19. %pdf metadata
  20. \hypersetup{
  21. unicode=true,
  22. colorlinks=true,
  23. citecolor=black,
  24. filecolor=black,
  25. linkcolor=black,
  26. urlcolor=black,
  27. pdfauthor={Skia <skia@libskia.so>},
  28. pdftitle={},
  29. pdfcreator={pdftex},
  30. pdfsubject={},
  31. pdfkeywords={},
  32. }
  33. %inner meta
  34. \title{}
  35. \author{Florent JACQUET}
  36. \date{\today}
  37. \begin{document}
  38. \includepdf[pages={1}]{Couvertures.pdf}
  39. \tableofcontents
  40. \chapter*{Introduction}
  41. \addcontentsline{toc}{chapter}{Introduction}
  42. \chapter*{Remerciements}
  43. \addcontentsline{toc}{chapter}{Remerciements}
  44. \chapter{Faurecia}
  45. \section{Un groupe mondial}
  46. \subsection{Historique}
  47. \par
  48. Si \textbf{Faurecia} est aujourd'hui un groupe de dimension mondiale, c'est avant tout grâce à son passé. Ce groupe fait
  49. suite aux associations successives de plusieurs autres entreprises, qui ont toutes évolué dans leur domaine pour devenir
  50. des leaders.
  51. \par
  52. À l'origine une filiale de \textbf{Peugeot}, le groupe \textbf{ECIA} (Équipements et Composants pour l'Industrie
  53. Automobile), créé en 1987, fabrique des échappements, des sièges, des éléments d'intérieur, ou encore des blocs avant.
  54. En 1997, \textbf{ECIA} rachète le groupe \textbf{Faure}, alors leader européen dans tout ce qui concerne les sièges, et
  55. c'est la fusion des deux noms qui donne naissance à "Faurecia".
  56. \par
  57. Par la suite, \textbf{Faurecia} acquiert la société \textbf{Sommer-Allibert} en 2000, spécialiste de l'aménagement
  58. intérieur des véhicules. Cette société était déjà la fusion des sociétés \textbf{Sommer} et \textbf{Allibert}, qui
  59. s'étaient rassemblées en 1972 pour se spécialiser dans l'industrie automobile.
  60. \par
  61. \textbf{Faurecia} continue de s'agrandir après cela en rachetant différents groupes, comme \textbf{EMCON Technologies},
  62. spécialiste de l'échappement, en 2010, ou encore des activités de \textbf{Plastal} en 2012, qui produit des équipements
  63. d'extérieur et des produits de carosserie.
  64. \par
  65. Ce n'est donc pas le fruit du hasard si aujourd'hui, \textbf{Faurecia} se retrouve leader mondial sur bon nombres de
  66. marchés spécialisés en ce qui concerne l'équipement automobile. Il s'agit de l'évolution sur de nombreuses années de
  67. savoir-faire précis qui se sont développés en même temps que l'industrialisation française, mais qui ont su s'exporter,
  68. se renouveler, et se maintenir à la pointe dans chacun de leur domaine d'expertise.
  69. \subsection{Quelques chiffres}
  70. \par
  71. Il peut être interessant de voir quelques chiffres pour mieux se représenter l'impact de \textbf{Faurecia} au niveau
  72. mondial dans le secteur de l'automobile.
  73. \par
  74. Présent dans 34 pays, avec plus de 330 sites de production, la société n'a pas de mal à traiter directement avec des
  75. constructeurs du monde entier.
  76. \par
  77. L'Europe se place comme le premier marché de \textbf{Faurecia}, mais les Amériques et l'Asie sont aujourd'hui des
  78. secteurs en pleine expansion:
  79. \begin{description}
  80. \item[Europe:] \hfill \\
  81. \begin{itemize}
  82. \item 56\% des ventes totales du Groupe
  83. \item 55 200 collaborateurs
  84. \item 151 sites de production / 15 centres de R\&D
  85. \end{itemize}
  86. \vskip 1.5em
  87. \item[Amérique du Nord:] \hfill \\
  88. \begin{itemize}
  89. \item 25\% des ventes totales du Groupe
  90. \item 20 400 collaborateurs
  91. \item 39 sites de production / 6 centres de R\&D
  92. \end{itemize}
  93. \vskip 1.5em
  94. \item[Asie:] \hfill \\
  95. \begin{itemize}
  96. \item 14\% des ventes totales du Groupe
  97. \item 15 200 collaborateurs
  98. \item 54 sites de production / 6 centres de R\&D
  99. \end{itemize}
  100. \vskip 1.5em
  101. \item[Amérique du Sud et le reste du monde:] \hfill \\
  102. \begin{itemize}
  103. \item 5\% des ventes totales du Groupe
  104. \item 8 700 collaborateurs
  105. \item 27 sites de production / 3 centres de R\&D
  106. \end{itemize}
  107. \end{description}
  108. \subsection{Présentation des activités}
  109. \par
  110. Les activités de \textbf{Faurecia} sont au nombre de quatre. Ces \emph{Business Groups} sont tous des domaines
  111. d'expertise dans lesquel l'entreprise est leader du marché mondial.
  112. \subsubsection{Emissions Control Technologies}
  113. \par
  114. Les composants et systèmes d'échappements:
  115. \begin{itemize}
  116. \item catalyseurs
  117. \item systèmes de dépollution
  118. \item lignes d'échappement complètes
  119. \item silencieux
  120. \item collecteurs
  121. \end{itemize}
  122. \par
  123. Cette activité est présente dans 24 pays avec 77 sites de production et 7 centres de R\&D.
  124. \subsubsection{Automotive Seating}
  125. \par
  126. Les sièges automobile:
  127. \begin{itemize}
  128. \item armatures
  129. \item mécanismes et moteurs
  130. \item matelassures
  131. \item coiffes et accessoires
  132. \item systèmes électroniques et pneumatiques
  133. \end{itemize}
  134. \par
  135. Cette activité est présente dans 24 pays avec 77 sites de production et 12 centres de R\&D.
  136. \subsubsection{Interior Systems}
  137. \par
  138. L'intérieur des véhicules:
  139. \begin{itemize}
  140. \item planches de bord et consoles centrales
  141. \item cockpits
  142. \item panneaux et modules de portes
  143. \item produits et modules acoustiques
  144. \item pièces de décoration
  145. \end{itemize}
  146. \par
  147. Cette activité est présente dans 23 pays avec 85 sites de production et 8 centres de R\&D.
  148. \subsubsection{Automotive Exteriors}
  149. \par
  150. Structures et carroseries:
  151. \begin{itemize}
  152. \item pièces de carrosserie peinte (pare-choc, ailes, hayon\ldots)
  153. \item module de blocs avant (face avant technique/structurelle, groupe moto-ventilateur\ldots)
  154. \item pièces de structure e, composite (planchers, structure de toit, système d’absorption de crash\ldots)
  155. \end{itemize}
  156. \par
  157. Cette activité est présente dans 9 pays avec 32 sites de production et 9 centres de R\&D.
  158. \section{Le centre technique de Seloncourt}
  159. \par
  160. Construit en 1998, le Centre Technique de Seloncourt servait à l'origine comme plateforme de tests des différents
  161. produits Faurecia. On y trouvait entre autre une catapulte pour tester les sièges, mais aussi du benchmarking et de
  162. l'analyse de la concurrence.
  163. \par
  164. En 2001, le site devient un centre informatique, accueillant plusieurs services, dont le Centre de Support Informatique
  165. de \textbf{Faurecia} jusqu'en 2014, mais aussi les équipes Système, Application de Production, Applications
  166. Just-In-Time, ou encore des Centres de Compétence Windows, et même AS/400!
  167. \section{Mon service: Global Infrastructure and Systems Operations}
  168. \subsection{Un service de GIS}
  169. \par
  170. L'informatique est, au sein de \textbf{Faurecia}, un service transversal et central. Tout les autres services en ont
  171. besoin, et cela permet de maintenir une cohérence entre les différents Business Groups au niveau des méthodes et des
  172. outils informatiques.
  173. \par
  174. Ce service global est assuré par GIS (Group Information System), qui est composé de plus de 1100 personnes réparties au
  175. travers le monde, pour assurer une disponibilité 24H/24. Deux types de services existent et collaborent au sein de GIS:
  176. les services centraux et les services locaux.
  177. \par
  178. Les services locaux sont en charge de l'informatique sur chaque site. En revanche, les services centraux peuvent être
  179. répartis sur plusieurs sites, et sont en charge de la gestion, l'exploitation, le support, et tout ce qui grative autour
  180. des applications utilisées à grande échelle par le groupe, comme les réseaux, la messagerie, l'ERP, les applications de
  181. finance, de gestion des programmes clients, ou encore de la sécurité.
  182. \subsection{Rôle dans Faurecia}
  183. \par
  184. GISO (Global Infrastructure and Systems Operations) est le service dont je dépendais pendant mon stage. Il est
  185. responsable de la disponibilité des applications centrales, et de leur sécurité, c'est à dire que les applications dont
  186. GISO est en charge doivent être toujours opérationnelles, sans aucune défaillance visible pour les utilisateurs.
  187. \par
  188. Il doit aussi fournir un support pour ces applications en permanence, tout en étant prêt à réagir en cas de problème, ou
  189. que ce dernier soit dans l'infrastructure. C'est donc une tâche relativement lourde de responsabilité, car cela a des
  190. répercussion sur l'ensemble de la production mondiale de \textbf{Faurecia}.
  191. \subsection{Activités}
  192. \par
  193. Le service GISO est divisé en trois équipes:
  194. \begin{description}
  195. \item[Monitoring] qui assure la surveillance des machines et applications via des outils de monitoring tel
  196. \emph{Nagios}.
  197. \item[Systems] qui gère les infrastructures mise en œuvre pour supporter les applications centrales. Cela comporte
  198. par exemple les serveurs, physiques ou virtuels, les systèmes de clusters, le réseaux, etc...
  199. \item[Applications] qui gère les applications que les utilisateurs des sites de production et R\&D vont utiliser,
  200. comme par exemple l'ERP \emph{SAP}.
  201. \end{description}
  202. \chapter{Context du stage}
  203. \section{SAP}
  204. \subsection{Qu'est-ce qu'un ERP?}
  205. \par
  206. Un ERP (Enterprise Resource Planning) est un progiciel, c'est à dire un ensemble de logiciels n'en constituant qu'un
  207. seul, et capable de répondre au besoin d'une entreprise dans autant de domaines qu'il a de modules. Les plus courants de
  208. ces modules sont généralement les achats, les stocks, la production, les ventes, la distribution, les salaires, la
  209. comptabilité, les finances et la trésorerie.
  210. \par
  211. Pour faire simple, l'ERP est l'application centrale entre les très nombreux et divers services d'une entreprise. Les
  212. ouvriers sur les chaînes de fabrication, les comptables, les ingénieurs de recherche et développement, et beaucoup
  213. d'autre personnes sont amené à utiliser l'ERP pour synchroniser toutes les informations à partir d'un outil unique et
  214. global.
  215. \par
  216. SAP (Systems, Applications and Products for data processing) est un des ERP les plus connus. Son architecture modulaire
  217. et multi-fonctionnelle en font un outil d'une grande flexibilité pouvant s'adapter à la majorité des entreprises. De
  218. plus, si des fonctionnalités viennent à manquer il est toujours possible de les développer à l'aide de son environnement
  219. de développement et du language ABAP qu'il intègre.
  220. \subsection{SAP chez Faurecia}
  221. \subsubsection{Déploiement et historique}
  222. \par
  223. Le déploiement de SAP au sein de Faurecia remonte à 2009, avec le lancement du projet FCS (Faurecia Core System).
  224. L'application est mise en place dans un centre de données informatiques en Allemagne, à Hagenbach (HGB). L'entreprise
  225. bénéficie alors d'un ERP commun à toutes les usines, soit plus de 183 sites à travers le monde, pour environ 41500
  226. utilisateurs quotidiens.
  227. \par
  228. Les conséquences de l'utilisation de SAP sont nombreuses, en bien comme en mal. Il apporte certes, entre autre,
  229. l'avantage d'être centralisé, c'est à dire que tout le monde a le même outil, et on évite ainsi les problèmes de
  230. synchronisation de production, mais en revanche, cela apporte un point très critique pour la gestion informatique de cet
  231. ERP. En effet, la moindre indisponibilité ralenti, voir stoppe la production, ce qui empêche alors de livrer les
  232. clients, et a donc des conséquences financières directes.
  233. \subsubsection{Architecture}
  234. \par
  235. La quasi totalité des modules SAP existants sont utilisés chez Faurecia:
  236. \begin{description}
  237. \item[ECC] logistique, gestion comptable et ressources humaines
  238. \item[PI/PO] échange de fichiers (clients/fournisseurs en interne et en externe)
  239. \item[BW/BI4] reporting \& consolidation de données
  240. \item[SRM] achats
  241. \item[CPS] ordonnanceur des traitements informatiques
  242. \item[Portal] portail informatique permettant les connexions utilisateurs
  243. \item[VPSX] impression des documents
  244. \item[SolMan] gestion des comptes utilisateurs et outil de surveillance applicative
  245. \item[Archiving] gestion de l’archivage des données
  246. \item[HANA] accélérateur d’accès aux données
  247. \end{description}
  248. \vskip 7mm
  249. \par
  250. De plus, pour chaque module, plusieurs environnements, c'est à dire plusieurs instances, sont déployés:
  251. \begin{description}
  252. \item[Développement] permet de développer de nouvelles fonctionnalités
  253. \item[Simulation/Qualité] permet de valider les nouveaux développements
  254. \item[Pré-production] permet de tester et valider avant la mise en production les développements dans un contexte
  255. (physique, applicative et données) identique à l’environnement de production
  256. \item[Production] permet de délivrer les fonctionnalités aux utilisateurs
  257. \end{description}
  258. % TODO ajouter landscape SAP en annexe
  259. \vskip 3mm
  260. L'environnement de production étant utilisé en permanence par les utilisateurs finaux, c'est celui qui est le plus
  261. critique, contrairement aux autres, qui ne servent globalement que pour des tests.
  262. \section{FCS Business Continuity}
  263. \subsection{Origine}
  264. \par
  265. \textbf{FCS Business Continuity} (FCS BC) est le projet sur lequel j'ai travaillé pendant mon stage. Il a été démarré en Juin 2015,
  266. à la suite de plusieurs incidents au niveau de SAP. Ces incidents étaient d'ordre technique, liés principalement aux
  267. serveurs, et la versions des logiciels utilisés dessus. La décision fût donc prise de mettre en place une sécurisation
  268. de l'ERP, et le projet FCS BC fûr confié à Murielle.
  269. \subsection{Objectifs du projet}
  270. \par
  271. Il a pour but de supprimer les activités informatiques centrales du site de Hagenbach pour les transférer à Marcoussis
  272. (EDC), et de sécuriser les environnements SAP. Cela passe par plusieurs points critiques:
  273. \begin{itemize}
  274. \item Transférer les environnements SAP hébergés à Hagenbach dans le Data Center de Marcoussis
  275. \item Mettre en place une séparation physique et logique des environnements transférés entre les différentes régions
  276. géographiques de Faurecia (Europe/Asie/Amérique/Central)
  277. \item Déplacer les environnements SAP hors production dans le nouveau Data Center de Clichy (depuis HGB et/ou depuis
  278. EDC)
  279. \end{itemize}
  280. \vskip 3mm
  281. \par
  282. Ce projet apporte plusieurs avantages non négligeables:
  283. \begin{itemize}
  284. \item Éviter de perdre tous les modules SAP de toutes les régions en cas de problème en les séparant tant
  285. physiquement que logiquement
  286. \item Réduire les impacts pour les sites de production FAURECIA:
  287. \begin{itemize}
  288. \item Limite du périmètre affecté en cas de problème
  289. \item Être capable de planifier des opérations plus facilement région par région
  290. \end{itemize}
  291. \item Standardiser les serveurs et solutions informatiques SAP quelque soit la région géographique qu'ils supportent
  292. \item Sécuriser la production FAURECIA avec une solution de reprise d'activité disponible dans un Data Center distant
  293. \item Libérer le site d'Hagenbach des contraintes liées à un Data Center
  294. \end{itemize}
  295. \subsection{Ma position dans FCSBC}
  296. \par
  297. Mon rôle dans le projet Business Continuity a été d'assurer le suivi du monitoring pendant les phases de déplacement (ou
  298. \emph{move}) des environnements SAP. J'étais une sorte de point central entre Murielle, qui coordonnait le projet,
  299. l'équipe système qui s'occupait de déplacer les machines, l'équipe SAP qui déplacait les applications une fois que les
  300. nouvelles machines étaient en place, et l'équipe monitoring, qui s'occupait de la configuration de \emph{Nagios}.
  301. \section{Nagios}
  302. \subsection{Le monitoring en général}
  303. \par
  304. Si l'on traduit le terme \emph{monitoring}, on obtient \emph{surveillance}, ou \emph{supervision}. Cela définit
  305. parfaitement le concept, puisque le but de mettre en place un système de monitoring dans une infrastructure est de
  306. surveiller en permanence. Surveiller le réseau, mais aussi les machines, ou encore les services et processus eux-même
  307. qui tournent sur ces dernières.
  308. \par
  309. Surveiller, c'est une chose, mais le rôle du monitoring est aussi beaucoup de prévenir, lorsque quelque chose ne va pas.
  310. Dans ce cas, des mails sont généralement envoyés automatiquement, mais on peut aussi faire beaucoup plus, comme par
  311. exemple déclancher des scripts qui vont tenter d'autoréparer le système.
  312. \subsection{Nagios chez Faurecia}
  313. \subsubsection{Nagios}
  314. \par
  315. \emph{Nagios} est une solution libre et open-source de monitoring apparut en 1996, et qui a depuis fait ses preuves dans
  316. bon nombre d'infrastructures. Il permet de surveiller la (quasi?) totalité des équipements, comme les machines
  317. physiques, virtuelles, mais aussi les routeurs et autre materiel réseau.
  318. \par
  319. Il se découpe généralement en trois partie:
  320. \begin{description}
  321. \item[Le moteur] qui sert de point central, traite la base de donnée, et synchronise le tout.
  322. \item[L'interface web] qui permet de visualiser l'état des système, et d'avoir une vue sur l'ensemble. Il y en a
  323. plusieurs de disponible.
  324. \item[Les plugins] qui sont les petits programmes servant à récupérer les informations de supervision pour les
  325. faire remonter au moteur. Il y en a une centaine officiels, mais on peut très facilement développer les siens
  326. pour superviser quelque chose de particulier.
  327. \end{description}
  328. C'est le logiciel qui a été retenu par \textbf{Faurecia} pour superviser l'ensemble de ses
  329. systèmes à l'échelle mondiale.
  330. \section{Cadre de travail}
  331. \subsection{Un grand open space}
  332. \par
  333. L'open space dans lequel j'ai été installé était relativement grand. En effet il ne comptait pas moins d'une trentaine de
  334. personne. Il était cependant assez calme, malgré les nombreuses discussions téléphoniques qui pouvaient durer plusieurs
  335. heures. Mon bureau était assez grand, et mon siège plutôt confortable, ce qui fait que je n'ai pas eu à souffrir d'une
  336. mauvaise installation, ou d'un mauvais cadre de travail.
  337. \subsection{Du matériel adapté}
  338. J'ai été équipé d'un laptop de prêt au début, installé avec \emph{Windows Seven}, afin de pouvoir dès le début
  339. accéder à ma messagerie fonctionnant avec \emph{Outlook} exclusivement. J'ai gardé ce laptop jusqu'à la fin de mon stage
  340. uniquement pour la messagerie.\\
  341. En revanche, j'ai rapidement demandé à être équipé d'un système \emph{Linux}, et j'ai donc dès le deuxième jour récupéré
  342. la tour d'un ancien stagiaire sur laquelle j'ai pu installer Ubuntu 14.04 avec Awesome WM. Deux mois plus tard, j'ai pu
  343. troquer cette tour contre un laptop beaucoup plus récent, celui d'un salarié qui quittait Faurecia, sur lequel j'ai pu
  344. remettre ce même système.
  345. \par
  346. En bref, j'ai pu travailler avec un environnement et une suite logiciel que j'ai pu choisir à 100\%, totalement libre et
  347. open-source, en ayant juste la contrainte d'un second laptop sous \emph{Windows} pour la messagerie.
  348. \chapter{Travail réalisé}
  349. \section{Les sujets de travail}
  350. \begin{center}
  351. "Assistant gestion de projet FCS (SAP Application)"
  352. \end{center}
  353. \par
  354. Tel était le sujet marqué dans la fiche réponse, et pour lequel une convention a été signée. C'est en réalité assez
  355. vague, mais cela représente tout de même assez bien la réalité, puisque l'ensemble des tâches qui m'ont été attribuées
  356. tournaient autour de ce fameux outil, SAP, hormis les trois premières semaines.
  357. \subsection{Les débuts}
  358. \par
  359. Lorsque je suis arrivé dans l'entreprise, ma tutrice était alors en congés. C'est donc M. Gueutal qui m'a accueilli et
  360. qui m'a présenté aux équipes, fait visité les locaux, décrit le fonctionnement des différents services, en bref, qui m'a
  361. familiarisé avec mon environnement. Mme Mathieu n'étant pas de retour avant trois semaines, j'ai été provisoirement
  362. intégré à l'équipe de Jean-Noël, le PLM, afin de réaliser diverses tâches sans grand rapport les unes avec les autres,
  363. mais qui toutes allégaient un peu le travail de l'équipe, et surtout, qui me permettaient de me familiariser avec mon
  364. environnement.
  365. \par
  366. Il m'a principalement été demandé d'automatiser une procédure de génération de "Monthly report", c'est à dire aller
  367. collecter des données diverses pour en faire des statistiques et des graphiques utilisables, le tout très rapidement.
  368. C'est un travail qui est réalisé une fois par mois, et qui permet de présenter au management un résumé chiffré des
  369. actions des 30 derniers jours. Ce travail est fastidieux, car on a besoin de se connecter à de nombreuses pages Web, et
  370. d'en extraire des données sous la forme en général de tableaux Excel. La contrainte était de ne pas avoir aux bases de
  371. données de façon direct, et l'on devait alors simuler les actions de l'utilisateur dans le naviguateur, ce que j'ai
  372. réalisé à l'aide de la bibliothèque \emph{Selenium}, et de son module pour \emph{Python}.
  373. \par
  374. Ce projet a marché pendant une petite période, de l'ordre de quelques semaines, mais par la suite, une mise à jour des
  375. pages Web a cassé toute la démarche du script et l'idée fût abandonnée. De plus, avec le départ de Jean-Noël pour un
  376. autre service, et le retour de Murielle, j'ai été affecté à d'autres missions.
  377. \par
  378. Par ailleurs, les autres tâches que j'ai eu à faire ont été plus courtes, mais néanmoins pas inintéressantes.
  379. \par
  380. J'ai eu à personnaliser la page d'accueil de l'instance de \emph{Etherpad}, un outil libre d'édition de texte collaboratif dont
  381. une instance venait d'être déployée.
  382. \par
  383. J'ai également réalisé deux petits scripts \emph{Python} à l'aide de \emph{Fabric}, une bibliothèque elle aussi libre servant à lancer
  384. facilement des commandes shells depuis \emph{Python}, que ce soit sur la machine locale, ou bien à distance à l'aide d'SSH. Ces
  385. scripts servaient à automatiser la création de machines virtuelles dans \emph{VirtualBox} et de les convertir en environnement
  386. \emph{Vagrant}, afin de pouvoir rapidement réaliser des fichiers d'environnement virtuels à jour lors de la sortie de nouvelles
  387. versions des systèmes \emph{Ubuntu} et \emph{Cent OS}.
  388. \subsection{Première mission à long terme}
  389. \par
  390. Lorsque Murielle m'a pris en charge, j'ai commencé à travailler sur ma première mission à long terme. Il s'agissait de
  391. servir de point centrale entre trois équipe.
  392. Premièrement, celle qui gérait le projet FCS Business Continuity, c'est à dire Murielle elle même, entre autres.
  393. Venaient ensuite les équipes systèmes qui gèraient les machines ciblées par le projet FCS.
  394. Enfin, il y avait les équipes monitoring, basées en Chine, mais dont le responsable était mon voisin de bureau, et dont
  395. le rôle était de gérer la configuration de l'outil Nagios afin d'assurer le monitoring de ce que le système mettait en
  396. place.
  397. \par
  398. Mon rôle là dedans était d'observer ce que Nagios monitorait réellement, de me renseigner sur ce qu'il y avait à
  399. monitorer et qui ne l'était pas, et de faire réagir les bonnes personnes en conséquence. En général, le schéma était
  400. toujours le même. Je constatais que quelque chose n'était pas monitoré, ou était mal monitoré. Je contactais donc la
  401. personne du système en charge de cette machine afin soit qu'elle me transmettre les informations manquantes, et je
  402. créais ensuite un ticket pour les équipes chinoises, soit qu'elle fasse elle-même le ticket dans le cas où il y aurait
  403. des informations trop complexes pour être relayées correctement.
  404. \par
  405. Cette première mission me familiarisa beaucoup avec ce qu'était SAP, et l'environnement gigantesque qui en découlait. Je
  406. découvrais aussi les différents problèmes qui faisaient perdre beaucoup de temps, notamment le manque cruel d'un
  407. inventaire des machines, commun aux différentes équipes. C'est ce qui m'a mené par la suite à faire évoluer un peu le
  408. sujet de mon stage.
  409. \subsection{Seconde mission à long terme}
  410. \par
  411. Lorsque j'ai eu passé un certain temps dans l'interface de Nagios, à traquer les défauts, les manques, et les surplus
  412. d'informations, j'ai commencé à chercher comment je pourrais automatiser tout cela. Je me suis déjà renseigné à propos
  413. d'une interface qui me permettrait de faire des requêtes dans la base de donnée du monitoring, et on m'a dirigé vers
  414. Livestatus, un module pour Nagios qui fourni une API semblable à du SQL, et que je pouvais requêter comme je le
  415. souhaitais.
  416. \par
  417. J'ai donc commencé par un petit script s'utilisant en ligne de commande qui me servait à classer les machines trouvées
  418. sur Nagios, en les triant par environnements SAP. Cela fonctionnait bien, mais j'étais le seul à savoir m'en servir, et
  419. je constatais que certaines questions que l'on me posait avaient leur réponse facilement à travers ce petit script.
  420. \par
  421. Il a donc fallu réfléchir à un moyen de rendre ma petite base de donnée accessible facilement, tant à des personnes
  422. techniques, que parfois à des gens dont le corp de métier n'est pas l'informatique. Quoi de mieux qu'une interface Web
  423. pour arriver à cela!
  424. \par
  425. Ma seconde mission a donc été de développer cette interface et de la rendre la plus ergonomique possible. J'ai même peu
  426. à peu abandonné la ligne de commande, puisqu'elle ne suivait plus les dernières fonctionnalités. Début Janvier, il m'a
  427. même été demandé d'installer cette interface sur un serveur dédié afin de continuer à la faire fonctionner après mon
  428. départ, ce qui fût plutôt gratifiant.
  429. \section{Rôles et objectifs des travaux}
  430. \subsection{Concernant le monitoring}
  431. \par
  432. Pour cette tâche, les objectifs étaient simples, mais c'est la tâche elle-même qui était délicate, pas sur le plan
  433. technique, mais plus au niveau des responsabilités. Le but était de s'assurer que pendant les phases de déplacement des
  434. environnement SAP, le monitoring soit toujours correctement assuré.
  435. Il y avait plusieurs cas quand je suis arrivé:
  436. \begin{itemize}
  437. \item Des environnements déjà déplacés, et il fallait alors s'assurer que Nagios avait suivit le mouvement et
  438. monitorait donc les nouvelles machines tout en ayant supprimé les anciennes.
  439. \item Des environnements en cours de déplacement, qu'il fallait donc monitorer deux fois: la vieille instance, et la
  440. nouvelle, sans qu'il y ait de conflits, sur les noms de machines par exemple.
  441. \item Des environnements qui ne seraient pas déplacés, les plus facile, puisque normalement, le monitoring était
  442. déjà en place. J'ai cependant eu parfois quelques correctifs à faire.
  443. \end{itemize}
  444. \par
  445. La difficulté résidait donc dans le fait de ne pas se tromper lorsque l'on faisait une requête. Il fallait d'une part
  446. s'assurer que la requête avait bien lieu d'être, puis la créer en faisant attention à bien mettre l'ensemble des
  447. informations nécéssaires. En cas d'erreur, cela pouvait mener au mieux à une requête inutile, au pire à un service
  448. complet qui se serait retrouvé sans monitoring. Cela n'est heureusement jamais arrivé, mais la criticité des requêtes
  449. m'a forcé à beaucoup de communication avec les personnes concernées afin d'être sûr de toujours avoir les bonnes
  450. informations.
  451. \subsection{Objectif de l'outil d'inventaire}
  452. \par
  453. J'ai pu remarqué que lorsque je cherchais à me documenter sur les environnement SAP, il était très difficile, voire
  454. impossible d'obtenir une liste précise des machines. L'inexistence à travers plusieurs équipe d'un inventaire commun
  455. rendait la tâche particulièrement difficile, puisqu'il fallait toujours aller chercher les informations là où elles se
  456. trouvaient, et pas toujours là où l'on s'y attend.
  457. \par
  458. On m'avait demandé, lorsque l'on m'a chargé de vérifier le monitoring, de construire en même temps un diaporama
  459. Powerpoint présentant chaque environnement, et contenant toutes les machines dans chacun d'eux, avec un certain nombre
  460. d'information. Mais le problème que j'ai constaté d'un tel document, est que d'une part, il n'est pas dynamique, et donc
  461. qu'il devra être maintenu à la main, et d'autre part, qu'il n'est pas centralisé, ce qui engendrera rapidement des
  462. différences de version chez chacune des personnes possédant le document.
  463. \par
  464. L'objectif de faire l'inventaire était donc clair: il fallait que je concoive un outil très simple à utiliser, construit
  465. sur une base de donnée dynamique se mettant à jour automatiquement, qui soit centralisé, et qui permettrait aux
  466. différentes équipes SAP d'accéder à tout moment et rapidement à la plupart des informations de base concernant les
  467. environnements.
  468. \section{Déroulement}
  469. \subsection{Vérifier le monitoring}
  470. \subsubsection{Bien utiliser Nagios} % Attention au rangement dans les bonnes sous-parties
  471. \par
  472. En réalité, ce n'est pas directement Nagios que nous utilisions, mais simplement une de ses nombreuses interface Web .
  473. Cette interface facilite grandement la surveillance en fournissant principalement un moteur de recherche très puissant
  474. permettant de trouver rapidement n'importe quelle machine, voire même des groupes de machines, pour ensuite accéder à
  475. des informations très détaillées sur les services de monitoring appliqués à cette ou ces machine(s).
  476. \par
  477. Je devais donc suivre le \emph{paysage}, ou \emph{landscape}, et chercher environnement par environnement la liste des
  478. machines, en contactant à chaque fois les personnes responsable du dit environnement pour vérifier que l'ensemble
  479. existait bel et bien dans Nagios.
  480. \par
  481. Lorsqu'une anomalie était détectée, elle pouvait être de plusieures sorte, avec différents niveaux de criticité:
  482. \begin{description}
  483. \item[Critique] \hfill \\
  484. Lorsqu'une machine est sensé exister, mais est introuvable. Cela la rend totalement
  485. invisible aux yeux du monitoring, et on ne peut absoluement pas savoir quand cette machine a un problème,
  486. excepté en allant voir manuellement.
  487. \item[Critique] \hfill \\
  488. La machine est trouvable, mais elle s'affiche en rouge, et le ping échoue. Cela signifie
  489. généralement que la machine a subit un déplacement mais que le monitoring n'a pas été mis à jour. Il faut donc
  490. rapidement l'équipe systèmes pour trouver qui contrôle la machine et lui demander de transmettre les
  491. informations de base la concernant, comme son nom et son adresse IP, afin de régulariser au plus vite.
  492. \item[Peu critique] \hfill \\
  493. On voit la machine en vert, et celle-ci répond au ping, mais un grand nombre de ses
  494. services sont rouges. Cela signifie qu'elle a subit un important changement d'architecture pendant le
  495. déplacement, et que les services à monitorer ont changé. Il faut donc contacter l'équipe applicative afin de
  496. savoir ce qu'il font tourner dessus, et donc demander à l'équipe monitoring de suivre les bons services.
  497. \item[Très peu critique] \hfill \\
  498. La machine est correctement monitorée, mais on s'appercoit qu'elle est rangée
  499. dans le mauvais groupe, ou que les commentaires sur cette machine sont incomplets. Ce n'est pas grave, mais cela
  500. peut être gênant quand on cherche une information précise, car cette dernière peut alors être éronnée. On
  501. cherche alors auprès de toutes les équipes concernées pour trouver qui possède les informations manquantes.
  502. \end{description}
  503. \subsubsection{Redmine, puis MosaiC}
  504. \par
  505. \emph{Redmine} et \emph{MosaiC} sont les bugs-trackers utilisé dans le projet FCS-BC. Redmine était présent au début,
  506. puis le changement vers MosaiC a été opéré en Novembre.
  507. \paragraph{Redmine} est un outil libre de bug tracking et gestion de projet, intégrable facilement avec le gestionnaire
  508. de révision Git, et qui permettait de facilement trier les issues entre les différents projets. De plus, on pouvait
  509. suivre l'évolution des tickets dans le temps, on faisant évoluer la priorité, en ajoutant des informations si besoin, le
  510. tout dans une sorte de dialogue avec l'équipe affectée à la résolution du ticket.
  511. \paragraph{MosaiC} est arrivé début Novembre pour remplacer Redmine. Il remplissait moins bien son rôle de bug tracker
  512. puisque c'est un outil de gestion du changement, mais avait une plus grande base de connaissance sur les projets, on
  513. triant jusqu'au niveau de l'environnement dans le projet FCS. Je m'en suis finalement peu servi. En effet, c'est à cette
  514. période que j'ai commencé à développer \emph{Sappin}.
  515. \par
  516. C'est au travers de ces deux outils que j'ai fait remonté les demandes de modifications de Nagios pour assurer un
  517. monitoring optimal pendant les phases de \emph{move}.
  518. \subsubsection{La communication: mail et IM}
  519. \par
  520. La communication était une partie très importante de mon travail. En effect il me fallait en permanence contacter les
  521. différents responsables de tel ou tel service afin d'obtenir les informations là où elles se trouvaient. Par conséquent,
  522. plusieurs moyen de communication ont été mis à ma disposition dès le premier jour de mon stage.
  523. \par
  524. \emph{Microsoft Outlook} était mon client de mail principal, car le système d'utilisateur de \textbf{Faurecia} étant
  525. \emph{Active Directory}, il était très facile de disposer d'une messagerie dans cet outil. De plus, un certain nombre de
  526. plug-in y étaient installé, afin de pouvoir également gérer les conférences téléphoniques, ainsi que les rendez-vous, en
  527. synchronisation avec la liste des salles et le gestionnaire d'emploi du temps de chacun. L'annuaire interne de
  528. \textbf{Faurecia} y était évidemment présent également.
  529. \par
  530. L'autre moyen de communication utilisé était la messagerie instantanée. Le client officiel de Faurecia était
  531. \emph{Spark}, mais étant donnée que tout passait par un serveur \emph{XMPP}, et qu'il s'agit d'un protocol ouvert,
  532. n'importe quel client pouvait faire l'affaire, et j'ai donc utilisé \emph{Gajim}, ce dernier étant plus léger.
  533. \par
  534. Ce type de messagerie avait l'avantage d'être moins formel et beaucoup plus efficace pour poser une simple question à
  535. des personnes que je contactais régulièrement. Elle remplacait presque une discussion orale, avec même l'avantage de
  536. pouvoir transmettre des liens très facilement pour pointer un problème en particulier rapidement, tout en ayant chaque
  537. interlocuteur présent sur sa machine de travail, et ayant dont accès rapidement à ses informations numériques.
  538. % Parler des alertes: demander au bon gugus de vérifier les services présents sur les machines pour le system ou la team
  539. % SAP fasse le ticket en demandant de monitorer les bons services, ce que les chinois règlaient par la suite.
  540. \subsection{Développer un inventaire}
  541. \par
  542. C'était là clairement ma mission la plus technique, d'un point de vue technologique d'une part, et d'un point de vue de
  543. gestion de projet également. En effet, j'ai été sur ce projet en totale autonomie, puisque c'est d'une initiative de ma
  544. part que le projet est parti.
  545. \subsubsection{Identifier le besoin}
  546. \par
  547. Lorsque je m'occupais du monitoring, j'ai remarqué que j'étais souvent confronté aux mêmes problèmes.
  548. \par
  549. Pour commencer, lorsque l'on regarde sur \emph{Nagios}, on peut voir une machine (un \emph{host}), mais on ne sait pas
  550. instantanément où elle est située, d'un point de vue physique, c'est à dire en pratique chez Faurecia, savoir si le
  551. serveur est à Hagenbach, Marcoussis, ou encore ailleurs.
  552. \par
  553. Ensuite, il pouvait arriver d'avoir à trouver toutes les machines qui répondaient à un critère. Un système d'expressions
  554. rationnelles dans l'interface permet d'avoir les filtres les plus fins qui soient, mais ce n'est guère ergonomique, et
  555. on se rend compte en pratique que l'on tri très souvent par module ou par environnement SAP.
  556. \par
  557. Vient alors un autre problème, qui est de savoir qui est responsable de cette machine. Où de manière plus générale, où
  558. sont les ressources concernant cette machine. Dans \emph{Nagios}, une machine est représenté par sont nom et quelques
  559. menues informations, mais surtout par les services qui sont monitorés, et les alertes qui en découlent. Or les alertes
  560. et services ne sont d'aucune utilité quand il s'agit de trouver la personne à contacter pour obtenir des renseignements.
  561. Il n'y avait de mis à disposition qu'un maigre lien vers des procédures d'urgence, ce qui est déjà pas mal, mais on
  562. pouvait faire mieux.
  563. \par
  564. Toutes ces tâches avaient donc besoin d'être simplifiées, ou automatisées quand c'était possible, et le besoin d'une
  565. petite application était là clairement définit.
  566. \subsubsection{La phase de développement}
  567. \par
  568. J'ai commencé la phase de développement en automatisant seulement quelques requêtes pour accéder plus rapidement aux
  569. informations sans avoir à passer par l'interface Web. Cette automatisation passait par l'outil \emph{Livestatus}, un
  570. plugin pour \emph{Nagios} qui fournit un socket sur lequel on peut effectuer des requêtes. Les requêtes se font alors
  571. dans un language, le LQL, dont la syntaxe est proche de HTTP, mais tout en ayant le paradigme du SQL, ce qui permet de
  572. faire des requêtes très puissantes.
  573. \begin{figure}[H]
  574. \centering
  575. \begin{lstlisting}
  576. GET hostsbygroup
  577. Columns: host_name alias address
  578. Filter: host_name ~ FC1
  579. OutputFormat: python
  580. \end{lstlisting}
  581. \caption{
  582. Exemple de requête LQL, permettant de récupérer au format Python, depuis la table \textbf{hostsbygroup}, les
  583. \emph{host\_name}, \emph{alias}, et \emph{address}, de toutes les machines dont le \emph{host\_name} contient
  584. "FC1":
  585. }
  586. \end{figure}
  587. exemple d'utilisation en CLI
  588. description de la transition vers la web UI
  589. à la pêche aux retours user
  590. ajouts de nouvelles fonctionnalitées
  591. la web UI à la fin
  592. \subsubsection{La mise en production}
  593. \chapter*{Conclusion}
  594. \addcontentsline{toc}{chapter}{Conclusion}
  595. \chapter*{Bibliographie}
  596. \addcontentsline{toc}{chapter}{Bibliographie}
  597. \url{http://mathias-kettner.de/checkmk_livestatus.html}
  598. \url{https://docs.python.org/3/}
  599. \url{http://docs.sqlalchemy.org/en/rel_1_0/}
  600. \url{http://flask.pocoo.org/}
  601. \url{http://jinja.pocoo.org/}
  602. \chapter*{Annexes}
  603. \addcontentsline{toc}{chapter}{Annexes}
  604. \includepdf[pages={2}]{Couvertures.pdf}
  605. \end{document}