Add optional StatsD performance tracking

This commit is contained in:
Eugen Rochko 2017-01-18 23:44:29 +01:00
parent 7cfd5b680a
commit 306eb6e9c9
7 changed files with 43 additions and 4 deletions

View file

@ -30,6 +30,8 @@ module Mastodon
config.active_job.queue_adapter = :sidekiq
config.middleware.insert(0, 'StatsDMonitor')
config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'

View file

@ -104,4 +104,8 @@ Rails.application.configure do
config.react.variant = :production
config.active_record.logger = nil
config.to_prepare do
StatsD.backend = StatsD::Instrument::Backends::NullBackend if ENV['STATSD_ADDR'].blank?
end
end

View file

@ -10,7 +10,6 @@
# inflect.uncountable %w( fish sheep )
# end
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful'
# end
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'StatsD'
end

View file

@ -0,0 +1,20 @@
# frozen_string_literal: true
StatsD.prefix = 'mastodon'
StatsD.default_sample_rate = 1
StatsDMonitor.extend(StatsD::Instrument)
StatsDMonitor.statsd_measure(:call, 'request.duration')
STATSD_REQUEST_METRICS = {
'request.status.success' => 200,
'request.status.not_found' => 404,
'request.status.too_many_requests' => 429,
'request.status.internal_server_error' => 500,
}.freeze
STATSD_REQUEST_METRICS.each do |name, code|
StatsDMonitor.statsd_count_if(:call, name) do |status, _env, _body|
status.to_i == code
end
end