diff --git a/scrape/manager.go b/scrape/manager.go index 259a645d79..cba026c1b2 100644 --- a/scrape/manager.go +++ b/scrape/manager.go @@ -213,14 +213,13 @@ func (m *Manager) reload() { if t, ok := activeTargets[target.labels.Hash()]; ok { level.Warn(m.logger).Log( "msg", "Found targets with same labels after relabelling", - "target", t.URL().String(), - "target", target.URL().String(), + "target", t.DiscoveredLabels().Get(model.AddressLabel), + "target", target.DiscoveredLabels().Get(model.AddressLabel), ) } activeTargets[target.labels.Hash()] = target } } - } // setOffsetSeed calculates a global offsetSeed per server relying on extra label set. diff --git a/scrape/manager_test.go b/scrape/manager_test.go index 75ac9ea692..7d5e63e008 100644 --- a/scrape/manager_test.go +++ b/scrape/manager_test.go @@ -622,6 +622,32 @@ func TestManagerTargetsUpdates(t *testing.T) { } } +func TestManagerDuplicateAfterRelabellingWarning(t *testing.T) { + var output []interface{} + logger := log.Logger(log.LoggerFunc(func(keyvals ...interface{}) error { + output = keyvals + return nil + })) + + opts := Options{} + testRegistry := prometheus.NewRegistry() + m, err := NewManager(&opts, logger, nil, testRegistry) + require.NoError(t, err) + + m.scrapePools = map[string]*scrapePool{} + sp := &scrapePool{ + activeTargets: map[uint64]*Target{}, + } + sp.activeTargets[uint64(0)] = &Target{discoveredLabels: labels.FromStrings("__address__", "foo")} + sp.activeTargets[uint64(1)] = &Target{discoveredLabels: labels.FromStrings("__address__", "bar")} + m.scrapePools["default"] = sp + + m.reload() + require.Contains(t, output, "Found targets with same labels after relabelling") + require.Contains(t, output, "foo") + require.Contains(t, output, "bar") +} + func TestSetOffsetSeed(t *testing.T) { getConfig := func(prometheus string) *config.Config { cfgText := `