From f7e85ebac253307d7e6ca60e30baca0abd54acf4 Mon Sep 17 00:00:00 2001 From: Greg <2653109+glinton@users.noreply.github.com> Date: Tue, 2 Jul 2019 12:14:48 -0600 Subject: [PATCH] Add basic auth to prometheus input plugin (#6062) --- plugins/inputs/prometheus/README.md | 5 +++++ plugins/inputs/prometheus/prometheus.go | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/plugins/inputs/prometheus/README.md b/plugins/inputs/prometheus/README.md index c1f50bb96..edc8a27d6 100644 --- a/plugins/inputs/prometheus/README.md +++ b/plugins/inputs/prometheus/README.md @@ -33,6 +33,11 @@ in Prometheus format. ## OR # bearer_token_string = "abc_123" + ## HTTP Basic Authentication username and password. ('bearer_token' and + ## 'bearer_token_string' take priority) + # username = "" + # password = "" + ## Specify timeout duration for slower prometheus clients (default is 3s) # response_timeout = "3s" diff --git a/plugins/inputs/prometheus/prometheus.go b/plugins/inputs/prometheus/prometheus.go index a4409c5b0..284114258 100644 --- a/plugins/inputs/prometheus/prometheus.go +++ b/plugins/inputs/prometheus/prometheus.go @@ -34,6 +34,10 @@ type Prometheus struct { BearerToken string `toml:"bearer_token"` BearerTokenString string `toml:"bearer_token_string"` + // Basic authentication credentials + Username string `toml:"username"` + Password string `toml:"password"` + ResponseTimeout internal.Duration `toml:"response_timeout"` tls.ClientConfig @@ -75,7 +79,12 @@ var sampleConfig = ` ## OR # bearer_token_string = "abc_123" - ## Specify timeout duration for slower prometheus clients (default is 3s) + ## HTTP Basic Authentication username and password. ('bearer_token' and + ## 'bearer_token_string' take priority) + # username = "" + # password = "" + + ## Specify timeout duration for slower prometheus clients (default is 3s) # response_timeout = "3s" ## Optional TLS Config @@ -251,6 +260,8 @@ func (p *Prometheus) gatherURL(u URLAndAddress, acc telegraf.Accumulator) error req.Header.Set("Authorization", "Bearer "+string(token)) } else if p.BearerTokenString != "" { req.Header.Set("Authorization", "Bearer "+p.BearerTokenString) + } else if p.Username != "" || p.Password != "" { + req.SetBasicAuth(p.Username, p.Password) } var resp *http.Response