Class: Nightwing::Instrumentation::ActiveRecord

Inherits:
Object
  • Object
show all
Defined in:
lib/nightwing/instrumentation/active_record.rb

Overview

This code was influenced by Matt Aimonetti’s awesome blog post: “Practical Guide to StatsD/Graphite Monitoring” Check it out: matt.aimonetti.net/posts/2013/06/26/practical-guide-to-graphite-monitoring

Constant Summary collapse

SQL_INSERT_DELETE_PARSER_REGEXP =
/^(\w+)\s(\w+)\s\W*(\w+)/
SQL_SELECT_REGEXP =
/select .*? FROM \W*(\w+)/i
SQL_UPDATE_REGEXP =
/update \W*(\w+)/i

Instance Method Summary collapse

Instance Method Details

#call(_name, started, finished, _unique_id, payload) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/nightwing/instrumentation/active_record.rb', line 10

def call(_name, started, finished, _unique_id, payload)
  if payload[:name] == "SQL" || payload[:name] =~ /.* Load$/ || payload[:name].nil?
    table, action = query_info(payload[:sql])
  end

  if table
    action.downcase!
    table.downcase!
    query_time = (finished - started) * 1_000

    Nightwing.client.timing "sql.#{action}.time", query_time.round
    Nightwing.client.timing "sql.#{action}.#{table}.time", query_time.round

    Nightwing.client.increment "sql.#{action}.processed"
    Nightwing.client.increment "sql.#{action}.#{table}.processed"
  end
end