forked from xaviershay/enki
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
115 changed files
with
9,828 additions
and
0 deletions.
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 | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -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) |
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 | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -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. |
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 | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -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. |
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 | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -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 |
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 | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -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' |
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 | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -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 |
Oops, something went wrong.