Prometheus
This commit is contained in:
80
main.cpp
80
main.cpp
@@ -8,11 +8,11 @@
|
|||||||
#include "main.hpp"
|
#include "main.hpp"
|
||||||
#include "AutomForArduino.cpp"
|
#include "AutomForArduino.cpp"
|
||||||
|
|
||||||
|
#include <prometheus/exposer.h>
|
||||||
|
#include <prometheus/registry.h>
|
||||||
#include <prometheus/counter.h>
|
#include <prometheus/counter.h>
|
||||||
#include <prometheus/gauge.h>
|
#include <prometheus/gauge.h>
|
||||||
#include <prometheus/histogram.h>
|
#include <prometheus/histogram.h>
|
||||||
#include <prometheus/registry.h>
|
|
||||||
#include <prometheus/exposer.h>
|
|
||||||
|
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
@@ -50,6 +50,29 @@ unsigned short sensor_max, sensor_high, sensor_low, sensor_min;
|
|||||||
|
|
||||||
float TankInitalValue = 5;
|
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
|
// Réception des messages MQTT
|
||||||
// ************************************************************
|
// ************************************************************
|
||||||
class callback : public virtual mqtt::callback {
|
class callback : public virtual mqtt::callback {
|
||||||
@@ -398,13 +421,66 @@ double SimulConsoBrown(double valeur_precedente)
|
|||||||
*/
|
*/
|
||||||
void InitPrometheus()
|
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()
|
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)
|
void ProcessMQTT(mqtt::async_client* client)
|
||||||
|
|||||||
Reference in New Issue
Block a user