Skip to content

Commit

Permalink
added newrelic rpm
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonathan Hoyt authored and Jonathan Hoyt committed Jan 14, 2009
1 parent e4bcb78 commit 1d06c02
Show file tree
Hide file tree
Showing 109 changed files with 9,219 additions and 0 deletions.
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.
93 changes: 93 additions & 0 deletions vendor/plugins/newrelic_rpm/README
@@ -0,0 +1,93 @@
= 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.htm

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.

== REQUIREMENTS:

Ruby 1.8.6
Rails 1.2.6 or above
Merb 1.0 or above

== RAILS PLUG-IN INSTALL:

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

== GEM INSTALL:

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 <code>dependency 'newrelic_rpm'</code>
to your init.rb file.

Developer Mode not currently available in merb.

== SUPPORT:

Reach out to us - and to fellow RPM users - on our support forum at
http://getsatisfaction.com/newrelic. We’ll share tips and tricks, answer all your
questions, and announce product updates. Operators are standing by.

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.
38 changes: 38 additions & 0 deletions vendor/plugins/newrelic_rpm/Rakefile
@@ -0,0 +1,38 @@
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,recipes,test,ui}/**/*")

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
29 changes: 29 additions & 0 deletions vendor/plugins/newrelic_rpm/init.rb
@@ -0,0 +1,29 @@
# This is the initialization for the RPM Rails plugin

# 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::LocalEnvironment.new}, 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
37 changes: 37 additions & 0 deletions vendor/plugins/newrelic_rpm/install.rb
@@ -0,0 +1,37 @@
require 'ftools'
require 'erb'

# Install a newrelic.yml file into the local config directory.
# If no such directory exists, install it in ~/.newrelic.
#
# If a config file already exists, print a warning and exit.
#
if File.directory? "config"
dest_dir = "config"
else
dest_dir = File.join(ENV["HOME"],".newrelic") rescue nil
FileUtils.mkdir(dest_dir) if dest_dir
end

src_config_file = File.join(File.dirname(__FILE__),"newrelic.yml")
dest_config_file = File.join(dest_dir, "newrelic.yml") if dest_dir

if !dest_dir
STDERR.puts "Could not find a config or ~/.newrelic directory to locate the default newrelic.yml file"
elsif File::exists? dest_config_file
STDERR.puts "\nA config file already exists at #{dest_config_file}.\n"
else
generated_for_user = ""
license_key = "PASTE_YOUR_KEY_HERE"
yaml = ERB.new(File.read(src_config_file)).result(binding)
File.open( dest_config_file, 'w' ) do |out|
out.puts yaml
end

puts IO.read(File.join(File.dirname(__FILE__), 'README'))
puts "\n--------------------------------------------------------\n"
puts "Installing a default configuration file in #{dest_dir}."
puts "To monitor your application in production mode, you must enter a license key."
puts "See #{dest_config_file}"
puts "For a license key, sign up at http://rpm.newrelic.com/signup."
end
26 changes: 26 additions & 0 deletions vendor/plugins/newrelic_rpm/lib/new_relic/agent.rb
@@ -0,0 +1,26 @@
require 'new_relic/version'
require 'new_relic/local_environment'
require 'new_relic/stats'
require 'new_relic/metric_spec'
require 'new_relic/metric_data'
require 'new_relic/transaction_analysis'
require 'new_relic/transaction_sample'
require 'new_relic/noticed_error'

require 'new_relic/agent/chained_call'
require 'new_relic/agent/agent'
require 'new_relic/agent/method_tracer'
require 'new_relic/agent/synchronize'
require 'new_relic/agent/worker_loop'
require 'new_relic/agent/stats_engine'
require 'new_relic/agent/collection_helper'
require 'new_relic/agent/transaction_sampler'
require 'new_relic/agent/error_collector'

require 'set'
require 'sync'
require 'thread'

module NewRelic::Agent

end

0 comments on commit 1d06c02

Please sign in to comment.