Skip to content

Commit

Permalink
new relic again
Browse files Browse the repository at this point in the history
  • Loading branch information
redinger committed Apr 13, 2009
1 parent c6ffb34 commit 80b9265
Show file tree
Hide file tree
Showing 115 changed files with 9,828 additions and 0 deletions.
137 changes: 137 additions & 0 deletions config/newrelic.yml
@@ -0,0 +1,137 @@
#
# 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.
#
#
#
# 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: 'PASTE_YOUR_KEY_HERE'

# 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: My Application

# the 'enabled' setting is used to turn on the NewRelic Agent. When false,
# your application is not instrumented and the Agent does not start up or
# collect any data; it is a complete shut-off.
#
# when 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.
# below.
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


# 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: proxy.sample.com
# 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_parameters 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


# 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, ...


# 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: My Application (Staging)
37 changes: 37 additions & 0 deletions vendor/plugins/newrelic_rpm/LICENSE
@@ -0,0 +1,37 @@
Copyright (c) 2008 New Relic, Inc. All rights reserved.

Certain inventions disclosed in this file may be claimed within
patents owned or patent applications filed by New Relic, Inc. or third
parties.

Subject to the terms of this notice, New Relic grants you a
nonexclusive, nontransferable license, without the right to
sublicense, to (a) install and execute one copy of these files on any
number of workstations owned or controlled by you and (b) distribute
verbatim copies of these files to third parties. As a condition to the
foregoing grant, you must provide this notice along with each copy you
distribute and you must not remove, alter, or obscure this notice. All
other use, reproduction, modification, distribution, or other
exploitation of these files is strictly prohibited, except as may be set
forth in a separate written license agreement between you and New
Relic. The terms of any such license agreement will control over this
notice. The license stated above will be automatically terminated and
revoked if you exceed its scope or violate any of the terms of this
notice.

This License does not grant permission to use the trade names,
trademarks, service marks, or product names of New Relic, except as
required for reasonable and customary use in describing the origin of
this file and reproducing the content of this notice. You may not
mark or brand this file with any trade name, trademarks, service
marks, or product names other than the original brand (if any)
provided by New Relic.

Unless otherwise expressly agreed by New Relic in a separate written
license agreement, these files are provided AS IS, WITHOUT WARRANTY OF
ANY KIND, including without any implied warranties of MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE, or NON-INFRINGEMENT. As a
condition to your use of these files, you are solely responsible for
such use. New Relic will have no liability to you for direct,
indirect, consequential, incidental, special, or punitive damages or
for lost profits or data.
136 changes: 136 additions & 0 deletions vendor/plugins/newrelic_rpm/README
@@ -0,0 +1,136 @@
= New Relic RPM

* http://www.newrelic.com

New Relic RPM is a Ruby performance management system, developed by
New Relic, Inc. RPM provides you with deep information about the
performance of your Ruby on Rails or Merb application as it runs in
production. The New Relic Agent is distributed as a either a Rails
plugin or a Gem, both hosted on RubyForge.

The New Relic Agent runs in one of two modes:

* Developer Mode : Adds a web interface mapped to /newrelic to your
application for showing detailed performance metrics on a page by
page basis.

* Production Mode : Low overhead instrumentation that captures
detailed information on your application running in production and
transmits them to rpm.newrelic.com where you can monitor them in
real time.

=== Developer Mode

Developer mode is on by default when you run your application in the
development environment (but not when it runs in other environments.)
When running in developer mode, RPM will track the performance of
every http request serviced by your application, and store in memory
this information for the last 100 http transactions.

