signoz/pkg/querier/config.go

51 lines
1.6 KiB
Go
Raw Permalink Normal View History

package querier
import (
"time"
"github.com/SigNoz/signoz/pkg/errors"
"github.com/SigNoz/signoz/pkg/factory"
)
// Config represents the configuration for the querier
type Config struct {
// CacheTTL is the TTL for cached query results
CacheTTL time.Duration `yaml:"cache_ttl" mapstructure:"cache_ttl"`
// FluxInterval is the interval for recent data that should not be cached
FluxInterval time.Duration `yaml:"flux_interval" mapstructure:"flux_interval"`
// MaxConcurrentQueries is the maximum number of concurrent queries for missing ranges
MaxConcurrentQueries int `yaml:"max_concurrent_queries" mapstructure:"max_concurrent_queries"`
}
// NewConfigFactory creates a new config factory for querier
func NewConfigFactory() factory.ConfigFactory {
return factory.NewConfigFactory(factory.MustNewName("querier"), newConfig)
}
func newConfig() factory.Config {
return Config{
// Default values
CacheTTL: 168 * time.Hour,
FluxInterval: 5 * time.Minute,
MaxConcurrentQueries: 4,
}
}
// Validate validates the configuration
func (c Config) Validate() error {
if c.CacheTTL <= 0 {
return errors.NewInvalidInputf(errors.CodeInvalidInput, "cache_ttl must be positive, got %v", c.CacheTTL)
}
if c.FluxInterval <= 0 {
return errors.NewInvalidInputf(errors.CodeInvalidInput, "flux_interval must be positive, got %v", c.FluxInterval)
}
if c.MaxConcurrentQueries <= 0 {
return errors.NewInvalidInputf(errors.CodeInvalidInput, "max_concurrent_queries must be positive, got %v", c.MaxConcurrentQueries)
}
return nil
}
func (c Config) Provider() string {
return "signoz"
}