56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/govuk_app_config/govuk_prometheus_exporter.rb', line 56
def self.configure(collectors: [], default_aggregation: PrometheusExporter::Metric::Histogram)
return unless should_configure
PrometheusExporter::Metric::Histogram.default_buckets = [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10, 15, 25, 50].freeze
PrometheusExporter::Metric::Base.default_aggregation = default_aggregation
if defined?(Sidekiq)
Sidekiq.configure_server do |config|
require "sidekiq/api"
require "prometheus_exporter/instrumentation"
config.server_middleware do |chain|
chain.add PrometheusExporter::Instrumentation::Sidekiq
end
config.death_handlers << PrometheusExporter::Instrumentation::Sidekiq.death_handler
config.on :startup do
PrometheusExporter::Instrumentation::Process.start(type: "sidekiq")
PrometheusExporter::Instrumentation::SidekiqProcess.start
PrometheusExporter::Instrumentation::SidekiqQueue.start
PrometheusExporter::Instrumentation::SidekiqStats.start
end
end
end
begin
server = PrometheusExporter::Server::WebServer.new bind: "0.0.0.0", port: 9394
collectors.each { |collector| server.collector.register_collector(collector.new) }
server.start
if defined?(Rails)
Rails.application.middleware.unshift RailsMiddleware, instrument: :prepend
end
if defined?(Sinatra)
Sinatra.use SinatraMiddleware
end
rescue Errno::EADDRINUSE
warn "Could not start Prometheus metrics server as address already in use."
end
end
|