diff --git a/pkg/tsdb/graphite/graphite.go b/pkg/tsdb/graphite/graphite.go index 21db69ec488..a6295292d7e 100644 --- a/pkg/tsdb/graphite/graphite.go +++ b/pkg/tsdb/graphite/graphite.go @@ -13,6 +13,10 @@ import ( "github.com/grafana/grafana/pkg/tsdb" ) +var ( + HttpClient = http.Client{Timeout: time.Duration(10 * time.Second)} +) + type GraphiteExecutor struct { *tsdb.DataSourceInfo } @@ -43,20 +47,27 @@ func (e *GraphiteExecutor) Execute(queries tsdb.QuerySlice, context *tsdb.QueryC glog.Debug("Graphite request", "query", query.Query) } - client := http.Client{Timeout: time.Duration(10 * time.Second)} - req, _ := http.NewRequest(http.MethodPost, e.Url+"/render?", strings.NewReader(params.Encode())) + formData := params.Encode() + glog.Info("Graphite request body", "formdata", formData) + req, err := http.NewRequest(http.MethodPost, e.Url+"/render", strings.NewReader(formData)) + if err != nil { + glog.Info("Failed to create request", "error", err) + result.Error = fmt.Errorf("Failed to create request. error: %v", err) + return result + } + if e.BasicAuth { req.SetBasicAuth(e.BasicAuthUser, e.BasicAuthPassword) } - res, err := client.Do(req) + res, err := HttpClient.Do(req) if err != nil { result.Error = err return result } - defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) + defer res.Body.Close() if err != nil { result.Error = err return result