Some checks failed
sm-rpc / build (Debug, aarch64-linux-gnu) (push) Failing after 29s
sm-rpc / build (Debug, arm-linux-gnueabihf) (push) Failing after 16s
sm-rpc / build (Debug, host.gcc) (push) Failing after 11s
sm-rpc / build (Debug, mipsel-linux-gnu) (push) Failing after 12s
sm-rpc / build (Release, aarch64-linux-gnu) (push) Failing after 11s
sm-rpc / build (Release, arm-linux-gnueabihf) (push) Failing after 11s
sm-rpc / build (Release, host.gcc) (push) Failing after 12s
sm-rpc / build (Release, mipsel-linux-gnu) (push) Failing after 16s
55 lines
1.7 KiB
C++
55 lines
1.7 KiB
C++
#include <chrono>
|
|
#include <memory>
|
|
#include <thread>
|
|
|
|
#include "prometheus/client_metric.h"
|
|
#include "prometheus/counter.h"
|
|
#include "prometheus/exposer.h"
|
|
#include "prometheus/family.h"
|
|
#include "prometheus/registry.h"
|
|
|
|
int main() {
|
|
using namespace prometheus;
|
|
|
|
// create an http server running on port 8080
|
|
Exposer exposer{"127.0.0.1:8080", 1};
|
|
|
|
auto registryA = std::make_shared<Registry>();
|
|
|
|
// add a new counter family to the registry (families combine values with the
|
|
// same name, but distinct label dimensions)
|
|
auto& counter_familyA = BuildCounter()
|
|
.Name("time_running_seconds_total")
|
|
.Help("How many seconds is this server running?")
|
|
.Register(*registryA);
|
|
|
|
// add a counter to the metric family
|
|
auto& seconds_counterA = counter_familyA.Add(
|
|
{{"another_label", "bar"}, {"yet_another_label", "baz"}});
|
|
|
|
// ask the exposer to scrape registryA on incoming scrapes for "/metricsA"
|
|
exposer.RegisterCollectable(registryA, "/metricsA");
|
|
|
|
auto registryB = std::make_shared<Registry>();
|
|
|
|
auto& counter_familyB =
|
|
BuildCounter()
|
|
.Name("other_time_running_seconds_total")
|
|
.Help("How many seconds has something else been running?")
|
|
.Register(*registryB);
|
|
|
|
auto& seconds_counterB = counter_familyB.Add(
|
|
{{"another_label", "not_bar"}, {"yet_another_label", "not_baz"}});
|
|
|
|
// This endpoint exposes registryB.
|
|
exposer.RegisterCollectable(registryB, "/metricsB");
|
|
|
|
for (;;) {
|
|
std::this_thread::sleep_for(std::chrono::seconds(1));
|
|
// increment the counters by one (second)
|
|
seconds_counterA.Increment(1.0);
|
|
seconds_counterB.Increment(1.5);
|
|
}
|
|
return 0;
|
|
}
|