Class: Anomonitor::ConfigurationValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/anomonitor/configuration_validator.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ ConfigurationValidator

Returns a new instance of ConfigurationValidator.



9
10
11
# File 'lib/anomonitor/configuration_validator.rb', line 9

def initialize(config)
  @config = config
end

Class Method Details

.warnings(config = Anomonitor.config) ⇒ Object



5
6
7
# File 'lib/anomonitor/configuration_validator.rb', line 5

def self.warnings(config = Anomonitor.config)
  new(config).warnings
end

Instance Method Details

#log!Object



36
37
38
# File 'lib/anomonitor/configuration_validator.rb', line 36

def log!
  warnings.each { |w| Anomonitor.logger.warn("[Anomonitor] Config: #{w}") }
end

#warningsObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/anomonitor/configuration_validator.rb', line 13

def warnings
  list = []
  if @config.notifier.nil? && @config.webhook_url.to_s.strip.empty?
    list << "No notifier configured (set c.webhook_url or c.notifier) — anomalies will record as webhook failed"
  end
  if @config.collectors.schema_drift
    tenants = begin
      Tenancy.tenant_names
    rescue StandardError
      []
    end
    if tenants.size < 2
      list << "schema_drift is enabled but fewer than 2 tenants are configured"
    end
  end
  if @config.poll_mode == :thread
    list << "poll_mode=:thread can double-collect under multi-worker Puma/Unicorn — prefer :cron or enable poll_lock"
  end
  path = @config.dashboard_path.to_s
  list << "dashboard_path should start with / (got #{path.inspect})" if path != "" && !path.start_with?("/")
  list
end