26 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
if ENV['MASTODON_PROMETHEUS_EXPORTER_ENABLED'] == 'true'
 | 
						|
  require 'prometheus_exporter'
 | 
						|
  require 'prometheus_exporter/middleware'
 | 
						|
 | 
						|
  if ENV['MASTODON_PROMETHEUS_EXPORTER_LOCAL'] == 'true'
 | 
						|
    require 'mastodon/prometheus_exporter/local_server'
 | 
						|
 | 
						|
    # bind is the address, on which the webserver will listen
 | 
						|
    # port is the port that will provide the /metrics route
 | 
						|
    Mastodon::PrometheusExporter::LocalServer.bind = ENV.fetch('MASTODON_PROMETHEUS_EXPORTER_HOST', 'localhost')
 | 
						|
    Mastodon::PrometheusExporter::LocalServer.port = ENV.fetch('MASTODON_PROMETHEUS_EXPORTER_PORT', '9394').to_i
 | 
						|
  end
 | 
						|
 | 
						|
  if ENV['MASTODON_PROMETHEUS_EXPORTER_WEB_DETAILED_METRICS'] == 'true'
 | 
						|
    # Optional, as those metrics might generate extra overhead and be redundant with what OTEL provides
 | 
						|
    # Per-action/controller request stats like HTTP status and timings
 | 
						|
    Rails.application.middleware.unshift PrometheusExporter::Middleware
 | 
						|
  else
 | 
						|
    # Include stripped down version of PrometheusExporter::Middleware that only collects queue time
 | 
						|
    require 'mastodon/middleware/prometheus_queue_time'
 | 
						|
    Rails.application.middleware.unshift Mastodon::Middleware::PrometheusQueueTime, instrument: false
 | 
						|
  end
 | 
						|
end
 |