forked from newrelic/rpm_contrib
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' of http://github.com/kbaum/rpm_contrib
- Loading branch information
Showing
6 changed files
with
276 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
debugger | ||
if defined?(::Mongoid) && !NewRelic::Control.instance['disable_mongodb'] | ||
|
||
module Mongoid #:nodoc: | ||
module Document | ||
|
||
#adding call to super | ||
class << self | ||
alias :old_included :included | ||
|
||
def included(model) | ||
old_included(model) | ||
super | ||
end | ||
end | ||
end | ||
end | ||
|
||
module RPMContrib::Instrumentation | ||
|
||
module Mongoid | ||
def included(model) | ||
model.metaclass.class_eval do | ||
puts "adding mongoid method tracers for #{model.name}" | ||
add_method_tracer :create, 'Database/#{self.name}/create' | ||
add_method_tracer :create!, 'Database/#{self.name}/create!' | ||
add_method_tracer :delete_all, 'Database/#{self.name}/delete_all' | ||
add_method_tracer :destroy_all, 'Database/#{self.name}/destroy_all' | ||
add_method_tracer :all, 'Database/#{self.name}/all' | ||
add_method_tracer :find, 'Database/#{self.name}/find' | ||
add_method_tracer :first, 'Database/#{self.name}/first' | ||
add_method_tracer :last, 'Database/#{self.name}/last' | ||
add_method_tracer :find_or_create_by, 'Database/#{self.name}/find_or_create_by' | ||
add_method_tracer :find_or_initialize_by, 'Database/#{self.name}/find_or_initialize_by' | ||
add_method_tracer :min, 'Database/#{self.name}/min' | ||
add_method_tracer :max, 'Database/#{self.name}/max' | ||
add_method_tracer :sum, 'Database/#{self.name}/sum' | ||
end | ||
|
||
model.class_eval do | ||
add_method_tracer :update_attributes, 'Database/#{self.class.name}/update_attributes' | ||
add_method_tracer :update_attributes!, 'Database/#{self.class.name}/update_attributes!' | ||
add_method_tracer :save, 'Database/#{self.class.name}/save' | ||
add_method_tracer :save!, 'Database/#{self.class.name}/save!' | ||
add_method_tracer :delete, 'Database/#{self.class.name}/delete' | ||
add_method_tracer :destroy, 'Database/#{self.class.name}/destroy' | ||
|
||
end | ||
super | ||
end | ||
end | ||
::Mongoid::Document.extend(RPMContrib::Instrumentation::Mongoid) | ||
end | ||
end | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,175 @@ | ||
# | ||
# This file configures the NewRelic RPM Agent, NewRelic RPM monitors Rails | ||
# applications with deep visibility and low overhead. For more information, | ||
# visit www.newrelic.com. | ||
# | ||
# This configuration file is custom generated for rpm_config | ||
# | ||
# here are the settings that are common to all environments | ||
common: &default_settings | ||
# ============================== LICENSE KEY =============================== | ||
# You must specify the licence key associated with your New Relic account. | ||
# This key binds your Agent's data to your account in the New Relic RPM service. | ||
license_key: 'test' | ||
|
||
# Application Name | ||
# Set this to be the name of your application as you'd like it show up in RPM. | ||
# RPM will then auto-map instances of your application into a RPM "application" | ||
# on your home dashboard page. This setting does not prevent you from manually | ||
# defining applications. | ||
app_name: rpm_config | ||
|
||
# When 'enabled' is turned on, the agent collects performance data | ||
# by inserting lightweight tracers on key methods inside the rails | ||
# framework and asynchronously aggregating and reporting this | ||
# performance data to the NewRelic RPM service at newrelic.com. | ||
enabled: false | ||
|
||
# The newrelic agent generates its own log file to keep its logging | ||
# information separate from that of your application. Specify its | ||
# log level here. | ||
log_level: info | ||
|
||
# The newrelic agent communicates with the RPM service via http by | ||
# default. If you want to communicate via https to increase | ||
# security, then turn on SSL by setting this value to true. Note, | ||
# this will result in increased CPU overhead to perform the | ||
# encryption involved in SSL communication, but this work is done | ||
# asynchronously to the threads that process your application code, | ||
# so it should not impact response times. | ||
ssl: false | ||
|
||
# EXPERIMENTAL: enable verification of the SSL certificate sent by | ||
# the server. This setting has no effect unless SSL is enabled | ||
# above. This may block your application. Only enable it if the data | ||
# you send us needs end-to-end verified certificates. | ||
# | ||
# This means we cannot cache the DNS lookup, so each request to the | ||
# RPM service will perform a lookup. It also means that we cannot | ||
# use a non-blocking lookup, so in a worst case, if you have DNS | ||
# problems, your app may block indefinitely. | ||
# verify_certificate: true | ||
|
||
# Set your application's Apdex threshold value with the 'apdex_t' | ||
# setting, in seconds. The apdex_t value determines the buckets used | ||
# to compute your overall Apdex score. | ||
# Requests that take less than apdex_t seconds to process will be | ||
# classified as Satisfying transactions; more than apdex_t seconds | ||
# as Tolerating transactions; and more than four times the apdex_t | ||
# value as Frustrating transactions. | ||
# For more about the Apdex standard, see | ||
# http://support.newrelic.com/faqs/general/apdex | ||
|
||
apdex_t: 0.5 | ||
|
||
# Proxy settings for connecting to the RPM server. | ||
# | ||
# If a proxy is used, the host setting is required. Other settings | ||
# are optional. Default port is 8080. | ||
# | ||
# proxy_host: hostname | ||
# proxy_port: 8080 | ||
# proxy_user: | ||
# proxy_pass: | ||
|
||
|
||
# Tells transaction tracer and error collector (when enabled) | ||
# whether or not to capture HTTP params. When true, the RoR | ||
# filter_parameter_logging mechanism is used so that sensitive | ||
# parameters are not recorded | ||
capture_params: false | ||
|
||
|
||
# Transaction tracer captures deep information about slow | ||
# transactions and sends this to the RPM service once a | ||
# minute. Included in the transaction is the exact call sequence of | ||
# the transactions including any SQL statements issued. | ||
transaction_tracer: | ||
|
||
# Transaction tracer is enabled by default. Set this to false to | ||
# turn it off. This feature is only available at the Silver and | ||
# above product levels. | ||
enabled: true | ||
|
||
# Threshold in seconds for when to collect a transaction | ||
# trace. When the response time of a controller action exceeds | ||
# this threshold, a transaction trace will be recorded and sent to | ||
# RPM. Valid values are any float value, or (default) "apdex_f", | ||
# which will use the threshold for an dissatisfying Apdex | ||
# controller action - four times the Apdex T value. | ||
transaction_threshold: apdex_f | ||
|
||
# When transaction tracer is on, SQL statements can optionally be | ||
# recorded. The recorder has three modes, "off" which sends no | ||
# SQL, "raw" which sends the SQL statement in its original form, | ||
# and "obfuscated", which strips out numeric and string literals | ||
record_sql: obfuscated | ||
|
||
# Threshold in seconds for when to collect stack trace for a SQL | ||
# call. In other words, when SQL statements exceed this threshold, | ||
# then capture and send to RPM the current stack trace. This is | ||
# helpful for pinpointing where long SQL calls originate from | ||
stack_trace_threshold: 0.500 | ||
|
||
# Error collector captures information about uncaught exceptions and | ||
# sends them to RPM for viewing | ||
error_collector: | ||
|
||
# Error collector is enabled by default. Set this to false to turn | ||
# it off. This feature is only available at the Silver and above | ||
# product levels | ||
enabled: true | ||
|
||
# Tells error collector whether or not to capture a source snippet | ||
# around the place of the error when errors are View related. | ||
capture_source: true | ||
|
||
# To stop specific errors from reporting to RPM, set this property | ||
# to comma separated values | ||
# | ||
#ignore_errors: ActionController::RoutingError, ... | ||
|
||
# (Advanced) Uncomment this to ensure the cpu and memory samplers | ||
# won't run. Useful when you are using the agent to monitor an | ||
# external resource | ||
# disable_samplers: true | ||
|
||
# override default settings based on your application's environment | ||
|
||
# NOTE if your application has other named environments, you should | ||
# provide newrelic conifguration settings for these enviromnents here. | ||
|
||
development: | ||
<<: *default_settings | ||
# Turn off communication to RPM service in development mode. | ||
# NOTE: for initial evaluation purposes, you may want to temporarily | ||
# turn the agent on in development mode. | ||
enabled: false | ||
|
||
# When running in Developer Mode, the New Relic Agent will present | ||
# performance information on the last 100 transactions you have | ||
# executed since starting the mongrel. to view this data, go to | ||
# http://localhost:3000/newrelic | ||
developer: true | ||
|
||
test: | ||
<<: *default_settings | ||
# it almost never makes sense to turn on the agent when running | ||
# unit, functional or integration tests or the like. | ||
enabled: false | ||
|
||
# Turn on the agent in production for 24x7 monitoring. NewRelic | ||
# testing shows an average performance impact of < 5 ms per | ||
# transaction, you you can leave this on all the time without | ||
# incurring any user-visible performance degredation. | ||
production: | ||
<<: *default_settings | ||
enabled: true | ||
|
||
# many applications have a staging environment which behaves | ||
# identically to production. Support for that environment is provided | ||
# here. By default, the staging environment has the agent turned on. | ||
staging: | ||
<<: *default_settings | ||
enabled: true | ||
app_name: rpm_config |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
require "#{File.dirname(__FILE__)}/helper" | ||
require 'mongoid' | ||
require "#{File.dirname(__FILE__)}/../lib/rpm_contrib/instrumentation/mongoid" | ||
|
||
|
||
Mongoid.configure do |config| | ||
config.master = Mongo::Connection.new.db('animals') | ||
end | ||
|
||
class Dog | ||
include Mongoid::Document | ||
|
||
field :name | ||
end | ||
|
||
class MongoidTest < Test::Unit::TestCase | ||
|
||
# Called before every test method runs. Can be used | ||
# to set up fixture information. | ||
def setup | ||
# Do nothing | ||
end | ||
|
||
# Called after every test method runs. Can be used to tear | ||
# down fixture information. | ||
|
||
def teardown | ||
# Do nothing | ||
end | ||
|
||
# Fake test | ||
def test_fail | ||
Dog.create!(:name=>'rover') | ||
|
||
end | ||
end |
Empty file.