Bladeren bron

feat: Introduce configurable metrics emitter query window (#3451)

Signed-off-by: Noahnut <liveinthewide@gmail.com>
Fan Zhuang 4 maanden geleden
bovenliggende
commit
13b229258b
2 gewijzigde bestanden met toevoegingen van 14 en 1 verwijderingen
  1. 2 1
      pkg/costmodel/metrics.go
  2. 12 0
      pkg/env/costmodel.go

+ 2 - 1
pkg/costmodel/metrics.go

@@ -477,7 +477,8 @@ func (cmme *CostModelMetricsEmitter) Start() bool {
 			}
 
 			end := time.Now()
-			start := end.Add(-time.Minute * 2)
+			queryWindow := env.GetMetricsEmitterQueryWindow()
+			start := end.Add(-queryWindow)
 
 			data, err := cmme.Model.ComputeCostData(start, end)
 			if err != nil {

+ 12 - 0
pkg/env/costmodel.go

@@ -1,6 +1,8 @@
 package env
 
 import (
+	"time"
+
 	"github.com/opencost/opencost/core/pkg/env"
 )
 
@@ -91,6 +93,9 @@ const (
 	// MCP Server
 	MCPServerEnabledEnvVar = "MCP_SERVER_ENABLED"
 	MCPHTTPPortEnvVar      = "MCP_HTTP_PORT"
+
+	// Metrics Emitter
+	MetricsEmitterQueryWindowEnvVar = "METRICS_EMITTER_QUERY_WINDOW"
 )
 
 func GetGCPAuthSecretFilePath() string {
@@ -383,3 +388,10 @@ func IsMCPServerEnabled() bool {
 func GetMCPHTTPPort() int {
 	return env.GetInt(MCPHTTPPortEnvVar, 8081)
 }
+
+// GetMetricsEmitterQueryWindow returns the time window for the metrics emitter
+// to query historical data. This controls the time range used in ComputeCostData queries.
+// Default is 2m.
+func GetMetricsEmitterQueryWindow() time.Duration {
+	return env.GetDuration(MetricsEmitterQueryWindowEnvVar, 2*time.Minute)
+}