lib/promscrape: use scrapeTimestamp when storing stale markers for failed scrape

This will make timestamps for stale markers more consistent for timestamps for other samples
This commit is contained in:
Aliaksandr Valialkin 2021-08-19 14:18:02 +03:00
parent 3454f25e0f
commit c3b24882a7

View file

@ -239,7 +239,8 @@ func (sw *scrapeWork) run(stopCh <-chan struct{}) {
timestamp += scrapeInterval.Milliseconds() timestamp += scrapeInterval.Milliseconds()
select { select {
case <-stopCh: case <-stopCh:
sw.sendStaleMarkers(false) t := time.Now().UnixNano() / 1e6
sw.sendStaleMarkers(t, false)
return return
case tt := <-ticker.C: case tt := <-ticker.C:
t := tt.UnixNano() / 1e6 t := tt.UnixNano() / 1e6
@ -323,7 +324,7 @@ func (sw *scrapeWork) scrapeInternal(scrapeTimestamp, realTimestamp int64) error
sw.addAutoTimeseries(wc, "scrape_samples_post_metric_relabeling", float64(samplesPostRelabeling), scrapeTimestamp) sw.addAutoTimeseries(wc, "scrape_samples_post_metric_relabeling", float64(samplesPostRelabeling), scrapeTimestamp)
sw.addAutoTimeseries(wc, "scrape_series_added", float64(seriesAdded), scrapeTimestamp) sw.addAutoTimeseries(wc, "scrape_series_added", float64(seriesAdded), scrapeTimestamp)
if up == 0 { if up == 0 {
sw.sendStaleMarkers(true) sw.sendStaleMarkers(scrapeTimestamp, true)
} }
sw.updateActiveSeries(wc) sw.updateActiveSeries(wc)
sw.pushData(&wc.writeRequest) sw.pushData(&wc.writeRequest)
@ -520,12 +521,12 @@ func (sw *scrapeWork) updateActiveSeries(wc *writeRequestCtx) {
sw.activeSeries = as sw.activeSeries = as
} }
func (sw *scrapeWork) sendStaleMarkers(skipAutogenSeries bool) { func (sw *scrapeWork) sendStaleMarkers(timestamp int64, skipAutogenSeries bool) {
series := make([]prompbmarshal.TimeSeries, 0, len(sw.activeSeries)) series := make([]prompbmarshal.TimeSeries, 0, len(sw.activeSeries))
staleMarkSamples := []prompbmarshal.Sample{ staleMarkSamples := []prompbmarshal.Sample{
{ {
Value: decimal.StaleNaN, Value: decimal.StaleNaN,
Timestamp: time.Now().UnixNano() / 1e6, Timestamp: timestamp,
}, },
} }
for _, b := range sw.activeSeries { for _, b := range sw.activeSeries {