From 35224ff799c7362f113a487110d1bcf028f34fc2 Mon Sep 17 00:00:00 2001 From: Furkan Date: Thu, 20 Jan 2022 17:01:22 +0300 Subject: [PATCH] fix(analyse_prometheus): store errors instead of exit Fixes #236 Signed-off-by: Furkan Co-authored-by: Emin Co-authored-by: Yasin Co-authored-by: Batuhan --- pkg/analyse/prometheus.go | 2 ++ pkg/commands/analyse_prometheus.go | 14 +++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/pkg/analyse/prometheus.go b/pkg/analyse/prometheus.go index c43de4f3d..77715acab 100644 --- a/pkg/analyse/prometheus.go +++ b/pkg/analyse/prometheus.go @@ -7,6 +7,8 @@ type MetricsInPrometheus struct { InUseMetricCounts []MetricCount `json:"in_use_metric_counts"` AdditionalMetricCounts []MetricCount `json:"additional_metric_counts"` + + Errors []string `json:"errors"` } type MetricCount struct { diff --git a/pkg/commands/analyse_prometheus.go b/pkg/commands/analyse_prometheus.go index 0d71f1bb7..5764509ed 100644 --- a/pkg/commands/analyse_prometheus.go +++ b/pkg/commands/analyse_prometheus.go @@ -3,6 +3,7 @@ package commands import ( "context" "encoding/json" + "fmt" "io/ioutil" "os" "sort" @@ -94,7 +95,7 @@ func (cmd *PrometheusAnalyseCommand) run(k *kingpin.ParseContext) error { jobCount map[string]int }{} inUseCardinality := 0 - + var errorMetrics []string for _, metric := range metricsUsed { ctx, cancel := context.WithTimeout(context.Background(), cmd.readTimeout) defer cancel() @@ -102,7 +103,10 @@ func (cmd *PrometheusAnalyseCommand) run(k *kingpin.ParseContext) error { query := "count by (job) (" + metric + ")" result, _, err := v1api.Query(ctx, query, time.Now()) if err != nil { - return errors.Wrap(err, "error querying "+query) + errStr := fmt.Sprintf("error querying %v: %s", query, err.Error()) + log.Warnln(errStr) + errorMetrics = append(errorMetrics, errStr) + continue } vec := result.(model.Vector) @@ -151,7 +155,10 @@ func (cmd *PrometheusAnalyseCommand) run(k *kingpin.ParseContext) error { query := "count by (job) (" + metric + ")" result, _, err := v1api.Query(ctx, query, time.Now()) if err != nil { - return errors.Wrap(err, "error querying "+query) + errStr := fmt.Sprintf("error querying %v: %s", query, err.Error()) + log.Warnln(errStr) + errorMetrics = append(errorMetrics, errStr) + continue } vec := result.(model.Vector) @@ -187,6 +194,7 @@ func (cmd *PrometheusAnalyseCommand) run(k *kingpin.ParseContext) error { output.TotalActiveSeries = inUseCardinality + additionalMetricsCardinality output.InUseActiveSeries = inUseCardinality output.AdditionalActiveSeries = additionalMetricsCardinality + output.Errors = errorMetrics for metric, counts := range inUseMetrics { jobCounts := make([]analyse.JobCount, 0, len(counts.jobCount))