|
|
@ -1200,7 +1200,7 @@ mainLoop: |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
last = sl.scrapeAndReport(sl.interval, sl.timeout, last, scrapeTime, errc) |
|
|
|
last = sl.scrapeAndReport(last, scrapeTime, errc) |
|
|
|
|
|
|
|
|
|
|
|
select { |
|
|
|
select { |
|
|
|
case <-sl.parentCtx.Done(): |
|
|
|
case <-sl.parentCtx.Done(): |
|
|
@ -1224,12 +1224,12 @@ mainLoop: |
|
|
|
// In the happy scenario, a single appender is used.
|
|
|
|
// In the happy scenario, a single appender is used.
|
|
|
|
// This function uses sl.parentCtx instead of sl.ctx on purpose. A scrape should
|
|
|
|
// This function uses sl.parentCtx instead of sl.ctx on purpose. A scrape should
|
|
|
|
// only be cancelled on shutdown, not on reloads.
|
|
|
|
// only be cancelled on shutdown, not on reloads.
|
|
|
|
func (sl *scrapeLoop) scrapeAndReport(interval, timeout time.Duration, last, appendTime time.Time, errc chan<- error) time.Time { |
|
|
|
func (sl *scrapeLoop) scrapeAndReport(last, appendTime time.Time, errc chan<- error) time.Time { |
|
|
|
start := time.Now() |
|
|
|
start := time.Now() |
|
|
|
|
|
|
|
|
|
|
|
// Only record after the first scrape.
|
|
|
|
// Only record after the first scrape.
|
|
|
|
if !last.IsZero() { |
|
|
|
if !last.IsZero() { |
|
|
|
targetIntervalLength.WithLabelValues(interval.String()).Observe( |
|
|
|
targetIntervalLength.WithLabelValues(sl.interval.String()).Observe( |
|
|
|
time.Since(last).Seconds(), |
|
|
|
time.Since(last).Seconds(), |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
@ -1254,7 +1254,7 @@ func (sl *scrapeLoop) scrapeAndReport(interval, timeout time.Duration, last, app |
|
|
|
}() |
|
|
|
}() |
|
|
|
|
|
|
|
|
|
|
|
defer func() { |
|
|
|
defer func() { |
|
|
|
if err = sl.report(app, appendTime, timeout, time.Since(start), total, added, seriesAdded, scrapeErr); err != nil { |
|
|
|
if err = sl.report(app, appendTime, time.Since(start), total, added, seriesAdded, scrapeErr); err != nil { |
|
|
|
level.Warn(sl.l).Log("msg", "Appending scrape report failed", "err", err) |
|
|
|
level.Warn(sl.l).Log("msg", "Appending scrape report failed", "err", err) |
|
|
|
} |
|
|
|
} |
|
|
|
}() |
|
|
|
}() |
|
|
@ -1275,7 +1275,7 @@ func (sl *scrapeLoop) scrapeAndReport(interval, timeout time.Duration, last, app |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var contentType string |
|
|
|
var contentType string |
|
|
|
scrapeCtx, cancel := context.WithTimeout(sl.parentCtx, timeout) |
|
|
|
scrapeCtx, cancel := context.WithTimeout(sl.parentCtx, sl.timeout) |
|
|
|
contentType, scrapeErr = sl.scraper.scrape(scrapeCtx, buf) |
|
|
|
contentType, scrapeErr = sl.scraper.scrape(scrapeCtx, buf) |
|
|
|
cancel() |
|
|
|
cancel() |
|
|
|
|
|
|
|
|
|
|
@ -1647,7 +1647,7 @@ const ( |
|
|
|
scrapeSampleLimitMetricName = "scrape_sample_limit" + "\xff" |
|
|
|
scrapeSampleLimitMetricName = "scrape_sample_limit" + "\xff" |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
func (sl *scrapeLoop) report(app storage.Appender, start time.Time, timeout, duration time.Duration, scraped, added, seriesAdded int, scrapeErr error) (err error) { |
|
|
|
func (sl *scrapeLoop) report(app storage.Appender, start time.Time, duration time.Duration, scraped, added, seriesAdded int, scrapeErr error) (err error) { |
|
|
|
sl.scraper.Report(start, duration, scrapeErr) |
|
|
|
sl.scraper.Report(start, duration, scrapeErr) |
|
|
|
|
|
|
|
|
|
|
|
ts := timestamp.FromTime(start) |
|
|
|
ts := timestamp.FromTime(start) |
|
|
@ -1673,7 +1673,7 @@ func (sl *scrapeLoop) report(app storage.Appender, start time.Time, timeout, dur |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
if sl.reportScrapeTimeout { |
|
|
|
if sl.reportScrapeTimeout { |
|
|
|
if err = sl.addReportSample(app, scrapeTimeoutMetricName, ts, timeout.Seconds()); err != nil { |
|
|
|
if err = sl.addReportSample(app, scrapeTimeoutMetricName, ts, sl.timeout.Seconds()); err != nil { |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
if err = sl.addReportSample(app, scrapeSampleLimitMetricName, ts, float64(sl.sampleLimit)); err != nil { |
|
|
|
if err = sl.addReportSample(app, scrapeSampleLimitMetricName, ts, float64(sl.sampleLimit)); err != nil { |
|
|
|