in internal/daemon/mysql/mysql.go [141:174]
func runMetricCollection(ctx context.Context, a any) {
log.CtxLogger(ctx).Info("Starting MySQL 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("MySQL metric collection args", "args", args)
ticker := time.NewTicker(wlmCollectionFrequency)
defer ticker.Stop()
gceService, err := gce.NewGCEClient(ctx)
if err != nil {
usagemetrics.Error(usagemetrics.GCEServiceCreationFailure)
log.CtxLogger(ctx).Errorf("initializing GCE services: %w", err)
return
}
m := mysqlmetrics.New(ctx, args.s.Config, args.s.WLMClient)
err = m.InitDB(ctx, gceService)
if err != nil {
log.CtxLogger(ctx).Errorf("failed to initialize MySQL DB: %v", err)
return
}
for {
m.CollectMetricsOnce(ctx)
select {
case <-ctx.Done():
log.CtxLogger(ctx).Info("MySQL metric collection cancellation requested")
return
case <-ticker.C:
continue
}
}
}