Почему возникает ошибка 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).