瀏覽代碼

fix(tsdb): fixes broken legend buidler for prometheus

closes #6456
bergquist 9 年之前
父節點
當前提交
1afe0e90f9
共有 2 個文件被更改,包括 18 次插入4 次删除
  1. 5 4
      pkg/tsdb/prometheus/prometheus.go
  2. 13 0
      pkg/tsdb/prometheus/prometheus_test.go

+ 5 - 4
pkg/tsdb/prometheus/prometheus.go

@@ -81,6 +81,10 @@ func (e *PrometheusExecutor) Execute(ctx context.Context, queries tsdb.QuerySlic
 func formatLegend(metric pmodel.Metric, query *PrometheusQuery) string {
 func formatLegend(metric pmodel.Metric, query *PrometheusQuery) string {
 	reg, _ := regexp.Compile(`\{\{\s*(.+?)\s*\}\}`)
 	reg, _ := regexp.Compile(`\{\{\s*(.+?)\s*\}\}`)
 
 
+	if query.LegendFormat == "" {
+		return metric.String()
+	}
+
 	result := reg.ReplaceAllFunc([]byte(query.LegendFormat), func(in []byte) []byte {
 	result := reg.ReplaceAllFunc([]byte(query.LegendFormat), func(in []byte) []byte {
 		labelName := strings.Replace(string(in), "{{", "", 1)
 		labelName := strings.Replace(string(in), "{{", "", 1)
 		labelName = strings.Replace(labelName, "}}", "", 1)
 		labelName = strings.Replace(labelName, "}}", "", 1)
@@ -108,10 +112,7 @@ func parseQuery(queries tsdb.QuerySlice, queryContext *tsdb.QueryContext) (*Prom
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	format, err := queryModel.Model.Get("legendFormat").String()
-	if err != nil {
-		return nil, err
-	}
+	format := queryModel.Model.Get("legendFormat").MustString("")
 
 
 	start, err := queryContext.TimeRange.ParseFrom()
 	start, err := queryContext.TimeRange.ParseFrom()
 	if err != nil {
 	if err != nil {

+ 13 - 0
pkg/tsdb/prometheus/prometheus_test.go

@@ -22,5 +22,18 @@ func TestPrometheus(t *testing.T) {
 
 
 			So(formatLegend(metric, query), ShouldEqual, "legend backend mobile {{broken}}")
 			So(formatLegend(metric, query), ShouldEqual, "legend backend mobile {{broken}}")
 		})
 		})
+
+		Convey("build full serie name", func() {
+			metric := map[p.LabelName]p.LabelValue{
+				p.LabelName("app"):    p.LabelValue("backend"),
+				p.LabelName("device"): p.LabelValue("mobile"),
+			}
+
+			query := &PrometheusQuery{
+				LegendFormat: "",
+			}
+
+			So(formatLegend(metric, query), ShouldEqual, `http_request_total{app="backend", device="mobile"}`)
+		})
 	})
 	})
 }
 }