in internal/daemon/redis/redis.go [143:176]
func runMetricCollection(ctx context.Context, a any) {
log.CtxLogger(ctx).Info("Starting Redis Metric Collection")
var args runMetricCollectionArgs
var ok bool
if args, ok = a.(runMetricCollectionArgs); !ok {
log.CtxLogger(ctx).Errorf("failed to parse metric collection args", "args", a)
return
}
log.CtxLogger(ctx).Debugw("Redis metric collection args", "args", args)
gceService, err := gce.NewGCEClient(ctx)
if err != nil {
usagemetrics.Error(usagemetrics.GCEServiceCreationFailure)
log.CtxLogger(ctx).Errorf("initializing GCE services: %w", err)
return
}
r := redismetrics.New(ctx, args.s.Config, args.s.WLMClient, args.s.OSData)
err = r.InitDB(ctx, gceService)
if err != nil {
log.CtxLogger(ctx).Errorf("failed to initialize Redis DB client", "error", err)
return
}
ticker := time.NewTicker(wlmCollectionFrequency)
defer ticker.Stop()
for {
r.CollectMetricsOnce(ctx)
select {
case <-ctx.Done():
log.CtxLogger(ctx).Info("Redis metric collection cancellation requested")
return
case <-ticker.C:
continue
}
}
}