1
0

config.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package prometheus
  2. import (
  3. "errors"
  4. "github.com/imgproxy/imgproxy/v3/ensure"
  5. "github.com/imgproxy/imgproxy/v3/env"
  6. )
  7. var (
  8. IMGPROXY_PROMETHEUS_BIND = env.Describe("IMGPROXY_PROMETHEUS_BIND", "string")
  9. IMGPROXY_PROMETHEUS_NAMESPACE = env.Describe("IMGPROXY_PROMETHEUS_NAMESPACE", "string")
  10. )
  11. // Config holds the configuration for Prometheus monitoring
  12. type Config struct {
  13. Bind string // Prometheus server bind address
  14. Namespace string // Prometheus metrics namespace
  15. }
  16. // NewDefaultConfig returns a new default configuration for Prometheus monitoring
  17. func NewDefaultConfig() Config {
  18. return Config{
  19. Bind: "",
  20. Namespace: "",
  21. }
  22. }
  23. // LoadConfigFromEnv loads configuration from environment variables
  24. func LoadConfigFromEnv(c *Config) (*Config, error) {
  25. c = ensure.Ensure(c, NewDefaultConfig)
  26. err := errors.Join(
  27. env.String(&c.Bind, IMGPROXY_PROMETHEUS_BIND),
  28. env.String(&c.Namespace, IMGPROXY_PROMETHEUS_NAMESPACE),
  29. )
  30. return c, err
  31. }
  32. // Enabled returns true if Prometheus monitoring is enabled
  33. func (c *Config) Enabled() bool {
  34. return len(c.Bind) > 0
  35. }
  36. // Validate checks the configuration for errors
  37. func (c *Config) Validate() error {
  38. if !c.Enabled() {
  39. return nil
  40. }
  41. return nil
  42. }