From e8e22b3498d0139aae7e3299813644547385d9d8 Mon Sep 17 00:00:00 2001 From: Johannes 'fish' Ziemke Date: Sat, 6 Jan 2018 16:18:06 +0100 Subject: [PATCH] Add Authorization header This closes #7 --- sensu-prometheus-collector.go | 16 +++++++++++++--- sensu-prometheus-collector_test.go | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/sensu-prometheus-collector.go b/sensu-prometheus-collector.go index 7b8ed06..34e4ae4 100644 --- a/sensu-prometheus-collector.go +++ b/sensu-prometheus-collector.go @@ -138,8 +138,17 @@ func QueryPrometheus(promURL string, queryString string) (model.Vector, error) { return nil, errors.New("unexpected response type") } -func QueryExporter(exporterURL string) (model.Vector, error) { - expResponse, err := http.Get(exporterURL) +func QueryExporter(exporterURL, authorization string) (model.Vector, error) { + client := &http.Client{} + req, err := http.NewRequest("GET", exporterURL, nil) + if err != nil { + return nil, err + } + if authorization != "" { + req.Header.Set("Authorization", authorization) + } + + expResponse, err := client.Do(req) defer expResponse.Body.Close() if err != nil { @@ -174,6 +183,7 @@ func QueryExporter(exporterURL string) (model.Vector, error) { func main() { exporterURL := flag.String("exporter-url", "", "Prometheus exporter URL to pull metrics from.") + exporterAuthorizationHeader := flag.String("exporter-authorization", "", "Prometheus exporter Authorization header.") promURL := flag.String("prom-url", "http://localhost:9090", "Prometheus API URL.") queryString := flag.String("prom-query", "up", "Prometheus API query string.") outputFormat := flag.String("output-format", "influx", "The check output format to use for metrics {influx|graphite|json}.") @@ -184,7 +194,7 @@ func main() { var err error if *exporterURL != "" { - samples, err = QueryExporter(*exporterURL) + samples, err = QueryExporter(*exporterURL, *exporterAuthorizationHeader) } else { samples, err = QueryPrometheus(*promURL, *queryString) } diff --git a/sensu-prometheus-collector_test.go b/sensu-prometheus-collector_test.go index f5baa33..d900131 100644 --- a/sensu-prometheus-collector_test.go +++ b/sensu-prometheus-collector_test.go @@ -17,7 +17,7 @@ func TestQueryExporter(t *testing.T) { time.Sleep(2 * time.Second) - samples, err := QueryExporter("http://localhost:7777/metrics") + samples, err := QueryExporter("http://localhost:7777/metrics", "") assert.NoError(t, err) assert.NotNil(t, samples)