2017-10-15 20:49:27 +00:00
|
|
|
|
\newpage
|
|
|
|
|
|
2017-10-16 01:10:34 +00:00
|
|
|
|
Lier des conteneurs
|
2021-09-21 09:44:12 +00:00
|
|
|
|
-------------------
|
2017-10-15 20:49:27 +00:00
|
|
|
|
|
2017-10-16 01:10:34 +00:00
|
|
|
|
Avant de voir des méthodes plus automatiques pour déployer toute notre pile
|
|
|
|
|
logicielle TICK, nous allons commencer par mettre en place et lier les
|
|
|
|
|
conteneurs manuellement, de la même manière que nous avons pu le faire avec
|
2021-09-21 09:44:12 +00:00
|
|
|
|
l'interface d'administration du FIC et MySQL. Cela nous permettra de voir les
|
|
|
|
|
subtilités de chaque image, ce qui nous fera gagner du temps pour ensuite
|
|
|
|
|
en faire la description.
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
|
|
|
|
|
2021-09-21 09:44:12 +00:00
|
|
|
|
### Conteneur central : la base de données
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
|
|
|
|
Le premier conteneur qui doit être lancé est la base de données orientée séries
|
2021-09-19 22:19:49 +00:00
|
|
|
|
temporelles :
|
2017-10-16 01:10:34 +00:00
|
|
|
|
[InfluxDB](https://www.influxdata.com/time-series-platform/influxdb/).
|
2019-10-16 01:54:56 +00:00
|
|
|
|
En effet, tous les autres conteneurs ont besoin de cette base de données pour
|
2021-09-19 22:19:49 +00:00
|
|
|
|
fonctionner correctement\ : il serait impossible à *Chronograf* d'afficher les
|
2017-10-16 01:10:34 +00:00
|
|
|
|
données sans base de données, tout comme *Telegraf* ne pourrait écrire les
|
|
|
|
|
métriques dans une base de données à l'arrêt.
|
|
|
|
|
|
|
|
|
|
Afin d'interagir avec les données, InfluxDB expose une
|
|
|
|
|
[API REST](https://fr.wikipedia.org/wiki/Representational_state_transfer)
|
|
|
|
|
sur le port 8086. Pour éviter d'avoir plus de configuration à réaliser, nous
|
2021-09-19 22:19:49 +00:00
|
|
|
|
allons tâcher d'utiliser ce même port pour tester localement :
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2017-10-17 06:29:07 +00:00
|
|
|
|
<div lang="en-US">
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2021-09-19 22:19:49 +00:00
|
|
|
|
docker container run -p 8086:8086 -d --name mytsdb influxdb:1.8
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2017-10-17 06:29:07 +00:00
|
|
|
|
</div>
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
|
|
|
|
Comme il s'agit d'une API REST, nous pouvons vérifier le bon fonctionnement de
|
2021-09-19 22:19:49 +00:00
|
|
|
|
notre base de données en appelant :
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2017-10-17 06:29:07 +00:00
|
|
|
|
<div lang="en-US">
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2018-11-16 01:38:41 +00:00
|
|
|
|
42sh$ curl -f http://localhost:8086/ping
|
|
|
|
|
42sh$ echo $?
|
|
|
|
|
0
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2017-10-17 06:29:07 +00:00
|
|
|
|
</div>
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
Notez que comme nous avons lancé le conteneur en mode détaché (option `-d`),
|
|
|
|
|
nous ne voyons pas les logs qui sont écrits par le daemon. Pour les voir, il
|
|
|
|
|
faut utiliser la commande `docker container logs` :
|
|
|
|
|
|
|
|
|
|
<div lang="en-US">
|
|
|
|
|
```
|
|
|
|
|
docker container logs mytsdb
|
|
|
|
|
```
|
|
|
|
|
</div>
|
|
|
|
|
|
2017-10-16 01:10:34 +00:00
|
|
|
|
Si votre influxdb répond, vous pouvez vous y connecter en utilisant directement
|
2021-09-19 22:19:49 +00:00
|
|
|
|
le client officiel (le binaire s'appelle `influx`) :
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2017-10-17 06:29:07 +00:00
|
|
|
|
<div lang="en-US">
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2021-09-16 01:45:54 +00:00
|
|
|
|
42sh$ docker container run --rm -it --link mytsdb:influxdb influxdb:1.8 influx -host influxdb
|
|
|
|
|
Connected to http://influxdb:8086 version 1.8.9
|
|
|
|
|
InfluxDB shell version: 1.8.9
|
2018-11-16 01:38:41 +00:00
|
|
|
|
> show databases
|
|
|
|
|
name: databases
|
|
|
|
|
name
|
|
|
|
|
---------------
|
|
|
|
|
_internal
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2017-10-17 06:29:07 +00:00
|
|
|
|
</div>
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
|
|
|
|
Si vous aussi vous voyez la table `_internal`, bravo ! vous pouvez passer à la
|
|
|
|
|
suite.
|
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
#### Mais quelle était cette commande magique ? {-}
|
|
|
|
|
|
|
|
|
|
Oui, prenons quelques minutes pour l'analyser ...
|
|
|
|
|
|
|
|
|
|
L'option `--link` permet de lier deux conteneurs. Ici nous souhaitons lancer un
|
|
|
|
|
nouveau conteneur pour notre client, en ayant un accès réseau au conteneur
|
|
|
|
|
`mytsdb` que nous avons créé juste avant. L'option `--link` prend en argument
|
|
|
|
|
le nom d'un conteneur en cours d'exécution (ici `mytsdb`, nom que l'on a
|
|
|
|
|
attribué à notre conteneur exécutant la base de données influxdb via l'option
|
|
|
|
|
`--name`), après les `:`, on précise le nom d'hôte que l'on souhaite attribuer
|
|
|
|
|
à cette liaison, au sein de notre nouveau conteneur.
|
|
|
|
|
|
|
|
|
|
`influx -host influxdb` que nous avons placé après le nom de l'image,
|
|
|
|
|
correspond à la première commande que l'on va exécuter dans notre conteneur, à
|
|
|
|
|
la place du daemon `influxdb`. Ici nous voulons exécuter le client, il
|
|
|
|
|
s'appelle `influx`, auquel nous ajoutons le nom de l'hôte dans lequel nous
|
|
|
|
|
souhaitons nous connecter : grâce à l'option `--link`, le nom d'hôte à utiliser
|
|
|
|
|
est `influxdb`.
|
|
|
|
|
|
|
|
|
|
L'option `--link` peut être particulièrement intéressante lorsque l'on souhaite
|
|
|
|
|
sauvegarder une base, car en plus de définir un nom d'hôte, cette option fait
|
|
|
|
|
hériter le nouveau conteneur des variables d'environnement du conteneur
|
|
|
|
|
auquel elle est liée : on a donc accès aux `$MYSQL_USER`,
|
|
|
|
|
`$MYSQL_PASSWORD`, ...
|
|
|
|
|
|
|
|
|
|
On aurait aussi pu créer un réseau entre nos deux conteneurs (via `docker
|
|
|
|
|
network`), ou bien encore, on aurait pu exécuter notre client `influx`
|
|
|
|
|
directement dans le conteneur de sa base de données :
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2017-10-17 06:29:07 +00:00
|
|
|
|
<div lang="en-US">
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2021-09-19 22:19:49 +00:00
|
|
|
|
42sh$ docker container exec mytsdb influx -execute "show databases"
|
|
|
|
|
name: databases
|
|
|
|
|
name
|
|
|
|
|
---------------
|
|
|
|
|
_internal
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2017-10-17 06:29:07 +00:00
|
|
|
|
</div>
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
Dans ce dernier exemple, nous n'avons pas besoin de préciser l'hôte, car
|
|
|
|
|
`influx` va tenter `localhost` par défaut, et puisque nous lançons la commande
|
|
|
|
|
dans notre conteneur `mytsdb`, il s'agit bien du conteneur où s'exécute
|
|
|
|
|
localement `influxdb`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Exercice : {-}
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
Ajoutez à la ligne de commande de lancement du conteneur les bon(s) volume(s)
|
|
|
|
|
qui permettront de ne pas perdre les données d'influxDB si nous devions
|
|
|
|
|
redémarrer le conteneur. Aidez-vous pour cela de la [documentation du
|
|
|
|
|
conteneur](https://hub.docker.com/_/influxdb).
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
|
|
|
|
|
2021-09-21 09:44:12 +00:00
|
|
|
|
### Collecter les données locales
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
|
|
|
|
Tentons maintenant de remplir notre base de données avec les métriques du
|
2021-09-19 22:19:49 +00:00
|
|
|
|
système. Pour cela, on commence par télécharger *Telegraf* :
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2017-10-17 06:29:07 +00:00
|
|
|
|
<div lang="en-US">
|
2018-11-16 01:38:41 +00:00
|
|
|
|
```bash
|
2021-09-16 01:45:54 +00:00
|
|
|
|
curl https://dl.influxdata.com/telegraf/releases/telegraf-1.19.2_linux_amd64.tar.gz | \
|
2018-11-16 01:38:41 +00:00
|
|
|
|
tar xzv -C /tmp
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2017-10-17 06:29:07 +00:00
|
|
|
|
</div>
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
Puis, lançons *Telegraf* :
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2017-10-17 06:29:07 +00:00
|
|
|
|
<div lang="en-US">
|
2018-11-16 01:38:41 +00:00
|
|
|
|
```bash
|
|
|
|
|
cd /tmp/telegraf
|
2020-09-21 21:48:16 +00:00
|
|
|
|
./usr/bin/telegraf --config etc/telegraf/telegraf.conf
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2017-10-17 06:29:07 +00:00
|
|
|
|
</div>
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
#### Remarque : {-}
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
La configuration par défaut va collecter les données de la machine locale et
|
|
|
|
|
les envoyer sur le serveur situé à <http://localhost:8086>. Ici, cela
|
|
|
|
|
fonctionne parce que l'on a fait en sorte de rediriger le port de notre
|
|
|
|
|
conteneur sur notre machine locale (option `-p`).
|
|
|
|
|
|
|
|
|
|
Et observons ensuite :
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2017-10-17 06:29:07 +00:00
|
|
|
|
<div lang="en-US">
|
2018-11-16 01:38:41 +00:00
|
|
|
|
```bash
|
2021-09-19 22:19:49 +00:00
|
|
|
|
42sh$ docker container run --rm -it --link mytsdb:zelda influxdb:1.8 influx -host zelda
|
2021-09-16 01:45:54 +00:00
|
|
|
|
InfluxDB shell version: 1.8.9
|
2018-11-16 01:38:41 +00:00
|
|
|
|
> show databases
|
|
|
|
|
name: databases
|
|
|
|
|
name
|
|
|
|
|
---------------
|
|
|
|
|
_internal
|
|
|
|
|
telegraf
|
|
|
|
|
|
|
|
|
|
> use telegraf
|
|
|
|
|
Using database telegraf
|
|
|
|
|
|
|
|
|
|
> show measurements
|
|
|
|
|
name: measurements
|
|
|
|
|
name
|
|
|
|
|
------------------
|
|
|
|
|
cpu
|
|
|
|
|
disk
|
|
|
|
|
diskio
|
|
|
|
|
kernel
|
|
|
|
|
mem
|
|
|
|
|
processes
|
|
|
|
|
swap
|
|
|
|
|
system
|
2017-10-16 01:10:34 +00:00
|
|
|
|
```
|
2017-10-17 06:29:07 +00:00
|
|
|
|
</div>
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
La nouvelle base a donc bien été créée et tant que nous laissons *Telegraf*
|
2017-10-16 01:10:34 +00:00
|
|
|
|
lancé, celui-ci va régulièrement envoyer des métriques de cette machine.
|
|
|
|
|
|
|
|
|
|
|
2021-09-21 09:44:12 +00:00
|
|
|
|
### Afficher les données collectées
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
#### Exercice : {-}
|
|
|
|
|
|
|
|
|
|
À vous de jouer pour lancer le conteneur
|
2017-10-16 01:10:34 +00:00
|
|
|
|
[*Chronograf*](https://store.docker.com/images/chronograf).
|
|
|
|
|
|
|
|
|
|
L'interface de *Chronograf* est disponible sur le port 8888.
|
|
|
|
|
|
2018-10-17 17:31:33 +00:00
|
|
|
|
Consultez la [documentation du conteneur](https://hub.docker.com/_/chronograf)
|
|
|
|
|
si besoin.
|
2017-10-16 01:10:34 +00:00
|
|
|
|
|
2021-09-19 22:19:49 +00:00
|
|
|
|
#### Attention : {-}
|
|
|
|
|
|
|
|
|
|
la page d'accueil est vide au démarrage, pour savoir si vous avez réussi,
|
|
|
|
|
rendez-vous sous l'onglet *Hosts*, le nom de votre machine devrait y
|
|
|
|
|
apparaître. En cliquant dessus, vous obtiendrez des graphiques similaires à
|
|
|
|
|
ceux ci-dessous :
|
2018-10-19 23:51:25 +00:00
|
|
|
|
|
2017-10-16 01:10:34 +00:00
|
|
|
|
![Résultat obtenu](chronograf_latest.png)
|