When running in Developer Mode, the RPM will also add a few pages to
your application that allow you to analyze this performance
information. (Don't worry - those pages are not added to your
application's routes when you run in production mode.)

To view this performance information, including detailed SQL statement
analysis, open '/newrelic' in your web application. For instance if
you are running mongrel or thin on port 3000, enter the following into
your browser:

http://localhost:3000/newrelic

=== Production Mode

To monitor your applications in production, create an account at
http://newrelic.com/get-RPM.html

When your application runs in the production environment, the New
Relic agent runs in production mode. It connects to the New Relic RPM
service and sends deep performance data to the RPM service for your
analysis. To view this data, login to http://rpm.newrelic.com.

NOTE: You must have a valid account and license key to view this data
online. When you sign up for an account at www.newrelic.com, you will
be provided with a license key, as well as a default configuration
file for New Relic RPM. You can either paste your license key into
your existing configuration file, config/newrelic.yml, or you can
replace that config file with the one included in your welcome email.

== Installation

RPM requires an agent be installed in the application as either a
Rails plug-in or a gem. Both are available on RubyForge--instructions
below.

=== Git your RPM on!

The agent is also available on Github under newrelic/rpm. As of March,
2009, we keep the latest release on the master, the edge on a working
branch, and previous releases with tags. Fork away!

=== Requirements:

Ruby 1.8.6
Rails 1.2.6 or above
Merb 1.0 or above

=== Rails Plug-In Installation

script/plugin install http://newrelic.rubyforge.org/svn/newrelic_rpm

=== Gem Installation

sudo gem install newrelic_rpm

For Rails, edit environment.rb and add to the initalizer block:

config.gem "newrelic_rpm"

The Developer Mode is unavailable when using the gem on Rails versions
prior to 2.0.

== Merb Support

To monitor a merb app install the newrelic_rpm gem and add

dependency 'newrelic_rpm'

to your init.rb file.

Current features implemented:

* Standard monitoring, overview pages
* Error capturing
* Full Active Record instrumentation, including SQL explains
* Very limited Data Mapper instrumentation
* Transaction Traces are implemented but will not be very useful
with Data Mapper until more work is done with the Data Mapper
instrumentation

Still under development:

* Developer Mode
* Data Mapper bindings

Also some of the instrumentation has been implemented with method
chaining, a mechanism that truly goes against the merb way. This was
necessary in some cases where the API’s were not yet available or
understood well enough to use. Converting these to hook methods using
the Merb public API is a work in progress.

== Support

Reach out to us--and to fellow RPM users--at
http://support.newrelic.com. There you'll find documentation, FAQs,
and forums where you can submit suggestions and discuss RPM with New
Relic staff and other users.

Find a bug? E-mail support@newrelic.com, or post it to
support.newrelic.com.

For other support channels, see http://www.newrelic.com/support.

Thank you, and may your application scale to infinity plus one.

Lew Cirne, Founder and CEO
New Relic, Inc.
40 changes: 40 additions & 0 deletions vendor/plugins/newrelic_rpm/Rakefile
@@ -0,0 +1,40 @@
require 'rubygems'
require 'rake/gempackagetask'
require 'lib/new_relic/version.rb'

GEM_NAME = "newrelic_rpm"
GEM_VERSION = NewRelic::VERSION::STRING
AUTHOR = "Bill Kayser"
EMAIL = "bkayser@newrelic.com"
HOMEPAGE = "http://www.newrelic.com"
SUMMARY = "New Relic Ruby Performance Monitoring Agent"

spec = Gem::Specification.new do |s|
s.rubyforge_project = 'newrelic'
s.name = GEM_NAME
s.version = GEM_VERSION
s.platform = Gem::Platform::RUBY
s.has_rdoc = true
s.extra_rdoc_files = ["README", "LICENSE"]
s.summary = SUMMARY
s.description = s.summary
s.author = AUTHOR
s.email = EMAIL
s.homepage = HOMEPAGE
s.require_path = 'lib'
s.files = %w(install.rb LICENSE README newrelic.yml Rakefile) + Dir.glob("{lib,bin,recipes,test,ui}/**/*")
s.bindir = "bin" # Use these for applications.
s.executables = ["newrelic_cmd"]
s.default_executable = "newrelic_cmd"
end

Rake::GemPackageTask.new(spec) do |pkg|
pkg.gem_spec = spec
end

desc "Create a gemspec file"
task :gemspec do
File.open("#{GEM_NAME}.gemspec", "w") do |file|
file.puts spec.to_ruby
end
end
4 changes: 4 additions & 0 deletions vendor/plugins/newrelic_rpm/bin/newrelic_cmd
@@ -0,0 +1,4 @@
#!/usr/bin/env ruby
# executes one of the commands in the new_relic/commands directory
# pass the name of the command as an argument
require File.dirname(__FILE__) + '/../lib/new_relic/commands/new_relic_commands'
30 changes: 30 additions & 0 deletions vendor/plugins/newrelic_rpm/init.rb
@@ -0,0 +1,30 @@
# This is the initialization for the RPM Rails plugin
require 'new_relic/config'

# If you are having problems seeing data, be sure and check the
# newrelic_agent log files.
#
# If you can't find any log files and you don't see anything in your
# application log files, try uncommenting these lines to verify
# the plugin is being loaded, then contact support@newrelic.com
# if you are unable to resolve the issue.
# STDOUT.puts "RPM detected environment: #{NewRelic::Config.instance.local_env}, RAILS_ENV: #{RAILS_ENV}"

# Initializer for the NewRelic Agent

begin
# JRuby's glassfish plugin is trying to run the Initializer twice,
# which isn't a good thing so we ignore subsequent invocations here.
if ! defined?(::NEWRELIC_STARTED)
::NEWRELIC_STARTED = "#{caller.join("\n")}"
NewRelic::Config.instance.start_plugin (defined?(config) ? config : nil)
else
NewRelic::Config.instance.log.debug "Attempt to initialize the plugin twice!"
NewRelic::Config.instance.log.debug "Original call: \n#{::NEWRELIC_STARTED}"
NewRelic::Config.instance.log.debug "Here we are now: \n#{caller.join("\n")}"
end
rescue => e
NewRelic::Config.instance.log! "Error initializing New Relic plugin (#{e})", :error
NewRelic::Config.instance.log! e.backtrace.join("\n"), :error
NewRelic::Config.instance.log! "Agent is disabled."
end

0 comments on commit 80b9265

Please sign in to comment.