Просмотр исходного кода

Added downsampling params to alerting

utkarshcmu 9 лет назад
Родитель
Сommit
cc0a39f816
2 измененных файлов с 27 добавлено и 17 удалено
  1. 24 9
      pkg/tsdb/opentsdb/opentsdb.go
  2. 3 8
      pkg/tsdb/opentsdb/types.go

+ 24 - 9
pkg/tsdb/opentsdb/opentsdb.go

@@ -14,7 +14,7 @@ import (
 	"io/ioutil"
 	"net/http"
 	"net/url"
-	//"net/http/httputil"
+	"net/http/httputil"
 	"encoding/json"
 
 	"gopkg.in/guregu/null.v3"
@@ -58,14 +58,29 @@ func (e *OpenTsdbExecutor) Execute(ctx context.Context, queries tsdb.QuerySlice,
 
 	tsdbQuery.Start = queryContext.TimeRange.GetFromAsMsEpoch()
 	tsdbQuery.End = queryContext.TimeRange.GetToAsMsEpoch()
+	tsdbQuery.Queries = make([]map[string]interface{}, len(queries))
 
-	for _, query := range queries {
-		tsdbQuery.Queries = []OpenTsdbMetric{
-			OpenTsdbMetric{
-				Metric:     query.Model.Get("metric").MustString(),
-				Aggregator: query.Model.Get("aggregator").MustString(),
-			},
+  for i := 0; i < len(queries); i++ {
+
+		metric := make(map[string]interface{})
+		
+		metric["metric"] = queries[i].Model.Get("metric").MustString()
+		metric["aggregator"] = queries[i].Model.Get("aggregator").MustString()
+
+		disableDownsampling := queries[i].Model.Get("disableDownsampling").MustBool()
+
+		if !disableDownsampling {
+			downsampleInterval := queries[i].Model.Get("downsampleInterval").MustString()			
+			if downsampleInterval == "" {
+				downsampleInterval = "1m"  //default value for blank
+			}
+			downsample :=  downsampleInterval + "-" + queries[i].Model.Get("downsampleAggregator").MustString()
+			if queries[i].Model.Get("downsampleFillPolicy").MustString() != "none" {
+				metric["downsample"] = downsample + "-" + queries[i].Model.Get("downsampleFillPolicy").MustString()
+			}
 		}
+
+		tsdbQuery.Queries[i] = metric
 	}
 
 	if setting.Env == setting.DEV {
@@ -110,13 +125,13 @@ func (e *OpenTsdbExecutor) createRequest(data OpenTsdbQuery) (*http.Request, err
 		req.SetBasicAuth(e.BasicAuthUser, e.BasicAuthPassword)
 	}
 
-	/*
+	
 	  requestDump, err := httputil.DumpRequest(req, true)
 	  if err != nil {
 	    fmt.Println(err)
 	  }
 	  fmt.Println(string(requestDump))
-	*/
+	
 	return req, err
 }
 

+ 3 - 8
pkg/tsdb/opentsdb/types.go

@@ -1,14 +1,9 @@
 package opentsdb
 
 type OpenTsdbQuery struct {
-	Start	   int64     				 `json:"start"`
-	End		   int64   	 				 `json:"end"`
-	Queries  []OpenTsdbMetric  `json:"queries"`
-}
-
-type OpenTsdbMetric struct {
-	Metric      string  `json:"metric"`
-	Aggregator  string  `json:"aggregator"`
+	Start	   int64     				         `json:"start"`
+	End		   int64   	 				 				 `json:"end"`
+	Queries  []map[string]interface{}  `json:"queries"`
 }
 
 type OpenTsdbResponse struct {