1
0

config.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package monitoring
  2. import (
  3. "errors"
  4. "github.com/imgproxy/imgproxy/v3/ensure"
  5. "github.com/imgproxy/imgproxy/v3/monitoring/cloudwatch"
  6. "github.com/imgproxy/imgproxy/v3/monitoring/datadog"
  7. "github.com/imgproxy/imgproxy/v3/monitoring/newrelic"
  8. "github.com/imgproxy/imgproxy/v3/monitoring/otel"
  9. "github.com/imgproxy/imgproxy/v3/monitoring/prometheus"
  10. )
  11. // Config holds the configuration for all monitoring services
  12. type Config struct {
  13. Prometheus prometheus.Config // Prometheus metrics configuration
  14. NewRelic newrelic.Config // New Relic configuration
  15. DataDog datadog.Config // DataDog configuration
  16. OpenTelemetry otel.Config // OpenTelemetry configuration
  17. CloudWatch cloudwatch.Config // CloudWatch configuration
  18. }
  19. // NewDefaultConfig returns a new default configuration for all monitoring services
  20. func NewDefaultConfig() Config {
  21. return Config{
  22. Prometheus: prometheus.NewDefaultConfig(),
  23. NewRelic: newrelic.NewDefaultConfig(),
  24. DataDog: datadog.NewDefaultConfig(),
  25. OpenTelemetry: otel.NewDefaultConfig(),
  26. CloudWatch: cloudwatch.NewDefaultConfig(),
  27. }
  28. }
  29. // LoadConfigFromEnv loads configuration for all monitoring services from environment variables
  30. func LoadConfigFromEnv(c *Config) (*Config, error) {
  31. c = ensure.Ensure(c, NewDefaultConfig)
  32. var promErr, nrErr, ddErr, otelErr, cwErr error
  33. _, promErr = prometheus.LoadConfigFromEnv(&c.Prometheus)
  34. _, nrErr = newrelic.LoadConfigFromEnv(&c.NewRelic)
  35. _, ddErr = datadog.LoadConfigFromEnv(&c.DataDog)
  36. _, otelErr = otel.LoadConfigFromEnv(&c.OpenTelemetry)
  37. _, cwErr = cloudwatch.LoadConfigFromEnv(&c.CloudWatch)
  38. err := errors.Join(promErr, nrErr, ddErr, otelErr, cwErr)
  39. return c, err
  40. }
  41. func (c *Config) Validate() error {
  42. return nil
  43. }