diff --git a/agent/agent.go b/agent/agent.go index b6db56c5b..a591bc8d1 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -364,6 +364,8 @@ func (a *Agent) Run(shutdown chan struct{}) error { metricC := make(chan telegraf.Metric, 100) aggC := make(chan telegraf.Metric, 100) + now := time.Now() + // Start all ServicePlugins for _, input := range a.Config.Inputs { input.SetDefaultTags(a.Config.Tags) @@ -404,7 +406,7 @@ func (a *Agent) Run(shutdown chan struct{}) error { acc := NewAccumulator(agg, aggC) acc.SetPrecision(a.Config.Agent.Precision.Duration, a.Config.Agent.Interval.Duration) - agg.Run(acc, shutdown) + agg.Run(acc, now, shutdown) }(aggregator) } diff --git a/internal/models/running_aggregator.go b/internal/models/running_aggregator.go index 8189a6667..91e5334e8 100644 --- a/internal/models/running_aggregator.go +++ b/internal/models/running_aggregator.go @@ -114,6 +114,7 @@ func (r *RunningAggregator) reset() { // for period ticks to tell it when to push and reset the aggregator. func (r *RunningAggregator) Run( acc telegraf.Accumulator, + now time.Time, shutdown chan struct{}, ) { // The start of the period is truncated to the nearest second. @@ -132,7 +133,6 @@ func (r *RunningAggregator) Run( // 2nd interval: 00:10 - 00:20.5 // etc. // - now := time.Now() r.periodStart = now.Truncate(time.Second) truncation := now.Sub(r.periodStart) r.periodEnd = r.periodStart.Add(r.Config.Period) diff --git a/internal/models/running_aggregator_test.go b/internal/models/running_aggregator_test.go index 30279f0ee..cb56dc4ef 100644 --- a/internal/models/running_aggregator_test.go +++ b/internal/models/running_aggregator_test.go @@ -24,7 +24,7 @@ func TestAdd(t *testing.T) { }) assert.NoError(t, ra.Config.Filter.Compile()) acc := testutil.Accumulator{} - go ra.Run(&acc, make(chan struct{})) + go ra.Run(&acc, time.Now(), make(chan struct{})) m := ra.MakeMetric( "RITest", @@ -55,7 +55,7 @@ func TestAddMetricsOutsideCurrentPeriod(t *testing.T) { }) assert.NoError(t, ra.Config.Filter.Compile()) acc := testutil.Accumulator{} - go ra.Run(&acc, make(chan struct{})) + go ra.Run(&acc, time.Now(), make(chan struct{})) // metric before current period m := ra.MakeMetric( @@ -113,7 +113,7 @@ func TestAddAndPushOnePeriod(t *testing.T) { wg.Add(1) go func() { defer wg.Done() - ra.Run(&acc, shutdown) + ra.Run(&acc, time.Now(), shutdown) }() m := ra.MakeMetric(