Reintroduce async ctr

This commit is contained in:
Abhishek Pandey 2023-10-07 00:10:25 +05:30
parent de351838e3
commit 6db2ca713a
2 changed files with 29 additions and 6 deletions

View File

@ -3,6 +3,7 @@ package events
import (
"context"
"io"
"log"
"os"
"github.com/alcionai/corso/src/pkg/logger"
@ -21,7 +22,7 @@ var Ctr metric.Int64Counter
var AsyncCtr metric.Int64ObservableCounter
var RLGauge metric.Int64ObservableCounter
// var token int64
var token int64
type collector struct {
meter metric.Meter
@ -40,26 +41,45 @@ var metricKeys = []string{
// RLTokens,
}
var globalMeter metric.Meter
// Map of metricsCategory to metric.Int64Counter
var counter = map[string]metric.Int64Counter{}
//var guages = map[string]metric.Int64ObservableGauge{}
func NewCollector(mp metric.MeterProvider) {
rmc := collector{}
rmc.meter = mp.Meter("corso-meter")
globalMeter = rmc.meter
for _, key := range metricKeys {
counter[key], _ = rmc.meter.Int64Counter(key)
}
AsyncCtr, _ = rmc.meter.Int64ObservableCounter("async_counter")
cb := func(_ context.Context, o metric.Observer) error {
logger.Ctx(context.Background()).Infow("Async counter callback")
token += 100
o.ObserveInt64(AsyncCtr, token)
return nil
}
_, err := rmc.meter.RegisterCallback(
cb,
AsyncCtr,
)
if err != nil {
log.Fatalf("failed to register callback: %v", err)
}
}
func RegisterGauge(ctx context.Context, name string, cb func(_ context.Context, o metric.Observer) error) {
RLGauge, _ := otel.Meter("corso-meter").Int64ObservableCounter(name)
RLGauge, _ := globalMeter.Int64ObservableCounter(name)
_, err := otel.Meter("corso-meter").RegisterCallback(
_, err := globalMeter.RegisterCallback(
cb,
RLGauge,
)

View File

@ -161,11 +161,14 @@ const (
)
var twonce sync.Once
var token int64 = 0
func RegisterRLMetrics(ctx context.Context) {
twonce.Do(func() {
cb := func(_ context.Context, o metric.Observer) error {
o.ObserveInt64(events.RLGauge, int64(ctxLimiter(ctx).Tokens()))
token += int64(ctxLimiter(ctx).Tokens())
o.ObserveInt64(events.RLGauge, token)
return nil
}