virli/tutorial/3/cgroups-influx.md

92 lines
2.4 KiB
Markdown
Raw Normal View History

::::: {.exercice}
2021-10-05 15:23:09 +00:00
### Exercice (obligatoire pour les SRS -- optionnel pour les GISTRE)
Poursuivons [notre script de monitoring](#script-monitoring) afin d'envoyer nos
2022-02-24 19:43:43 +00:00
résultats vers InfluxDB : nous l'appellerons `./telegraf.sh`.
2021-10-05 15:23:09 +00:00
2022-04-09 00:50:14 +00:00
#### Rappel d'InfluxDB
2021-10-05 15:23:09 +00:00
Commençons par lancer le conteneur Docker d'InfluxDB (pour éviter de
2022-02-24 19:43:43 +00:00
l'installer sur notre machine) :
2021-10-05 15:23:09 +00:00
<div lang="en-US">
```bash
docker container run --name mytsdb -d -p 8086:8086 influxdb:1.8
```
</div>
Il nous faut ensuite créer une base de données pour y stocker nos
métriques. Voici comment on s'était débrouillé précédemment pour interagir avec
2022-02-24 19:43:43 +00:00
InfluxDB :
2021-10-05 15:23:09 +00:00
<div lang="en-US">
```bash
docker container exec -i mytsdb influx <<EOF
CREATE DATABASE metrics;
SHOW DATABASES;
EOF
```
</div>
Vérifiez que la base de données `metrics` a bien été créée.
2022-04-09 00:50:14 +00:00
#### Monitoring vers InfluxDB
2021-10-05 15:23:09 +00:00
Maintenant, envoyons nos données vers la base
2022-02-24 19:43:43 +00:00
<https://docs.influxdata.com/influxdb/v1.8/guides/write_data/> :
2021-10-05 15:23:09 +00:00
<div lang="en-US">
```bash
curl -i -XPOST 'http://localhost:8086/write?db=metrics' --data-binary \
"$my_cgroup_name memory.usage_in_bytes=$(cat .../my_cgroup_name/memory.usage_in_bytes)"
```
</div>
Pour vérifier que les données ont bien été ajoutées, nous pouvons effectuer la
2022-02-24 19:43:43 +00:00
requête suivante dans notre client `influx` :
2021-10-05 15:23:09 +00:00
<div lang="en-US">
```sql
SELECT * from "$my_cgroup_name";
```
</div>
2022-04-09 00:50:14 +00:00
#### Monitorer davantage de données
2021-10-05 15:23:09 +00:00
2022-02-24 19:43:43 +00:00
Liste non exhaustive de données à monitorer :
2021-10-05 15:23:09 +00:00
2022-02-24 19:43:43 +00:00
* Nombre d'IOs effectué ;
* nobre d'octets lus/écrits sur les disques ;
* temps de calcul utilisé (`userspace`, `system`, tout confondu) ;
2021-10-05 15:23:09 +00:00
* ...
Tous les cgroups existants dans le dernier noyau publié ont leur documentation
2022-02-24 19:43:43 +00:00
accessible ici :
2021-10-05 15:23:09 +00:00
- v1 : <https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/index.html>
- v2 : <https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html>
2022-04-09 00:50:14 +00:00
#### Permettre à l'utilisateur de monitorer des processus
2021-10-05 15:23:09 +00:00
Maintenant, séparons notre script en deux parties afin qu'un utilisateur normal
(non-root) puisse utiliser la partie monitoring de notre script.
Un premier script doit s'occuper de créer le(s) *cgroup*s et lui attribuer les
bons droits, tandis que le deuxième va effectuer le monitoring, sans privilèges
particuliers.
##### Exemple {-}
<div lang="en-US">
```
42sh$ sudo ./telegraf_init.sh my_cgroup_name
42sh$ ./telegraf.sh my_cgroup_name memhog 500
```
</div>
:::::