class Nightwing::Instrumentation::ActiveRecord
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
Constants
- SQL_INSERT_DELETE_PARSER_REGEXP
- SQL_SELECT_REGEXP
- SQL_UPDATE_REGEXP
Public Instance Methods
call(_name, started, finished, _unique_id, payload)
click to toggle source
# 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
Private Instance Methods
query_info(query)
click to toggle source
# File lib/nightwing/instrumentation/active_record.rb, line 30 def query_info(query) case query when SQL_INSERT_DELETE_PARSER_REGEXP [$3, $1] when SQL_UPDATE_REGEXP [$1, "update"] when SQL_SELECT_REGEXP [$1, "select"] end end