Counter

A Counter is used to measure the rate at which an event is occurring. Considering an API endpoint, a Counter could be used to measure the rate at which it is being accessed.

Counters are reported to the backend as a rate-per-second. In Atlas, the :per-step operator can be used to convert them back into a value-per-step on a graph.

Call Increment() when an event occurs:

#include <registry.h>

int main()
{
    auto config = Config(WriterConfig(WriterTypes::UDP));
    auto r = Registry(config);

    // Option 1: Directly create a Counter
    auto serverRequestCounter = r.CreateCounter("server.numRequests");
    serverRequestCounter.Increment();

    // Option 2: Create a Counter from a MeterID
    auto serverRequestMeter = r.CreateNewId("server.numRequests");
    r.CreateCounter(serverRequestMeter).Increment();
}

You can also pass a value to Increment(). This is useful when a collection of events happens together:

#include <registry.h>

int main()
{
    auto config = Config(WriterConfig(WriterTypes::UDP));
    auto r = Registry(config);

    // Option 1: Directly create a Counter
    auto serverRequestCounter = r.CreateCounter("server.numRequests");
    serverRequestCounter.Increment(10);

    // Option 2: Create a Counter from a MeterID
    auto serverRequestMeter = r.CreateNewId("server.numRequests");
    r.CreateCounter(serverRequestMeter).Increment(10);
}