1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-12-23 22:11:10 +02:00
Files
imgproxy/monitoring/config.go
2025-10-01 20:05:06 +02:00

54 lines
1.7 KiB
Go

package monitoring
import (
"errors"
"github.com/imgproxy/imgproxy/v3/ensure"
"github.com/imgproxy/imgproxy/v3/monitoring/cloudwatch"
"github.com/imgproxy/imgproxy/v3/monitoring/datadog"
"github.com/imgproxy/imgproxy/v3/monitoring/newrelic"
"github.com/imgproxy/imgproxy/v3/monitoring/otel"
"github.com/imgproxy/imgproxy/v3/monitoring/prometheus"
)
// Config holds the configuration for all monitoring services
type Config struct {
Prometheus prometheus.Config // Prometheus metrics configuration
NewRelic newrelic.Config // New Relic configuration
DataDog datadog.Config // DataDog configuration
OpenTelemetry otel.Config // OpenTelemetry configuration
CloudWatch cloudwatch.Config // CloudWatch configuration
}
// NewDefaultConfig returns a new default configuration for all monitoring services
func NewDefaultConfig() Config {
return Config{
Prometheus: prometheus.NewDefaultConfig(),
NewRelic: newrelic.NewDefaultConfig(),
DataDog: datadog.NewDefaultConfig(),
OpenTelemetry: otel.NewDefaultConfig(),
CloudWatch: cloudwatch.NewDefaultConfig(),
}
}
// LoadConfigFromEnv loads configuration for all monitoring services from environment variables
func LoadConfigFromEnv(c *Config) (*Config, error) {
c = ensure.Ensure(c, NewDefaultConfig)
var promErr, nrErr, ddErr, otelErr, cwErr error
_, promErr = prometheus.LoadConfigFromEnv(&c.Prometheus)
_, nrErr = newrelic.LoadConfigFromEnv(&c.NewRelic)
_, ddErr = datadog.LoadConfigFromEnv(&c.DataDog)
_, otelErr = otel.LoadConfigFromEnv(&c.OpenTelemetry)
_, cwErr = cloudwatch.LoadConfigFromEnv(&c.CloudWatch)
err := errors.Join(promErr, nrErr, ddErr, otelErr, cwErr)
return c, err
}
func (c *Config) Validate() error {
return nil
}