|
|
@@ -52,18 +52,14 @@ func (e *PrometheusExecutor) Execute(queries tsdb.QuerySlice, queryContext *tsdb
|
|
|
return resultWithError(result, err)
|
|
|
}
|
|
|
|
|
|
- from, _ := queryContext.TimeRange.FromTime()
|
|
|
- to, _ := queryContext.TimeRange.ToTime()
|
|
|
-
|
|
|
- query, err := parseQuery(queries)
|
|
|
-
|
|
|
+ query, err := parseQuery(queries, queryContext)
|
|
|
if err != nil {
|
|
|
return resultWithError(result, err)
|
|
|
}
|
|
|
|
|
|
timeRange := prometheus.Range{
|
|
|
- Start: from,
|
|
|
- End: to,
|
|
|
+ Start: query.Start,
|
|
|
+ End: query.End,
|
|
|
Step: query.Step,
|
|
|
}
|
|
|
|
|
|
@@ -78,9 +74,9 @@ func (e *PrometheusExecutor) Execute(queries tsdb.QuerySlice, queryContext *tsdb
|
|
|
}
|
|
|
|
|
|
func formatLegend(metric pmodel.Metric, query *PrometheusQuery) string {
|
|
|
- r, _ := regexp.Compile(`\{\{\s*(.+?)\s*\}\}`)
|
|
|
+ reg, _ := regexp.Compile(`\{\{\s*(.+?)\s*\}\}`)
|
|
|
|
|
|
- result := r.ReplaceAllFunc([]byte(query.LegendFormat), func(in []byte) []byte {
|
|
|
+ result := reg.ReplaceAllFunc([]byte(query.LegendFormat), func(in []byte) []byte {
|
|
|
ind := strings.Replace(strings.Replace(string(in), "{{", "", 1), "}}", "", 1)
|
|
|
if val, exists := metric[pmodel.LabelName(ind)]; exists {
|
|
|
return []byte(val)
|
|
|
@@ -92,7 +88,7 @@ func formatLegend(metric pmodel.Metric, query *PrometheusQuery) string {
|
|
|
return string(result)
|
|
|
}
|
|
|
|
|
|
-func parseQuery(queries tsdb.QuerySlice) (*PrometheusQuery, error) {
|
|
|
+func parseQuery(queries tsdb.QuerySlice, queryContext *tsdb.QueryContext) (*PrometheusQuery, error) {
|
|
|
queryModel := queries[0]
|
|
|
|
|
|
expr, err := queryModel.Model.Get("expr").String()
|
|
|
@@ -110,10 +106,22 @@ func parseQuery(queries tsdb.QuerySlice) (*PrometheusQuery, error) {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
+ start, err := queryContext.TimeRange.FromTime()
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ end, err := queryContext.TimeRange.ToTime()
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
return &PrometheusQuery{
|
|
|
Expr: expr,
|
|
|
Step: time.Second * time.Duration(step),
|
|
|
LegendFormat: format,
|
|
|
+ Start: start,
|
|
|
+ End: end,
|
|
|
}, nil
|
|
|
}
|
|
|
|