Browse Source

Finish the report

master
Skia 3 years ago
parent
commit
1ae948388d
7 changed files with 127 additions and 17 deletions
  1. BIN
      Couvertures.odg
  2. 127
    17
      Rapport.tex
  3. BIN
      pix/nagios.png
  4. BIN
      pix/nagios_pb.png
  5. BIN
      pix/sap.png
  6. BIN
      pix/sap_landscape.jpg
  7. BIN
      pix/sappin.png

BIN
Couvertures.odg View File


+ 127
- 17
Rapport.tex View File

@@ -15,9 +15,12 @@
\usepackage[T1]{fontenc}
\usepackage{color}
\usepackage{fancyhdr}
\usepackage{listings}
%Options: Sonny, Lenny, Glenn, Conny, Rejne, Bjarne, Bjornstrup
\usepackage[Bjornstrup]{fncychap}
\usepackage[procnames]{listings}
\usepackage[colorlinks=true,linkcolor=black]{hyperref}
\usepackage{pdfpages}
\usepackage{titlesec, blindtext, color}

%pdf metadata
\hypersetup{
@@ -34,8 +37,25 @@
pdfkeywords={},
}


\definecolor{keywords}{RGB}{200,0,90}
\definecolor{comments}{RGB}{0,0,113}
\definecolor{red}{RGB}{160,0,0}
\definecolor{green}{RGB}{0,150,0}

\lstset{
language=Python,
basicstyle=\ttfamily\small,
numbers=left,
numberstyle=\color{red},
keywordstyle=\color{keywords},
commentstyle=\color{comments},
stringstyle=\color{green},
showstringspaces=false,
}

%inner meta
\title{}
\title{Monitoring et inventaire au sein de l'ERP SAP}
\author{Florent JACQUET}
\date{\today}

@@ -290,6 +310,12 @@ global.
et multi-fonctionnelle en font un outil d'une grande flexibilité pouvant s'adapter à la majorité des entreprises. De
plus, si des fonctionnalités viennent à manquer il est toujours possible de les développer à l'aide de son environnement
de développement et du language \emph{ABAP} qu'il intègre.
\begin{figure}[H]
\centering
\includegraphics[width=1\linewidth]{sap.png}
\caption{SAP}
On voit ici l'architecture modulaire de SAP, et son universalité dans une entreprise.
\end{figure}

\subsection{SAP chez \textbf{Faurecia}}
\subsubsection{Déploiement et historique}
@@ -329,10 +355,16 @@ De plus, pour chaque module, plusieurs environnements, c'est à dire plusieurs i
(physique, applicative et données) identique à l’environnement de production
\item[Production] permet de délivrer les fonctionnalités aux utilisateurs
\end{description}
% TODO ajouter landscape \textbf{SAP} en annexe
\vskip 3mm
L'environnement de production étant utilisé en permanence par les utilisateurs finaux, c'est celui qui est le plus
critique, contrairement aux autres, qui ne servent globalement que pour des tests.
\begin{figure}[H]
\centering
\includegraphics[width=1\linewidth]{sap_landscape.jpg}
\caption{Landscape SAP}
\label{landscape}
On voit ici clairement les différents modules et leurs environnement au sein de SAP.
\end{figure}

\section{FCS Business Continuity}
\subsection{Origine}
@@ -369,7 +401,7 @@ Ce projet apporte plusieurs avantages non négligeables:
\item Libérer le site d'Hagenbach des contraintes liées à un Data Center
\end{itemize}

\subsection{Ma position dans \textbf{FCS}BC}
\subsection{Ma position dans \textbf{FCS BC}}
\par
Mon rôle dans le projet Business Continuity a été d'assurer le suivi du monitoring pendant les phases de déplacement (ou
\textbf{move}) des environnements \textbf{SAP}. J'étais une sorte de point central entre Murielle, qui coordonnait le projet,
@@ -434,7 +466,7 @@ open-source, en ayant juste la contrainte d'un second laptop sous \emph{Windows}

\par
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
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
vague, mais cela représente tout de même bien la réalité, puisque l'ensemble des tâches qui m'ont été attribuées
tournaient autour de ce fameux outil, \textbf{SAP}, hormis les trois premières semaines.

