diff --git a/scrape/scrape.go b/scrape/scrape.go index dfa945852..383c262e0 100644 --- a/scrape/scrape.go +++ b/scrape/scrape.go @@ -1192,14 +1192,18 @@ mainLoop: // Calling Round ensures the time used is the wall clock, as otherwise .Sub // and .Add on time.Time behave differently (see time package docs). scrapeTime := time.Now().Round(0) - if AlignScrapeTimestamps && sl.interval > 100*ScrapeTimestampTolerance { + if AlignScrapeTimestamps { + tolerance := ScrapeTimestampTolerance + if maxTolerance := sl.interval / 100; tolerance < maxTolerance { + tolerance = maxTolerance + } // For some reason, a tick might have been skipped, in which case we // would call alignedScrapeTime.Add(interval) multiple times. for scrapeTime.Sub(alignedScrapeTime) >= sl.interval { alignedScrapeTime = alignedScrapeTime.Add(sl.interval) } // Align the scrape time if we are in the tolerance boundaries. - if scrapeTime.Sub(alignedScrapeTime) <= ScrapeTimestampTolerance { + if scrapeTime.Sub(alignedScrapeTime) <= tolerance { scrapeTime = alignedScrapeTime } }