Work on TP2

This commit is contained in:
nemunaire 2016-09-15 02:46:46 +02:00
parent c11a3b9132
commit b171ee869d
10 changed files with 295 additions and 141 deletions

BIN
tutorial/2/chronograf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -10,21 +10,52 @@ L'intérêt est de permettre à chaque conteneur d'effectuer une tâche
générique, de manière à pouvoir être réutilisé pour d'autres projets générique, de manière à pouvoir être réutilisé pour d'autres projets
dans le futur. Par exemple, notre conteneur InfluxDB pourra être dans le futur. Par exemple, notre conteneur InfluxDB pourra être
utilisé pour stocker des relevés de métriques systèmes ou des logs. utilisé pour stocker des relevés de métriques systèmes ou des logs.
Grafana peut également afficher davantage d'informations ou combiner Chronograf peut être connecté à d'autres serveurs afin de corréler les
les informations de plusieurs bases distinctes. métriques, ...
## Séparer le `Dockerfile` ## Séparer le `Dockerfile`
Commençons par séparer notre `Dockerfile` en deux : dans une partie Commençons par séparer notre `Dockerfile` en deux : dans une partie
nous allons garder la partie InfluxDB, de l'autre la partie Grafana. nous allons garder la partie InfluxDB, de l'autre la partie Chronograf.
Il va vous falloir créer deux dossiers distincts, il en faut un par Il va vous falloir créer deux dossiers distincts, il en faut un par
`Dockerfile`. `Dockerfile` : réutilisez l'image `influxdb` créée précédemment et créez le
dossier pour l'image `chronograf`.
Profitez en pour rajouter les Data Volume Container, si vous ne l'avez Profitez en pour rajouter les Data Volume Container, si vous ne l'avez
pas fait dans la partie précédente ! pas fait dans la partie précédente !
\vspace{1em}
Pour tester la bonne marche de vos conteneurs, vous pouvez le lancer votre
conteneur chronograf avec la commande suivante (en considérant que votre
conteneur influxdb de la première partie est toujours lancé).
```
docker run --rm --link YOUR_INFLUX_CNTR_NAME:influxdb chronograf
```
Remplacez `YOUR_INFLUX_CNTR_NAME` par le nom du conteneur qui fait tourner
votre influxdb. En créant ce lien, `chronograf` sera capable de contacter une
machine `influxdb` (la partie après les `:`).
### Visualiser les données dans `chronograf`
Avant d'arrêter `telegraf` et nos conteneurs pour passer à une nouvelle étape,
prenez le temps d'afficher les données que vous avez collecté depuis le début
du TP.
Après avoir ajouté le serveur (en remplaçant `localhost` proposé par défaut par
`influxdb` issue du *link*), ajouter deux visualisations avec les requêtes
suivantes :
```
SELECT used, available, cached FROM mem WHERE tmpltime()
SELECT mean(usage_idle) FROM cpu WHERE tmpltime() GROUP BY time(20s), cpu
```
## Automatiser la construction et le lancement ## Automatiser la construction et le lancement
@ -37,33 +68,50 @@ conteneurs, définissez à la racine de votre projet un fichier
les paramètres d'exécution. les paramètres d'exécution.
``` ```
influxdb: version: '2'
... services:
grafana: influxdb:
build: grafana/ ...
image: nginx chronograf:
ports: build: grafana/
- "3000:3000" image: nginx
volumes: ports:
- ./:/tmp/toto - "3000:3000"
links: volumes:
- influxdb - ./:/tmp/toto
links:
- influxdb
``` ```
Ce fichier est un condensé des options que vous passez habituellement Ce fichier est un condensé des options que vous passez habituellement
au `docker run`. au `docker run`.
L'exemple ci-dessus est à adapter largement, consultez L'exemple ci-dessus est à adapter largement, consultez
<http://docs.docker.com/compose/yml/> pour une liste exhaustive des <http://docs.docker.com/compose/compose-file/> pour une liste exhaustive des
options que vous pouvez utiliser. options que vous pouvez utiliser.
Notez toutefois la présence d'une ligne `version` ; il ne s'agit pas de la
version de vos conteneurs, mais de la version du format de fichier
docker-compose qui sera utilisé. Sans indication de version, la version
originale sera utilisée.
Une fois que votre `docker-compose.yml` sera prêt, lancez tout d'abord Une fois que votre `docker-compose.yml` sera prêt, lancez tout d'abord
`docker-compose build` pour commencer la phase de build de tous les `docker-compose build` pour commencer la phase de build de tous les
conteneurs listés dans le fichier. conteneurs listés dans le fichier.
Une fois le build terminé, vous pouvez lancer la commande suivante pour admirer le résultat : Une fois le build terminé, vous pouvez lancer la commande suivante et admirer
le résultat :
``` ```
docker-compose up docker-compose up
``` ```
Encore une fois, testez la bonne connexion entre chronograf (accessible sur
<http://localhost:10000>) et influxdb.
## Rendu
Pour cette partie, vous devrez rendre la dernière itération de votre
`docker-compose.yml`.

View file

@ -1,12 +1,12 @@
\newpage \newpage
# Premiers pas Premières étapes
================
Dans un premier temps, nous allons créer une image Docker comme si l'on Dans un premier temps, nous allons créer une image Docker comme si l'on
réalisait l'installation sur une machine classique : en suivant les méthodes réalisait une installation sur une machine classique : en suivant une
habituelles, mais tout en écrivant notre recette dans le `Dockerfile`. La recette. La machine (notre première image Docker) contiendra tout le nécessaire
machine (notre première image Docker) contiendra tout le nécessaire pour faire pour faire fonctionner notre service.
fonctionner notre service.
## Les caches ## Les caches
@ -25,10 +25,9 @@ n'est pas modifiée dans le `Dockerfile`, le cache sera utilisé.
Il est possible de ne pas utiliser le cache et de relancer toutes les étapes du Il est possible de ne pas utiliser le cache et de relancer toutes les étapes du
`Dockerfile` en ajoutant l'option `--no-cache` au moment du `docker build`. `Dockerfile` en ajoutant l'option `--no-cache` au moment du `docker build`.
Les couches du cache peuvent être partagées entre plusieurs conteneur, c'est Les couches du cache peuvent être partagées entre plusieurs conteneur,
ainsi que vous pouvez partager facilement une plus grosse partie du système de c'est ainsi que vous pouvez partager facilement une plus grosse partie
fichiers (afin de profiter du cache du système de fichiers au moment de du système de fichiers.
l'exécution du conteneur).
\vspace{1.5em} \vspace{1.5em}
@ -36,10 +35,10 @@ Pour profiter du cache, il faut donc placer les étapes les plus génériques (q
seraient susceptibles d'apparaître dans plusieurs conteneur), en haut du seraient susceptibles d'apparaître dans plusieurs conteneur), en haut du
`Dockerfile`. `Dockerfile`.
Commençons donc notre `Dockerfile` : choisissez une image de base pour votre Commençons donc notre `Dockerfile` : choisissez une image de base pour
`FROM`, et indiquez votre nom avec l'instruction `MAINTAINER`, pour indiquez votre `FROM`, et indiquez votre nom avec l'instruction `MAINTAINER`,
que c'est vous qui maintenez ce conteneur (si d'autres gens ont besoin qu'il pour indiquez que c'est vous qui maintenez ce conteneur (si d'autres
faut le mettre à jour par exemple). gens ont besoin de vous avertir pour le mettre à jour par exemple).
## `RUN` ou script ? ## `RUN` ou script ?
@ -48,20 +47,24 @@ faut le mettre à jour par exemple).
Ensuite vient l'installation d'InfluxDB. Le paquet n'est pas disponible dans Ensuite vient l'installation d'InfluxDB. Le paquet n'est pas disponible dans
les dépôts. La les dépôts. La
[procédure décrite sur le site](https://influxdb.com/docs/v0.9/introduction/installation.html) [https://docs.influxdata.com/influxdb/v1.0/introduction/installation/#ubuntu-debian](procédure
incite à télécharger le paquet mis à disposition puis à l'installer via `dpkg décrite sur le site) incite à télécharger le paquet mis à disposition puis à
-i`. l'installer via `dpkg -i`.
Deux solutions s'offrent à nous : télécharger le paquet hors du conteneur, le Deux solutions s'offrent à nous :
copier, puis l'installer. Ou faire un `RUN` avec toutes ces opérations (sans
oublier l'installation de `wget`/`curl`). * télécharger le paquet hors du conteneur, le copier, puis l'installer.
* faire un `RUN` avec toutes ces opérations (sans oublier l'installation
préalable de `wget`/`curl`).
La copie étant définitive (supprimer le fichier ne le supprimera pas des La copie étant définitive (supprimer le fichier ne le supprimera pas des
couches où il a pu exister), donc la seconde solution semble préférable (mais couches où il a pu exister), on préférera la seconde méthode, malgré que `wget`
`wget` restera en déchet). restera en déchet. La première méthode aura plus sa place dans un dépôt où les
binaires auront été préalablement compilés, il ne restera plus qu'à les copier
dans le conteneur au bon emplacement.
Écrivez une commande `RUN` qui va télécharger la dernière version d'InfluxDB, Écrivons une commande `RUN` qui va télécharger la dernière version
qui va l'installer et supprimer le fichier. d'InfluxDB, qui va l'installer et supprimer le fichier.
\vspace{1em} \vspace{1em}
@ -69,17 +72,46 @@ qui va l'installer et supprimer le fichier.
bien utilisable : `EXPOSE`, `CMD`, ... bien utilisable : `EXPOSE`, `CMD`, ...
Il est possible que vous ayez à écraser le fichier de configuration via un Il est possible que vous ayez à écraser le fichier de configuration via un
`COPY` (ou de manière plus maline en utilisant `--volume` au moment du `docker `COPY` (ou de manière plus maligne en utilisant `--volume` au moment du `docker
run`, cela fonctionne pas qu'avec les dossiers). Garder la ligne qui vous run`, cela fonctionne pas qu'avec les dossiers). Ou peut-être ferez-vous un
permet de lancer votre serveur web dans un coin, en attendant la partie `ENTRYPOINT` ?
suivante.
### Grafana ### Telegraf
Une fois InfluxDB configuré, nous allons avoir la même réflexion avec Grafana. Telegraf est un programme qui permet de collecter des métriques systèmes. Il
travaille de paire avec InfluxDB pour stocker les valeurs.
De la même manière, téléchargez, installez et supprimez le paquet. Vous pouvez monitorer les métriques de n'importe quelle machine, simplement en
installant *Telegraf* et en lui indiquant l'emplacement de son serveur
InfluxDB. Nous allons installer *telegraf* sur notre machine à l'aide de la
[https://docs.influxdata.com/telegraf/v1.0/introduction/installation/](documentation).
Lors de vos tests, sachez que vous pouvez vous connecter sur grafana avec Ces quelques lignes devraient suffir à lancer la collecte, à condition que
l'utilisateur *admin*, mot de passe *admin*. votre InfluxDB écoute sur le port 8086 local :
```bash
TELEGRAF_VERSION=1.0.0
wget https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
tar xf telegraf-${TELEGRAF_VERSION}_linux_amd64.tar.gz
TELEGRAF_CONFIG_PATH=./telegraf/etc/telegraf/telegraf.conf ./telegraf/usr/bin/telegraf
```
Rendez-vous ensuite dans [http://localhost:8083/](l'interface d'InfluxDB) pour
voir si la collecte se passe bien.
Dans l'interface sélectionnez la base *telegraf* puis explorez les valeurs :
```sql
SHOW MEASUREMENTS
SHOW FIELD KEYS
SELECT usage_idle FROM cpu WHERE cpu = 'cpu-total' ORDER BY time DESC LIMIT 5
```
Laissons tourner `telegraf` afin de constituer un petit historique de valeurs.
## Rendu
Avant de passer à la suite, placez votre `Dockerfile` dans un dossier
`influxdb` (pour le moment il ne contient rien d'autre !).

View file

@ -1,6 +1,7 @@
\newpage \newpage
# Retour sur les bonnes pratiques Retour sur les bonnes pratiques
===============================
Pour chacune des bonnes pratiques ci-dessous, vérifiez que vous les respectez Pour chacune des bonnes pratiques ci-dessous, vérifiez que vous les respectez
bien, faites les modifications nécessaires. bien, faites les modifications nécessaires.
@ -39,9 +40,7 @@ En plus, cela réduira le temps de build et la taille des images produites !
Vous devez trouver l'équilibre idéal entre la lisibilité de votre `Dockerfile` Vous devez trouver l'équilibre idéal entre la lisibilité de votre `Dockerfile`
(qui assure la maintenabilité sur le long-terme) et le nombre de couches (qui assure la maintenabilité sur le long-terme) et le nombre de couches
créées. Le nombre de couches idéal devrait être égal au nombre de branches créées.
distincte partant d'une image de base, afin d'utiliser au mieux le cache du
système de fichiers.
## Ordonnez vos lignes de commandes complexes ## Ordonnez vos lignes de commandes complexes
@ -105,7 +104,7 @@ Il y a un certain nombre de règles à connaître pour bien utiliser ce mécanis
## Concevez des conteneur éphémères ## Concevez des conteneur éphémères
Les conteneurs que vous générez doivent aussi éphémères que possible : ils Les conteneurs que vous générez doivent être aussi éphémères que possible : ils
devraient pouvoir être arrêtés, détruits et recréés sans nécessiter d'étape de devraient pouvoir être arrêtés, détruits et recréés sans nécessiter d'étape de
reconfiguration. La configuration devrait se faire au lancement du conteneur ou reconfiguration. La configuration devrait se faire au lancement du conteneur ou
lors de sa construction. lors de sa construction.

View file

@ -2,17 +2,62 @@
# Installation # Installation
## Docker
Ce TP requiert la dernière version de Docker (1.12). Commencez par vérifier que
vous avez bien cette version :
```
42sh$ docker version
Client:
Version: 1.12.1
API version: 1.24
Go version: go1.7
Git commit: 23cf638
Built:
OS/Arch: linux/amd64
Server:
Version: 1.12.1
API version: 1.24
Go version: go1.7
Git commit: 23cf638
Built:
OS/Arch: linux/amd64
```
Si vous n'avez pas une version assez récente, consultez le premier TP pour
savoir comment installer Docker.
## `docker-compose` ## `docker-compose`
L'équipe en charge de Docker compose met à disposition un binaire contenant Nous allons également avoir besoin de `docker-compose`.
Ce projet ne bénéficie pas d'une intégration au sein du projet Docker et doit
être téléchargé séparément, car originellement, le projet était développé par
une équipe indépendante. S'étant révélé primordiale, ils ont trouvé une place
au sein du projet Docker, mais l'incompatibilité des langages utilisés fait que
`docker-compose` n'est toujours pas intégré dans docker.
### Par le gestionnaire de paquets
Les distributions à jour vous proposeront un paquet `docker-compose` qui
fonctionnera avec la version de Docker qu'ils fournissent.
### Par la distribution binaire
L'équipe en charge de Docker compose met à disposition un exécutable contenant
tous les scripts. Nous pouvons l'installer en suivant la procédure suivante : tous les scripts. Nous pouvons l'installer en suivant la procédure suivante :
``` ```
curl -L https://github.com/docker/compose/releases/download/1.3.3/docker-compose-Linux-x86_64 \ curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-Linux-x86_64 \
> /usr/bin/docker-compose > /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose chmod +x /usr/bin/docker-compose
``` ```
### `pip`
Le projet étant écrit en Python, il est également disponible via `pip`, si vous Le projet étant écrit en Python, il est également disponible via `pip`, si vous
préférez cette méthode. N'oubliez pas de préciser une version compatible avec préférez cette méthode. N'oubliez pas de préciser une version compatible avec
votre version de Docker. votre version de Docker.
@ -25,7 +70,7 @@ Comme avec Docker, nous pouvons vérifier le bon fonctionnement de
``` ```
42sh$ docker-compose --version 42sh$ docker-compose --version
docker-compose version: 1.3.3 docker-compose version: 1.8.0
``` ```
Si vous obtenez une réponse similaire, c'est que vous êtes prêt à commencer le Si vous obtenez une réponse similaire, c'est que vous êtes prêt à commencer le

View file

@ -1,73 +1,50 @@
\newpage \newpage
# Rendu Rendu
=====
## Avis
Dans le courriel que vous enverrez, je serais ravi de connaître votre avis sur
ce cours : aussi bien les choses que vous avez apprécié que celles que vous
n'avez pas aimés.
Cela ne rentrera pas en compte dans la notation, mais permettra d'améliorer ce
cours.
## TP
Rendez le contenu de votre dossier à la dernière étape du TP : avec le
`docker-compose.yml`, ainsi que vos `Dockerfile` et les éventuels fichiers
annexes.
## Projet ## Projet
De la même manière que nous avons réaliser un groupe de conteneurs utilisant Amusez-vous à la piscine, il n'y a pas de projet en plus des exercices fait en
`grafana` et `InfluxDB`, qui permet d'afficher facilement des métriques sous TP !
forme de graphiques, vous allez réaliser, à l'aide des images Docker présentent
sur le hub, une interface web de recherche et de visualisation de logs,
utilisant
[Kibana](https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-4-on-ubuntu-14-04).
Toutes la chaîne d'image Docker est déjà présente sur le hub : En complément de ce TP, vous pouvez jetez un œil à
[logstash](https://hub.docker.com/_/logstash/), [https://docs.docker.com/engine/swarm](Docker Swarm) !
[elasticsearch](https://hub.docker.com/_/kibana/),
[kibana](https://hub.docker.com/_/kibana/).
Le but du projet est donc de réaliser un `docker-compose.yml` permettant
d'avoir un système de centralisation de logs fonctionnels. Vous aurez sans
doute à faire quelques adaptations au niveau des images Docker, au moins pour
des fichiers de configuration, donc il n'y aura sans doute pas que ce fichier à
rendre.
Vous pouvez utiliser comme source de logs les conteneurs du TP, grâce aux ## Modalité de rendu
options `log-driver=gelf` et `log-opt=gelf-address=udp://host:port`, passées
aux `docker run` (ou dans le `docker-compose`).
Côté `logstash`, votre configuration devrait ressembler à ça : Un service automatique s'occupe de réceptionner vos rendus, de faire les
vérifications nécessaires et de vous envoyer un accusé de réception (ou de
rejet).
Ce service écoute sur l'adresse <virli@nemunai.re>, c'est donc à cette adresse
et exclusivement à celle-ci que vous devez envoyer vos rendus. Tout rendu
envoyé à une autre adresse et/ou non signé ne sera pas pris en compte.
## Tarball
Tous les fichiers identifiés comme étant à rendre pour ce TP sont à
placer dans une tarball (pas d'archive ZIP, RAR, ...).
Les réponses aux questions sont à regrouper dans un fichier `questions.txt` à
placer à la racine de votre rendu.
Voici une arborescence type:
``` ```
input { login_x-TP2/questions.txt
tcp { login_x-TP2/docker-compose.yml
port => 4242 login_x-TP2/influxdb
} login_x-TP2/influxdb/Dockerfile
udp { login_x-TP2/influxdb/influxdb.conf
port => 4242 login_x-TP2/chronograf
} login_x-TP2/chronograf/Dockerfile
} login_x-TP2/chronograf/chronograf.conf
login_x-TP2/mymonitoring
output { login_x-TP2/mymonitoring/Dockerfile
elasticsearch { } login_x-TP2/mymonitoring/chronograf.conf
} login_x-TP2/mymonitoring/influxdb.conf
login_x-TP2/mymonitoring/supervisor.conf
``` ```
Vous pourrez ainsi envoyez les logs de Docker sur le port 4242. Ou directement
vos logs syslog :
```
netcat localhost 4242 < /var/log/syslog
```
N'oubliez pas de lire les README associés aux images Docker du hub, ils vous
indiqueront comment utiliser les images et comment leur passer des paramètres.
Bon courage !

View file

@ -1,15 +1,56 @@
\newpage \newpage
# Plusieurs daemons dans un conteneur Plusieurs daemons dans un conteneur
===================================
Notre système de monitoring commence enfin à ressembler à quelque chose. Mais
ce serait tellement plus pratique de voir tous ces tableaux de nombres sous
forme de graphiques !
Nous allons pour cela ajouter `chronograf` dans notre conteneur.
Avant de modifier votre `Dockerfile`, créez un nouveau dossier de rendu :
`mymonitoring`, dans lequel vous recopierez l'état actuel de notre image
`influxdb`.
## Chronograf
Commençons par compléter la commande d'installation existante pour `influxdb`,
afin d'installer simultanément `chronograf`.
La documentation de la procédure est disponible
[https://docs.influxdata.com/chronograf/v1.0/introduction/installation/](à
cette adresse).
## Script d'init ## Script d'init
Lors du dernier TP, nous avons vu que les conteneurs étaient détruits dès que Lors du dernier TP, nous avons vu que les conteneurs étaient détruits dès que
le premier processus du conteneur (celui qui a le PID 1, à la place d'`init`) le premier processus du conteneur (celui qui a le PID 1, à la place d'`init`)
terminer son exécution, quelque soit le statut de ses éventuels fils. terminait son exécution, quelque soit le statut de ses éventuels fils.
Pour lancer tous nos daemon, nous allons donc besoin d'écrire un script qui Pour lancer tous nos daemons, nous avons donc besoin d'écrire un script qui
lance puis attend que les deux deamons aient terminés de s'exécuter lance puis attend que les deux deamons aient terminés de s'exécuter.
Écrivons ce script. Hints : `wait(1)`.
\vspace{1em}
Pour vérifier que votre conteneur fonctionne correctement, vous pouvez le
lancer :
```
docker run --rm -p 10000:10000 mymonitoring
```
Puis accéder à chronograf : <http://localhost:10000/>. Donnez un nom à votre
configuration, puis cliquez sur *Add*. Les paramètres préremplis dans le
formulaire sont corrects.
Vous devriez obtenir l'écran suivant (notez la partie `Status: Online, v1.0.0`) :
![Chronograf configuré](chronograf_setup.png)
## Autorestart ## Autorestart
@ -45,14 +86,16 @@ Première étape : installer `supervisor`, le paquet se trouve dans les dépôts
L'étape suivante consiste à remplir puis copier le fichier de configuration L'étape suivante consiste à remplir puis copier le fichier de configuration
dans le conteneur. Vous allez devoir écraser dans votre conteneur le fichier dans le conteneur. Vous allez devoir écraser dans votre conteneur le fichier
`/etc/supervisord.conf` pour démarrer à la fois `grafana` et `influxdb`. `/etc/supervisord.conf` pour démarrer à la fois `chronograf` et `influxdb`.
Vous pouvez vous aider de la documentation disponible à : Vous pouvez vous aider de la documentation disponible à :
<http://supervisord.org/configuration.html> <http://supervisord.org/configuration.html>
## C'est parti ! La même procédure de test que précédemment peut être suivie.
Votre conteneur doit maintenant être parfaitement fonctionnel : vous devriez
pouvoir lancer votre script de monitoring et voir apparaître vos données dans ## Rendu
Grafana !
Nous ne toucherons plus à cette image, placez-la dans un dossier
`mymonitoring`.

View file

@ -1,20 +1,25 @@
% Virtualisation légère -- TP n^o^3 ---
% Pierre-Olivier *Nemunaire* Mercier title: Virtualisation légère -- TP n^o^ 2
% Jeudi 29 octobre 2015 subtitle: Aller plus loin avec Docker
author: Pierre-Olivier *Nemunaire* Mercier
institute: EPITA
date: Jeudi 15 septembre 2016
...
Durant ce troisième TP, nous allons approfondir l'utilisation de Docker ! Durant ce deuxième TP, nous allons approfondir l'utilisation de Docker !
Tous les éléments de ce TP (exercices et questions) sont à rendre à Tous les éléments de ce TP (exercices et questions) sont à rendre à
<virli@nemunai.re> au plus tard le jeudi 12 novembre 2015 à 23 h 42. Consultez la <virli@nemunai.re> au plus tard le jeudi 6 octobre 2016 à 8 h 42. Consultez la
dernière section de chaque partie pour plus d'information sur les éléments à dernière section de chaque partie pour plus d'information sur les éléments à
rendre. Vous pouvez placer les réponses aux questions dans le corps du courriel rendre.
ou dans un fichier joint.
En tant que personnes sensibilisées à la sécurité des échanges électroniques, En tant que personnes sensibilisées à la sécurité des échanges électroniques,
vous devriez m'envoyer vos rendus signés avec votre clef PGP. Pensez à vous devrez m'envoyer vos rendus signés avec votre clef PGP. Pensez à
[me](http://pgp.mit.edu/pks/lookup?op=vindex&search=0x842807A84573CC96) faire [me](http://pgp.mit.edu/pks/lookup?op=vindex&search=0x842807A84573CC96) faire
signer votre clef et n'hésitez pas à signer votre clef et n'hésitez pas à
[faire signer votre clef](http://www.meetup.com/fr/Paris-certification-de-cles-PGP-et-CAcert/). [faire signer votre clef](http://www.meetup.com/fr/Paris-certification-de-cles-PGP-et-CAcert/).
Vous pouvez utiliser l'adresse <signcheck@nemunai.re> pour savoir si vous vous
y prenez correctement.
\hypersetup{linkcolor=black} \hypersetup{linkcolor=black}
\tableofcontents \tableofcontents

View file

@ -1,11 +1,16 @@
# But du TP But du TP
=========
Aujourd'hui, nous allons terminer notre système de monitoring commencé lors du Aujourd'hui, nous allons réaliser un système de monitoring.
premier TP.
Le résultat attendu d'ici la fin du TP, est un groupe de conteneurs Le résultat attendu d'ici la fin du TP, est un groupe de conteneurs
indépendants les uns des autres, réutilisables en fonction des besoins. indépendants les uns des autres, réutilisables en fonction des besoins.
Les données collectées seront envoyés vers Nous collecterons les données d'utilisation de votre machine avec
[InfluxDB](https://influxdb.com/), puis elles seront affichées sous [https://www.influxdata.com/time-series-platform/telegraf/](Telegraf). Ces
forme de graphique dans [Grafana](http://grafana.org/). données seront envoyés vers
[https://www.influxdata.com/time-series-platform/influxdb/](InfluxDB), puis
elles seront affichées sous forme de graphique dans
[https://www.influxdata.com/time-series-platform/chronograf/](Chronograf).
![Dashboard de l'utilisation CPU et mémoire sur Chronograf](chronograf.png)