Prometheus
This commit is contained in:
80
main.cpp
80
main.cpp
@@ -8,11 +8,11 @@
|
||||
#include "main.hpp"
|
||||
#include "AutomForArduino.cpp"
|
||||
|
||||
#include <prometheus/exposer.h>
|
||||
#include <prometheus/registry.h>
|
||||
#include <prometheus/counter.h>
|
||||
#include <prometheus/gauge.h>
|
||||
#include <prometheus/histogram.h>
|
||||
#include <prometheus/registry.h>
|
||||
#include <prometheus/exposer.h>
|
||||
|
||||
#include <curl/curl.h>
|
||||
#include <string>
|
||||
@@ -50,6 +50,29 @@ unsigned short sensor_max, sensor_high, sensor_low, sensor_min;
|
||||
|
||||
float TankInitalValue = 5;
|
||||
|
||||
using namespace prometheus;
|
||||
std::shared_ptr<Registry> registry;
|
||||
Gauge* debit_entree = nullptr;
|
||||
Gauge* debit_sortie = nullptr;
|
||||
|
||||
Gauge* debit_p1 = nullptr;
|
||||
Gauge* debit_p2 = nullptr;
|
||||
Gauge* debit_p3 = nullptr;
|
||||
Gauge* debit_p4 = nullptr;
|
||||
|
||||
Gauge* tank_level = nullptr;
|
||||
|
||||
Counter* volume_p1 = nullptr;
|
||||
Counter* volume_p2 = nullptr;
|
||||
Counter* volume_p3 = nullptr;
|
||||
Counter* volume_p4 = nullptr;
|
||||
|
||||
Histogram::BucketBoundaries buckets = {
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 9
|
||||
};
|
||||
|
||||
Histogram *tank_level_hist = nullptr;
|
||||
|
||||
// Réception des messages MQTT
|
||||
// ************************************************************
|
||||
class callback : public virtual mqtt::callback {
|
||||
@@ -398,13 +421,66 @@ double SimulConsoBrown(double valeur_precedente)
|
||||
*/
|
||||
void InitPrometheus()
|
||||
{
|
||||
static Exposer exposer{"0.0.0.0:8099"};
|
||||
|
||||
// Le registre central
|
||||
registry = std::make_shared<Registry>();
|
||||
|
||||
exposer.RegisterCollectable(registry);
|
||||
|
||||
auto& level_family = BuildGauge()
|
||||
.Name("geii_level")
|
||||
.Help("Volume en m3")
|
||||
.Register(*registry);
|
||||
|
||||
tank_level = &level_family.Add({});
|
||||
|
||||
auto& debit_family = BuildGauge()
|
||||
.Name("geii_debit")
|
||||
.Help("Débit en l/s")
|
||||
.Register(*registry);
|
||||
|
||||
debit_entree = &debit_family.Add({{"numero", "entree"}});
|
||||
debit_sortie = &debit_family.Add({{"numero", "sortie"}});
|
||||
debit_p1 = &debit_family.Add({{"numero", "1"}});
|
||||
debit_p2 = &debit_family.Add({{"numero", "2"}});
|
||||
debit_p3 = &debit_family.Add({{"numero", "3"}});
|
||||
debit_p4 = &debit_family.Add({{"numero", "4"}});
|
||||
|
||||
auto& volume_family = BuildCounter()
|
||||
.Name("geii_volume")
|
||||
.Help("Volume en l")
|
||||
.Register(*registry);
|
||||
|
||||
volume_p1 = &volume_family.Add({{"numero", "1"}});
|
||||
volume_p2 = &volume_family.Add({{"numero", "2"}});
|
||||
volume_p3 = &volume_family.Add({{"numero", "3"}});
|
||||
volume_p4 = &volume_family.Add({{"numero", "4"}});
|
||||
|
||||
auto& hist_family = BuildHistogram()
|
||||
.Name("geii_hist")
|
||||
.Help("histogramme du reservoir en m3")
|
||||
.Register(*registry);
|
||||
|
||||
tank_level_hist = &hist_family.Add({}, buckets);
|
||||
}
|
||||
|
||||
void ProcessPrometheus()
|
||||
{
|
||||
debit_entree->Set(_digital[IN_FLOW_OUT].dvalue);
|
||||
debit_sortie->Set(_digital[IN_FLOW_IN].dvalue);
|
||||
debit_p1->Set(_digital[IN_FLOW_1].dvalue);
|
||||
debit_p2->Set(_digital[IN_FLOW_2].dvalue);
|
||||
debit_p3->Set(_digital[IN_FLOW_3].dvalue);
|
||||
debit_p4->Set(_digital[IN_FLOW_4].dvalue);
|
||||
|
||||
volume_p1->Increment(_digital[IN_FLOW_1].dvalue * dt);
|
||||
volume_p2->Increment(_digital[IN_FLOW_2].dvalue * dt);
|
||||
volume_p3->Increment(_digital[IN_FLOW_3].dvalue * dt);
|
||||
volume_p4->Increment(_digital[IN_FLOW_4].dvalue * dt);
|
||||
|
||||
tank_level->Set(_digital[IN_TANK_LEVEL].dvalue);
|
||||
tank_level_hist->Observe(_digital[IN_TANK_LEVEL].dvalue);
|
||||
}
|
||||
|
||||
void ProcessMQTT(mqtt::async_client* client)
|
||||
|
||||
Reference in New Issue
Block a user