Replace self-rolled statsd instrumention with localshred/nsa (#5118)
This commit is contained in:
		
							parent
							
								
									f4ca116ea8
								
							
						
					
					
						commit
						35a8cafa35
					
				
							
								
								
									
										2
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Gemfile
									
									
									
									
									
								
							| @ -42,6 +42,7 @@ gem 'kaminari', '~> 1.0' | |||||||
| gem 'link_header', '~> 0.0' | gem 'link_header', '~> 0.0' | ||||||
| gem 'mime-types', '~> 3.1' | gem 'mime-types', '~> 3.1' | ||||||
| gem 'nokogiri', '~> 1.7' | gem 'nokogiri', '~> 1.7' | ||||||
|  | gem 'nsa', '~> 0.2' | ||||||
| gem 'oj', '~> 3.0' | gem 'oj', '~> 3.0' | ||||||
| gem 'ostatus2', '~> 2.0' | gem 'ostatus2', '~> 2.0' | ||||||
| gem 'ox', '~> 2.5' | gem 'ox', '~> 2.5' | ||||||
| @ -64,7 +65,6 @@ gem 'sidekiq-bulk', '~>0.1.1' | |||||||
| gem 'simple-navigation', '~> 4.0' | gem 'simple-navigation', '~> 4.0' | ||||||
| gem 'simple_form', '~> 3.4' | gem 'simple_form', '~> 3.4' | ||||||
| gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' | gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' | ||||||
| gem 'statsd-instrument', '~> 2.1' |  | ||||||
| gem 'twitter-text', '~> 1.14' | gem 'twitter-text', '~> 1.14' | ||||||
| gem 'tzinfo-data', '~> 1.2017' | gem 'tzinfo-data', '~> 1.2017' | ||||||
| gem 'webpacker', '~> 3.0' | gem 'webpacker', '~> 3.0' | ||||||
|  | |||||||
| @ -289,6 +289,11 @@ GEM | |||||||
|       mini_portile2 (~> 2.2.0) |       mini_portile2 (~> 2.2.0) | ||||||
|     nokogumbo (1.4.13) |     nokogumbo (1.4.13) | ||||||
|       nokogiri |       nokogiri | ||||||
|  |     nsa (0.2.4) | ||||||
|  |       activesupport (>= 4.2, < 6) | ||||||
|  |       concurrent-ruby (~> 1.0.0) | ||||||
|  |       sidekiq (>= 3.5.0) | ||||||
|  |       statsd-ruby (~> 1.2.0) | ||||||
|     oj (3.3.5) |     oj (3.3.5) | ||||||
|     openssl (2.0.5) |     openssl (2.0.5) | ||||||
|     orm_adapter (0.5.0) |     orm_adapter (0.5.0) | ||||||
| @ -483,7 +488,7 @@ GEM | |||||||
|     sshkit (1.14.0) |     sshkit (1.14.0) | ||||||
|       net-scp (>= 1.1.2) |       net-scp (>= 1.1.2) | ||||||
|       net-ssh (>= 2.8.0) |       net-ssh (>= 2.8.0) | ||||||
|     statsd-instrument (2.1.4) |     statsd-ruby (1.2.1) | ||||||
|     strong_migrations (0.1.9) |     strong_migrations (0.1.9) | ||||||
|       activerecord (>= 3.2.0) |       activerecord (>= 3.2.0) | ||||||
|     temple (0.8.0) |     temple (0.8.0) | ||||||
| @ -578,6 +583,7 @@ DEPENDENCIES | |||||||
|   microformats (~> 4.0) |   microformats (~> 4.0) | ||||||
|   mime-types (~> 3.1) |   mime-types (~> 3.1) | ||||||
|   nokogiri (~> 1.7) |   nokogiri (~> 1.7) | ||||||
|  |   nsa (~> 0.2) | ||||||
|   oj (~> 3.0) |   oj (~> 3.0) | ||||||
|   ostatus2 (~> 2.0) |   ostatus2 (~> 2.0) | ||||||
|   ox (~> 2.5) |   ox (~> 2.5) | ||||||
| @ -617,7 +623,6 @@ DEPENDENCIES | |||||||
|   simple_form (~> 3.4) |   simple_form (~> 3.4) | ||||||
|   simplecov (~> 0.14) |   simplecov (~> 0.14) | ||||||
|   sprockets-rails (~> 3.2) |   sprockets-rails (~> 3.2) | ||||||
|   statsd-instrument (~> 2.1) |  | ||||||
|   strong_migrations |   strong_migrations | ||||||
|   twitter-text (~> 1.14) |   twitter-text (~> 1.14) | ||||||
|   tzinfo-data (~> 1.2017) |   tzinfo-data (~> 1.2017) | ||||||
|  | |||||||
| @ -90,11 +90,6 @@ Rails.application.configure do | |||||||
| 
 | 
 | ||||||
|   config.action_mailer.delivery_method = ENV.fetch('SMTP_DELIVERY_METHOD', 'smtp').to_sym |   config.action_mailer.delivery_method = ENV.fetch('SMTP_DELIVERY_METHOD', 'smtp').to_sym | ||||||
| 
 | 
 | ||||||
|   config.to_prepare do |  | ||||||
|     StatsD.backend = StatsD::Instrument::Backends::NullBackend.new if ENV['STATSD_ADDR'].blank? |  | ||||||
|     Sidekiq::Logging.logger.level = Logger::WARN |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   config.action_dispatch.default_headers = { |   config.action_dispatch.default_headers = { | ||||||
|     'Server'                 => 'Mastodon', |     'Server'                 => 'Mastodon', | ||||||
|     'X-Frame-Options'        => 'DENY', |     'X-Frame-Options'        => 'DENY', | ||||||
|  | |||||||
| @ -1,18 +1,15 @@ | |||||||
| # frozen_string_literal: true | # frozen_string_literal: true | ||||||
| RESERVED_CHARACTERS_REGEX = /[\:\|\@]/ |  | ||||||
| 
 | 
 | ||||||
| StatsD.prefix              = 'mastodon' | if ENV['STATSD_ADDR'].present? | ||||||
| StatsD.default_sample_rate = 1 |   host, port = ENV['STATSD_ADDR'].split(':') | ||||||
| 
 | 
 | ||||||
| def clean_name(str) |   statsd = ::Statsd.new(host, port) | ||||||
|   str.gsub('::', '.').gsub(RESERVED_CHARACTERS_REGEX, '_') |   statsd.namespace = ['Mastodon', Rails.env].join('.') | ||||||
| end | 
 | ||||||
| 
 |   ::NSA.inform_statsd(statsd) do |informant| | ||||||
| ActiveSupport::Notifications.subscribe(/performance/) do |name, _start, _finish, _id, payload| |     informant.collect(:action_controller, :web) | ||||||
|   action      = payload[:action] || :increment |     informant.collect(:active_record, :db) | ||||||
|   measurement = payload[:measurement] |     informant.collect(:cache, :cache) | ||||||
|   value       = payload[:value] |     informant.collect(:sidekiq, :sidekiq) | ||||||
|   key_name    = clean_name("#{name}.#{measurement}") |   end | ||||||
| 
 |  | ||||||
|   StatsD.send(action.to_s, key_name, (value || 1)) |  | ||||||
| end | end | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user