mirror of
https://github.com/imgproxy/imgproxy.git
synced 2025-12-23 22:11:10 +02:00
54 lines
1.7 KiB
Go
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
|
|
}
|