From 803bed145cb0944b11daf3ca4a6497a06d6636c1 Mon Sep 17 00:00:00 2001 From: Thomas Jackson Date: Thu, 16 Mar 2023 14:48:39 -0700 Subject: [PATCH] Add metrics --- pkg/promclient/labelfilter.go | 31 +++++++++++++++++++++++++++++-- pkg/servergroup/servergroup.go | 2 +- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/pkg/promclient/labelfilter.go b/pkg/promclient/labelfilter.go index f1f8ffeac..14a4fdb17 100644 --- a/pkg/promclient/labelfilter.go +++ b/pkg/promclient/labelfilter.go @@ -8,11 +8,31 @@ import ( "time" v1 "github.com/prometheus/client_golang/api/prometheus/v1" + "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/promql/parser" "github.com/sirupsen/logrus" ) +// Metrics +var ( + syncCount = prometheus.NewCounterVec(prometheus.CounterOpts{ + Name: "promxy_label_filter_sync_count_total", + Help: "How many syncs completed from a promxy label_filter, partitioned by success", + }, []string{"status"}) + syncSummary = prometheus.NewSummaryVec(prometheus.SummaryOpts{ + Name: "promxy_label_filter_sync_duration_seconds", + Help: "Latency of sync process from a promxy label_fitler", + }, []string{"status"}) +) + +func init() { + prometheus.MustRegister( + syncCount, + syncSummary, + ) +} + type LabelFilterConfig struct { LabelsToFilter []string `yaml:"labels_to_filter"` SyncInterval time.Duration `yaml:"sync_interval"` @@ -58,10 +78,17 @@ func NewLabelFilterClient(ctx context.Context, a API, cfg *LabelFilterConfig) (* for { select { case <-ticker.C: - // TODO: metric on sync status - if err := c.Sync(ctx); err != nil { + start := time.Now() + err := c.Sync(ctx) + took := time.Since(start) + status := "success" + if err != nil { logrus.Errorf("error syncing in label_filter from downstream: %#v", err) + status = "error" } + syncCount.WithLabelValues(status).Inc() + syncSummary.WithLabelValues(status).Observe(took.Seconds()) + case <-ctx.Done(): ticker.Stop() return diff --git a/pkg/servergroup/servergroup.go b/pkg/servergroup/servergroup.go index cf2636f68..946e535c0 100644 --- a/pkg/servergroup/servergroup.go +++ b/pkg/servergroup/servergroup.go @@ -262,7 +262,7 @@ func (s *ServerGroup) loadTargetGroupMap(targetGroupMap map[string][]*targetgrou apiClient = &promclient.DebugAPI{apiClient, u.String()} } - // Add LabelFilter if configured + // Add LabelFilter if configured if s.Cfg.LabelFilterConfig != nil { apiClient, err = promclient.NewLabelFilterClient(ctx, apiClient, s.Cfg.LabelFilterConfig) if err != nil {