Почему возникает ошибка bad_data QueryRange Prometheus

У меня есть обертка:

func QueryRange(start time.Time, end time.Time, metric string, config *Models.Configuration) model.Value {
    client, err := api.NewClient(api.Config{
        Address: config.Prometheus.Host,
    })
    if err != nil {
        fmt.Printf("Error creating client: %v\n", err)
        os.Exit(1)
    }
    if !start.Before(end) {
        fmt.Printf("Start time is not before end time")
        os.Exit(1)
    }

    resolution := math.Max(math.Floor(end.Sub(start).Seconds()/250), 1)
    step := time.Duration(resolution * 1e9)

    v1api := v1.NewAPI(client)
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
    defer cancel()
    r := v1.Range{
        Start: start,
        End:   end,
        Step:  step,
    }
    result, warnings, err := v1api.QueryRange(ctx, metric, r)
    if err != nil {
        fmt.Printf("Error querying Prometheus: %v\n", err)
        os.Exit(1)
    }
    if len(warnings) > 0 {
        fmt.Printf("Warnings: %v\n", warnings)
    }

    return result
}

Вызываю ее так:

now := time.Now()
then := now.Add(time.Duration(-config.Prometheus.MetricsTimeRange) * time.Minute)

label := &bytes.Buffer{}
labelTemplate, err := template.New("").Parse(config.Prometheus.LabelTemplate)
err = labelTemplate.Execute(label, service)
if err != nil {
    log.Fatalf("Can not execute metric label template")
    return nil, nil, err
}

metrics := Prometheus.QueryRange(then, now,
    config.Prometheus.ExternalCallMetricName+label.String(), &config)

И получаю ошибку:

Error querying Prometheus: bad_data: cannot parse "" to a valid timestamp
exit status 1

Есть идеи почему это может произойти?

P.S. Я использую Trickster + Prometheus(Thanos).


Ответы (0 шт):