2025-12-04 07:43:14 +01:00
|
|
|
# TP 2 Supervision d'un programme en C
|
|
|
|
|
|
|
|
|
|
Dans Visual Studio Code, assurez vous d'avoir l'extension suivante installée :
|
|
|
|
|
- [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
|
|
|
|
|
|
|
|
|
|
Cloner le dépot contenant les [sources](https://sources.neotech.fr/medina474/c_pompes) C programme sur les pompes
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
git clone https://sources.neotech.fr/medina474/c_pompes
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
cd c_pompes
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Démarrer Docker en lançant Docker Desktop
|
|
|
|
|
|
|
|
|
|
Créer un réseau qui permettra à vos machines de communiquer entre elles.
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
docker network create tp_net
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Dans Visual Studio Code, chercher la commande Open Folder in Dev Container.... (Menu View - Command Palette ...)
|
|
|
|
|
|
|
|
|
|
L'extension va créer un conteneur Docker configuré avec les extensions nécessaires au développment de l'application
|
|
|
|
|
|
|
|
|
|
|
2025-12-04 13:05:07 +01:00
|
|
|
Inclure les bibliothèques
|
|
|
|
|
|
|
|
|
|
```Cpp
|
|
|
|
|
#include <prometheus/counter.h>
|
|
|
|
|
#include <prometheus/gauge.h>
|
|
|
|
|
#include <prometheus/registry.h>
|
|
|
|
|
#include <prometheus/exposer.h>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Déclarer les variables
|
|
|
|
|
|
|
|
|
|
```Cpp
|
|
|
|
|
using namespace prometheus;
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<Registry> registry;
|
|
|
|
|
Gauge* debit_entree = nullptr;
|
|
|
|
|
Gauge* debit_sortie = nullptr;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Initialiser
|
|
|
|
|
|
|
|
|
|
```Cpp
|
|
|
|
|
static Exposer exposer{"0.0.0.0:8099"};
|
|
|
|
|
|
|
|
|
|
// Le registre central
|
|
|
|
|
registry = std::make_shared<Registry>();
|
|
|
|
|
|
|
|
|
|
exposer.RegisterCollectable(registry);
|
|
|
|
|
|
|
|
|
|
auto& gauge_family = BuildGauge()
|
|
|
|
|
.Name("geii_debit")
|
|
|
|
|
.Help("Débit en l/s")
|
|
|
|
|
.Register(*registry);
|
|
|
|
|
|
|
|
|
|
debit_entree = &gauge_family.Add({{"numero", "entree"}});
|
|
|
|
|
debit_sortie = &gauge_family.Add({{"numero", "sortie"}});
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Affecter les valeurs
|
|
|
|
|
|
2025-12-04 07:43:14 +01:00
|
|
|
```Cpp
|
|
|
|
|
debit_entree->Set(_digital[IN_FLOW_OUT].dvalue);
|
|
|
|
|
debit_sortie->Set(_digital[IN_FLOW_IN].dvalue);
|
|
|
|
|
```
|
2025-12-04 13:05:07 +01:00
|
|
|
|
|
|
|
|
### Ajouter un conteneur pour Prometheus
|
|
|
|
|
|
|
|
|
|
### Ajouter un conteneur pour Grafanas
|
|
|
|
|
|
|
|
|
|
### Ajouter un conteneur pour Mailpits
|