2015-10-29 04:45:40 +00:00
|
|
|
\newpage
|
|
|
|
|
2016-09-15 00:46:46 +00:00
|
|
|
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 !
|
|
|
|
|
2016-09-15 02:27:59 +00:00
|
|
|
Nous allons pour cela ajouter `chronograf` dans notre image.
|
2016-09-15 00:46:46 +00:00
|
|
|
|
|
|
|
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
|
2018-10-03 08:56:13 +00:00
|
|
|
[à cette adresse](https://docs.influxdata.com/chronograf/v1.6/introduction/installation/).
|
2016-09-15 00:46:46 +00:00
|
|
|
|
2015-10-29 04:45:40 +00:00
|
|
|
|
|
|
|
## Script d'init
|
|
|
|
|
2016-09-15 02:27:59 +00:00
|
|
|
Lors du dernier TP, nous avons vu que les conteneurs s'arrêtaient dès que le
|
|
|
|
premier processus du conteneur (celui qui a le PID 1, à la place d'`init`)
|
2016-09-15 00:46:46 +00:00
|
|
|
terminait son exécution, quelque soit le statut de ses éventuels fils.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
Écrivons ce script. Hints : `wait(1)`.
|
2015-10-29 04:45:40 +00:00
|
|
|
|
2016-09-15 00:46:46 +00:00
|
|
|
\vspace{1em}
|
|
|
|
|
|
|
|
Pour vérifier que votre conteneur fonctionne correctement, vous pouvez le
|
|
|
|
lancer :
|
|
|
|
|
2017-10-17 06:29:07 +00:00
|
|
|
<div lang="en-US">
|
2016-09-15 02:27:59 +00:00
|
|
|
```shell
|
2016-09-15 00:46:46 +00:00
|
|
|
docker run --rm -p 10000:10000 mymonitoring
|
|
|
|
```
|
2017-10-17 06:29:07 +00:00
|
|
|
</div>
|
2016-09-15 00:46:46 +00:00
|
|
|
|
|
|
|
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)
|
2015-10-29 04:45:40 +00:00
|
|
|
|
|
|
|
|
|
|
|
## Autorestart
|
|
|
|
|
2016-09-14 20:51:14 +00:00
|
|
|
L'avantage de détruire le conteneur à la mort du père, est que s'il s'agit de
|
|
|
|
notre processus principal et qu'il est seul (par exemple `nginx` pour un
|
|
|
|
conteneur qui délivre des pages web), il va être possible de redémarrer le
|
|
|
|
conteneur automatiquement grâce à la *restart policy* que l'on peut définir au
|
|
|
|
moment du `docker run` :
|
2015-10-29 04:45:40 +00:00
|
|
|
|
2017-10-17 06:29:07 +00:00
|
|
|
<div lang="en-US">
|
2016-09-15 02:27:59 +00:00
|
|
|
```shell
|
2015-10-29 04:45:40 +00:00
|
|
|
docker run -d -p 80:80 --restart=on-failure nginx
|
|
|
|
```
|
2017-10-17 06:29:07 +00:00
|
|
|
</div>
|
2015-10-29 04:45:40 +00:00
|
|
|
|
|
|
|
Il existe trois règles de redémarrage différentes :
|
|
|
|
|
2016-09-14 20:51:14 +00:00
|
|
|
- **`no` :** il s'agit de la règle par défaut. Lorsque l'exécution du conteneur
|
|
|
|
se termine, il n'est pas redémarré.
|
|
|
|
- **`on-failure[:max-retries]` :** redémarre uniquement si le code de sortie du
|
|
|
|
conteneur n'est pas 0. Il est possible de préciser pour cette option le
|
|
|
|
nombre maximum de redémarrage qui sera tenté.
|
|
|
|
- **`always` :** redémarre le conteneur dans tous les cas, quelque soit son
|
|
|
|
code de sortie et indéfiniment.
|
2015-10-29 04:45:40 +00:00
|
|
|
|
2016-09-14 20:51:14 +00:00
|
|
|
Le script d'init que vous avez réalisé ne tient sans doute pas compte de
|
|
|
|
cela. Mais plein de gens ont cette problématique et l'application `supervisor`
|
2015-10-29 04:45:40 +00:00
|
|
|
répond parfaitement à notre problématique !
|
|
|
|
|
|
|
|
|
2017-10-15 20:49:27 +00:00
|
|
|
## `HEALTHCHECK`
|
|
|
|
|
|
|
|
|
2015-10-29 04:45:40 +00:00
|
|
|
## `supervisor`
|
|
|
|
|
2016-09-14 20:51:14 +00:00
|
|
|
Première étape : installer `supervisor`, le paquet se trouve dans les dépôts.
|
2015-10-29 04:45:40 +00:00
|
|
|
|
2016-09-14 20:51:14 +00:00
|
|
|
L'étape suivante consiste à remplir puis copier le fichier de configuration
|
|
|
|
dans le conteneur. Vous allez devoir écraser dans votre conteneur le fichier
|
2016-09-15 00:46:46 +00:00
|
|
|
`/etc/supervisord.conf` pour démarrer à la fois `chronograf` et `influxdb`.
|
2015-10-29 04:45:40 +00:00
|
|
|
|
|
|
|
Vous pouvez vous aider de la documentation disponible à :
|
|
|
|
<http://supervisord.org/configuration.html>
|
|
|
|
|
|
|
|
|
2016-09-15 00:46:46 +00:00
|
|
|
La même procédure de test que précédemment peut être suivie.
|
|
|
|
|
|
|
|
|
|
|
|
## Rendu
|
2015-10-29 04:45:40 +00:00
|
|
|
|
2016-09-15 00:46:46 +00:00
|
|
|
Nous ne toucherons plus à cette image, placez-la dans un dossier
|
|
|
|
`mymonitoring`.
|