Fix Auto metrics relabeled errors (#593)

* Fix Auto metrics relabeled errors

* Finalize auto-genenated  Labels

* Fix Test Errors

Co-authored-by: xinyulong <xinyulong@kuaishou.com>
This commit is contained in:
Ween 2020-06-30 03:29:29 +08:00 committed by Aliaksandr Valialkin
parent 156c83d112
commit b42cf33c4d
2 changed files with 13 additions and 8 deletions

View file

@ -207,7 +207,7 @@ func (sw *scrapeWork) scrapeInternal(timestamp int64) error {
samplesScraped := len(srcRows) samplesScraped := len(srcRows)
scrapedSamples.Update(float64(samplesScraped)) scrapedSamples.Update(float64(samplesScraped))
for i := range srcRows { for i := range srcRows {
sw.addRowToTimeseries(&srcRows[i], timestamp) sw.addRowToTimeseries(&srcRows[i], timestamp, true)
} }
sw.rows.Reset() sw.rows.Reset()
if sw.Config.SampleLimit > 0 && len(sw.writeRequest.Timeseries) > sw.Config.SampleLimit { if sw.Config.SampleLimit > 0 && len(sw.writeRequest.Timeseries) > sw.Config.SampleLimit {
@ -238,13 +238,17 @@ func (sw *scrapeWork) addAutoTimeseries(name string, value float64, timestamp in
sw.tmpRow.Tags = nil sw.tmpRow.Tags = nil
sw.tmpRow.Value = value sw.tmpRow.Value = value
sw.tmpRow.Timestamp = timestamp sw.tmpRow.Timestamp = timestamp
sw.addRowToTimeseries(&sw.tmpRow, timestamp) sw.addRowToTimeseries(&sw.tmpRow, timestamp, false)
} }
func (sw *scrapeWork) addRowToTimeseries(r *parser.Row, timestamp int64) { func (sw *scrapeWork) addRowToTimeseries(r *parser.Row, timestamp int64, needRelabel bool) {
labelsLen := len(sw.labels) labelsLen := len(sw.labels)
sw.labels = appendLabels(sw.labels, r.Metric, r.Tags, sw.Config.Labels, sw.Config.HonorLabels) sw.labels = appendLabels(sw.labels, r.Metric, r.Tags, sw.Config.Labels, sw.Config.HonorLabels)
if needRelabel {
sw.labels = promrelabel.ApplyRelabelConfigs(sw.labels, labelsLen, sw.Config.MetricRelabelConfigs, true) sw.labels = promrelabel.ApplyRelabelConfigs(sw.labels, labelsLen, sw.Config.MetricRelabelConfigs, true)
} else {
sw.labels = promrelabel.FinalizeLabels(sw.labels[:labelsLen], sw.labels[labelsLen:])
}
if len(sw.labels) == labelsLen { if len(sw.labels) == labelsLen {
// Skip row without labels. // Skip row without labels.
return return

View file

@ -245,10 +245,10 @@ func TestScrapeWorkScrapeInternalSuccess(t *testing.T) {
}, ` }, `
foo{bar="baz",job="xx",instance="foo.com/xx"} 34.44 123 foo{bar="baz",job="xx",instance="foo.com/xx"} 34.44 123
bar{a="b",job="xx",instance="foo.com/xx"} -3e4 123 bar{a="b",job="xx",instance="foo.com/xx"} -3e4 123
up{job="xx",instance="foo.com/xx"} 1 123 up{job="xx"} 1 123
scrape_samples_scraped{job="xx",instance="foo.com/xx"} 2 123 scrape_samples_scraped{job="xx"} 2 123
scrape_duration_seconds{job="xx",instance="foo.com/xx"} 0 123 scrape_duration_seconds{job="xx"} 0 123
scrape_samples_post_metric_relabeling{job="xx",instance="foo.com/xx"} 2 123 scrape_samples_post_metric_relabeling{job="xx"} 2 123
`) `)
f(` f(`
foo{bar="baz"} 34.44 foo{bar="baz"} 34.44
@ -281,6 +281,7 @@ func TestScrapeWorkScrapeInternalSuccess(t *testing.T) {
}, },
}, ` }, `
foo{bar="baz",job="xx",instance="foo.com"} 34.44 123 foo{bar="baz",job="xx",instance="foo.com"} 34.44 123
up{job="xx",instance="foo.com"} 1 123
scrape_samples_scraped{job="xx",instance="foo.com"} 4 123 scrape_samples_scraped{job="xx",instance="foo.com"} 4 123
scrape_duration_seconds{job="xx",instance="foo.com"} 0 123 scrape_duration_seconds{job="xx",instance="foo.com"} 0 123
scrape_samples_post_metric_relabeling{job="xx",instance="foo.com"} 1 123 scrape_samples_post_metric_relabeling{job="xx",instance="foo.com"} 1 123