\subsection{Les débuts}
@@ -557,14 +589,16 @@ environnements.
\section{Vérifier le monitoring}
\subsection{Bien utiliser \emph{Nagios}} % Attention au rangement dans les bonnes sous-parties
\par
En réalité, ce n'est pas directement \emph{Nagios} que nous utilisions, mais simplement une de ses nombreuses interface Web .
En réalité, ce n'est pas directement \emph{Nagios} que nous utilisions, mais simplement une de ses nombreuses interface
Web\footnote{Voir impression d'écran en Annexe \ref{nagios_web_ui}, page \pageref{nagios_web_ui}}.
Cette interface facilite grandement la surveillance en fournissant principalement un moteur de recherche très puissant
permettant de trouver rapidement n'importe quelle machine, voire même des groupes de machines, pour ensuite accéder à
des informations très détaillées sur les services de monitoring appliqués à cette ou ces machine(s).
\par
Je devais donc suivre le \textbf{paysage}, ou \textbf{landscape}, c'est à dire une sorte de plan de \textbf{SAP}, et
chercher environnement par environnement la liste des machines, en contactant à chaque fois les personnes responsable du
dit environnement pour vérifier que l'ensemble existait bel et bien dans \emph{Nagios}.
Je devais donc suivre le \textbf{paysage}, ou \textbf{landscape}\footnote{Voir Figure \ref{landscape}, page
\pageref{landscape}}, c'est à dire une sorte de plan de \textbf{SAP}, et chercher environnement par environnement la
liste des machines, en contactant à chaque fois les personnes responsable du dit environnement pour vérifier que
l'ensemble existait bel et bien dans \emph{Nagios}.
\par
Lorsqu'une anomalie était détectée, elle pouvait être de plusieures sorte, avec différents niveaux de criticité:
\begin{description}
@@ -588,6 +622,13 @@ Lorsqu'une anomalie était détectée, elle pouvait être de plusieures sorte, a
peut être gênant quand on cherche une information précise, car cette dernière peut alors être éronnée. On
cherche alors auprès de toutes les équipes concernées pour trouver qui possède les informations manquantes.
\end{description}
\begin{figure}[H]
\centering
\includegraphics[width=0.7\linewidth]{nagios_pb.png}
\caption{Exemple de problèmes dans Nagios}
On voit ici que toutes les machines fonctionnent sauf \emph{HADR\_SAP\_FW1} et \emph{WWFCSUNIA067} qui sont tombées.
On voit aussi qu'elles ont toutes au moins un problème concernant un de leurs services.
\end{figure}

\subsection{Redmine, puis \emph{MosaiC}}
\par
@@ -605,7 +646,7 @@ période que j'ai commencé à développer \emph{Sappin}.
C'est au travers de ces deux outils que j'ai fait remonté les demandes de modifications de \emph{Nagios} pour assurer un
monitoring optimal pendant les phases de \textbf{move}.

\subsection{La communication: mail et IM}
\subsection{La communication: email et messagerie instantanée}
\par
La communication était une partie très importante de mon travail. En effect il me fallait en permanence contacter les
différents responsables de tel ou tel service afin d'obtenir les informations là où elles se trouvaient. Par conséquent,
@@ -714,11 +755,11 @@ automatique par défaut avec \emph{SQLalchemy}, et qu'il n'y a absoluement aucun
l'utiliser.
\par
J'ai pu définir mes objets, de manière simple, avec juste une classe \textbf{Module}, une classe \textbf{Environment},
et une classe \textbf{Host}. Je les ai mis dans une relation arborescente les uns avec les autres, et j'avais là ma
logique: il suffisait de faire une requête récupérant l'ensemble des informations, des les trier et de les ranger, et à
partir de là, on pouvait faire la plupart des requêtes sans même avoir à passer par \emph{Nagios}. Il suffisait
simplement de mettre une fois la base de données à jour, avec \emph{Livestatus}, puis on pouvait requêter autant de fois
que l'on voulait, et très rapidement, les données en local.
et une classe \textbf{Host}\footnote{Voir en annexe \ref{python_class}, page \pageref{python_class}}. Je les ai mis dans une relation
arborescente les uns avec les autres, et j'avais là ma logique: il suffisait de faire une requête récupérant l'ensemble
des informations, des les trier et de les ranger, et à partir de là, on pouvait faire la plupart des requêtes sans même
avoir à passer par \emph{Nagios}. Il suffisait simplement de mettre une fois la base de données à jour, avec
\emph{Livestatus}, puis on pouvait requêter autant de fois que l'on voulait, et très rapidement, les données en local.

\subsubsection{Générer un affichage correct}
\par
@@ -840,10 +881,79 @@ toujours un très bon souvenir.
\par \url{http://flask.pocoo.org/}
\item Documentation du moteur de template \emph{Jinja2}
\par \url{http://jinja.pocoo.org/}
\item Documentation du serveur Web \emph{Apache} pour \emph{Windows}
\par \url{https://httpd.apache.org/docs/2.4/fr/platform/windows.html}
\item \emph{Git} pour \emph{Windows}
\par \url{http://git-scm.com/download/win}
\item \emph{Python 3.5} pour \emph{Windows}
\par \url{https://www.python.org/downloads/release/python-351/}
\end{itemize}

\chapter*{Annexes}
\addcontentsline{toc}{chapter}{Annexes}
\appendix
\addtolength{\textheight}{60mm}
\part*{Annexes}
\addtolength{\topmargin}{-50mm}
\definecolor{gray75}{gray}{0.75}
\newcommand{\hsp}{\hspace{20pt}}
\titleformat{\chapter}[block]{\Huge\bfseries}{\thechapter\hsp\textcolor{gray75}{|}\hsp}{0pt}{\Huge\bfseries}[\vskip -2em]

\chapter{Interface de Nagios}
\label{nagios_web_ui}
\begin{figure}[H]
\centering
\includegraphics[width=0.8\textheight,angle=90]{nagios.png}
\caption{Interface Web de Nagios}
\end{figure}

\chapter{Interface de Sappin}
\label{sappin_web_ui}
\begin{figure}[H]
\centering
\includegraphics[width=0.8\textheight,angle=90]{sappin.png}
\caption{Interface Web de Sappin}
\end{figure}

\chapter{Classe python}
\label{python_class}
\begin{figure}[H]
\begin{lstlisting}[language=python,morekeywords={True,False}]
host_to_host = Table("host_to_host", Base.metadata,
Column("cluster_id", Integer, ForeignKey("host.host_id"), primary_key=True),
Column("node_id", Integer, ForeignKey("host.host_id"), primary_key=True)
)
class Host(Base):
__tablename__ = 'host'
host_id = Column(Integer, primary_key=True, nullable=False)
groups = Column(String(30), ForeignKey("env.name"))
name = Column(String(30), unique=True, nullable=False,
default="UNKNOWN HOST")
address = Column(String(30), nullable=False, default="0.0.0.0")
alias = Column(String(30), nullable=True, default="")
state = Column(String(10), nullable=False, default=0)
num_services = Column(Integer, nullable=False, default=0)
num_services_crit = Column(Integer, nullable=False, default=0)
num_services_unknown = Column(Integer, nullable=False, default=0)
num_services_warn = Column(Integer, nullable=False, default=0)
scheduled_downtime_depth = Column(Integer, nullable=False, default=0)
_json_extra = Column(Text, nullable=True)
_last_time = Column(DateTime, server_default=func.now(),
onupdate=func.current_timestamp())
_location = Column(String(4), nullable=True)
_nodes = relationship("Host",
backref="_clusters",
secondary=host_to_host,
primaryjoin=host_id==host_to_host.c.cluster_id,
secondaryjoin=host_id==host_to_host.c.node_id,
)
\end{lstlisting}
\caption{Classe python}
\end{figure}
\par
On voit bien que l'on définit les attributs de la classe à la manière des colonnes d'une table dans une base de
donnée.
\par
On met aussi ici en place une relation \emph{Many To Many} entre les Hosts à l'aide de la table de jointure définie
juste avant: \emph{host\_to\_host}.

\includepdf[pages={2}]{Couvertures.pdf}


BIN
pix/nagios.png View File


BIN
pix/nagios_pb.png View File


BIN
pix/sap.png View File


BIN
pix/sap_landscape.jpg View File


BIN
pix/sappin.png View File


Loading…
Cancel
Save