From bd7932135910d46355caaea6f8eeb5dcb7cd651d Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Sat, 8 Feb 2020 23:14:42 +0100 Subject: [PATCH] Fix: don't miss address scheme --- CHANGELOG.next.asciidoc | 1 + metricbeat/mb/lightmetricset.go | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 67505496c630..f0ff64315e0d 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -84,6 +84,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Change lookup_fields from metricset.host to service.address {pull}15883[15883] - Add dedot for cloudwatch metric name. {issue}15916[15916] {pull}15917[15917] - Fixed issue `logstash-xpack` module suddenly ceasing to monitor Logstash. {issue}15974[15974] {pull}16044[16044] +- Fix skipping protocol scheme by light modules. {pull}16205[pull] *Packetbeat* diff --git a/metricbeat/mb/lightmetricset.go b/metricbeat/mb/lightmetricset.go index dee1d0afb7ba..16f5d18dc2a6 100644 --- a/metricbeat/mb/lightmetricset.go +++ b/metricbeat/mb/lightmetricset.go @@ -18,6 +18,9 @@ package mb import ( + "fmt" + "net/url" + "github.com/pkg/errors" "github.com/elastic/beats/libbeat/common" @@ -83,7 +86,18 @@ func (m *LightMetricSet) Registration(r *Register) (MetricSetRegistration, error // At this point host parser was already run, we need to run this again // with the overriden defaults if registration.HostParser != nil { - base.hostData, err = registration.HostParser(base.module, base.host) + u, err := url.Parse(base.hostData.URI) + if err != nil { + return nil, errors.Wrapf(err, "host data URI parsing failed on light metricset factory for '%s/%s'", m.Module, m.Name) + } + + var host string + if u.Scheme != "" { + host = fmt.Sprintf("%s://%s", u.Scheme, u.Host) + } else { + host = base.host + } + base.hostData, err = registration.HostParser(base.module, host) if err != nil { return nil, errors.Wrapf(err, "host parser failed on light metricset factory for '%s/%s'", m.Module, m.Name) }