Skip to content

Commit

Permalink
Updated docs to include rack
Browse files Browse the repository at this point in the history
  • Loading branch information
Bill Kayser committed Oct 17, 2009
1 parent 51dcc2c commit 932afa0
Show file tree
Hide file tree
Showing 14 changed files with 352 additions and 198 deletions.
22 changes: 10 additions & 12 deletions classes/NewRelic/Agent/Instrumentation.html
Expand Up @@ -86,18 +86,16 @@

<div id="description">
<p>
<a href="../../NewRelic.html">NewRelic</a> instrumentation for controllers
<a href="../../NewRelic.html">NewRelic</a> instrumentation for <a
href="Instrumentation/Sinatra.html">Sinatra</a> applications. <a
href="Instrumentation/Sinatra.html">Sinatra</a> actions will appear in the
UI similar to controller actions, and have breakdown charts and transaction
traces.
</p>
<p>
This instrumentation is applied to the action controller by default if the
agent is actively collecting statistics. It will collect statistics for the
given action.
</p>
<p>
In cases where you don&#8216;t want to instrument the top level action, but
instead have other methods which are dispatched to by your action, and you
want to treat these as distinct actions, then what you need to do is use
perform_action_with_newrelic_trace
The actions in the UI will correspond to the pattern expression used to
match them. HTTP operations are not distinguished. Multiple matches will
all be tracked as separate actions.
</p>

</div>
Expand All @@ -115,7 +113,7 @@ <h3 class="section-bar">Included Modules</h3>

<div id="includes-list">
<span class="include-name"><a href="Instrumentation/ActiveRecordInstrumentation.html">::NewRelic::Agent::Instrumentation::ActiveRecordInstrumentation</a></span>
<span class="include-name"><a href="Instrumentation/SinatraInstrumentation.html">NewRelic::Agent::Instrumentation::SinatraInstrumentation</a></span>
<span class="include-name"><a href="Instrumentation/Sinatra.html">NewRelic::Agent::Instrumentation::Sinatra</a></span>
</div>
</div>

Expand All @@ -127,7 +125,7 @@ <h3 class="section-bar">Classes and Modules</h3>
Module <a href="Instrumentation/ActiveRecordInstrumentation.html" class="link">NewRelic::Agent::Instrumentation::ActiveRecordInstrumentation</a><br />
Module <a href="Instrumentation/ControllerInstrumentation.html" class="link">NewRelic::Agent::Instrumentation::ControllerInstrumentation</a><br />
Module <a href="Instrumentation/DispatcherInstrumentation.html" class="link">NewRelic::Agent::Instrumentation::DispatcherInstrumentation</a><br />
Module <a href="Instrumentation/SinatraInstrumentation.html" class="link">NewRelic::Agent::Instrumentation::SinatraInstrumentation</a><br />
Module <a href="Instrumentation/Sinatra.html" class="link">NewRelic::Agent::Instrumentation::Sinatra</a><br />

</div>

Expand Down
167 changes: 85 additions & 82 deletions classes/NewRelic/Agent/Instrumentation/ControllerInstrumentation.html

Large diffs are not rendered by default.

Expand Up @@ -169,7 +169,7 @@ <h3 class="section-bar">Public Instance methods</h3>
120: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:name</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">method</span>.<span class="ruby-identifier">to_s</span>
121: <span class="ruby-identifier">options_arg</span> = []
122: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
123: <span class="ruby-identifier">options_arg</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[:#{key} =&gt; &quot;#{value}&quot;]</span>
123: <span class="ruby-identifier">options_arg</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">%Q[:#{key} =&gt; #{value.is_a?(Symbol) ? value.inspect : %Q[&quot;#{value.to_s}&quot;]}]</span>
124: <span class="ruby-keyword kw">end</span>
125: <span class="ruby-identifier">class_eval</span> <span class="ruby-value str">&quot;def \#{method.to_s}_with_newrelic_transaction_trace(*args, &amp;block)\nNewRelic::Agent::Instrumentation::DispatcherInstrumentation.newrelic_dispatcher_start\nperform_action_with_newrelic_trace(\#{options_arg.join(',')}) do\n\#{method.to_s}_without_newrelic_transaction_trace(*args, &amp;block)\nend\nensure\nNewRelic::Agent::Instrumentation::DispatcherInstrumentation.newrelic_dispatcher_finish\nend\n&quot;</span>
126: <span class="ruby-identifier">alias_method</span> <span class="ruby-node">&quot;#{method.to_s}_without_newrelic_transaction_trace&quot;</span>, <span class="ruby-identifier">method</span>.<span class="ruby-identifier">to_s</span>
Expand Down
162 changes: 162 additions & 0 deletions classes/NewRelic/Agent/Instrumentation/Sinatra.html
@@ -0,0 +1,162 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Module: NewRelic::Agent::Instrumentation::Sinatra</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
<script type="text/javascript">
// <![CDATA[

function popupCode( url ) {
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
}

function toggleCode( id ) {
if ( document.getElementById )
elem = document.getElementById( id );
else if ( document.all )
elem = eval( "document.all." + id );
else
return false;

elemStyle = elem.style;

if ( elemStyle.display != "block" ) {
elemStyle.display = "block"
} else {
elemStyle.display = "none"
}

return true;
}

// Make codeblocks hidden by default
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )

// ]]>
</script>

</head>
<body>



<div id="classHeader">
<table class="header-table">
<tr class="top-aligned-row">
<td><strong>Module</strong></td>
<td class="class-name-in-header">NewRelic::Agent::Instrumentation::Sinatra</td>
</tr>
<tr class="top-aligned-row">
<td><strong>In:</strong></td>
<td>
<a href="../../../../files/lib/new_relic/agent/instrumentation/sinatra_rb.html">
lib/new_relic/agent/instrumentation/sinatra.rb
</a>
<br />
</td>
</tr>

</table>
</div>
<!-- banner header -->

<div id="bodyContent">



<div id="contextContent">



</div>

<div id="method-list">
<h3 class="section-bar">Methods</h3>

<div class="name-list">
<a href="#M000143">route_eval_with_newrelic</a>&nbsp;&nbsp;
</div>
</div>

</div>


<!-- if includes -->
<div id="includes">
<h3 class="section-bar">Included Modules</h3>

<div id="includes-list">
<span class="include-name"><a href="ControllerInstrumentation.html">NewRelic::Agent::Instrumentation::ControllerInstrumentation</a></span>
</div>
</div>

<div id="section">








<!-- if method_list -->
<div id="methods">
<h3 class="section-bar">Public Instance methods</h3>

<div id="method-M000143" class="method-detail">
<a name="M000143"></a>

<div class="method-heading">
<a href="#M000143" class="method-signature">
<span class="method-name">route_eval_with_newrelic</span><span class="method-args">(&amp;block_arg)</span>
</a>
</div>

<div class="method-description">
<p><a class="source-toggle" href="#"
onclick="toggleCode('M000143-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000143-source">
<pre>
<span class="ruby-comment cmt"># File lib/new_relic/agent/instrumentation/sinatra.rb, line 13</span>
13: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">route_eval_with_newrelic</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block_arg</span>)
14: <span class="ruby-identifier">path</span> = <span class="ruby-identifier">unescape</span>(<span class="ruby-ivar">@request</span>.<span class="ruby-identifier">path_info</span>)
15: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">path</span>
16: <span class="ruby-comment cmt"># Go through each route and look for a match</span>
17: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">routes</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">routes</span>[<span class="ruby-ivar">@request</span>.<span class="ruby-identifier">request_method</span>]
18: <span class="ruby-identifier">routes</span>.<span class="ruby-identifier">detect</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pattern</span>, <span class="ruby-identifier">keys</span>, <span class="ruby-identifier">conditions</span>, <span class="ruby-identifier">block</span><span class="ruby-operator">|</span>
19: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_arg</span>.<span class="ruby-identifier">equal?</span> <span class="ruby-identifier">block</span>
20: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">source</span>
21: <span class="ruby-keyword kw">end</span>
22: <span class="ruby-keyword kw">end</span>
23: <span class="ruby-keyword kw">end</span>
24: <span class="ruby-comment cmt"># strip of leading ^ and / chars and trailing $ and /</span>
25: <span class="ruby-identifier">name</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">%r{^[/^]*(.*?)[/\$]*$}</span>, <span class="ruby-value str">'\1'</span>)
26: <span class="ruby-identifier">name</span> = <span class="ruby-value str">'root'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">empty?</span>
27: <span class="ruby-identifier">perform_action_with_newrelic_trace</span>(<span class="ruby-identifier">:category</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">:sinatra</span>, <span class="ruby-identifier">:name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">name</span>) <span class="ruby-keyword kw">do</span>
28: <span class="ruby-identifier">route_eval_without_newrelic</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block_arg</span>)
29: <span class="ruby-keyword kw">end</span>
30: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
</div>


</div>


</div>


<div id="validator-badges">
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
</div>

</body>
</html>
58 changes: 27 additions & 31 deletions classes/NewRelic/MetricParser/Controller.html
Expand Up @@ -159,10 +159,10 @@ <h3 class="section-bar">Public Instance methods</h3>
onclick="toggleCode('M000057-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000057-source">
<pre>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 55</span>
55: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call_rate_suffix</span>
56: <span class="ruby-value str">'rpm'</span>
57: <span class="ruby-keyword kw">end</span>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 51</span>
51: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call_rate_suffix</span>
52: <span class="ruby-value str">'rpm'</span>
53: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
Expand Down Expand Up @@ -215,10 +215,10 @@ <h3 class="section-bar">Public Instance methods</h3>
onclick="toggleCode('M000053-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000053-source">
<pre>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 32</span>
32: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cpu_metric</span>
33: <span class="ruby-constant">Metric</span>.<span class="ruby-identifier">lookup</span>(([<span class="ruby-value str">&quot;ControllerCPU&quot;</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">segments</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>]).<span class="ruby-identifier">join</span>(<span class="ruby-value str">'/'</span>), <span class="ruby-identifier">:create</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>)
34: <span class="ruby-keyword kw">end</span>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 28</span>
28: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cpu_metric</span>
29: <span class="ruby-constant">Metric</span>.<span class="ruby-identifier">lookup</span>(([<span class="ruby-value str">&quot;ControllerCPU&quot;</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">segments</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>]).<span class="ruby-identifier">join</span>(<span class="ruby-value str">'/'</span>), <span class="ruby-identifier">:create</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>)
30: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
Expand All @@ -240,12 +240,8 @@ <h3 class="section-bar">Public Instance methods</h3>
<pre>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 22</span>
22: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">developer_name</span>
23: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">segments</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'Sinatra::Application'</span>
24: <span class="ruby-node">&quot;Sinatra Pattern: #{segments[2..-1].join('/')}&quot;</span>
25: <span class="ruby-keyword kw">else</span>
26: <span class="ruby-node">&quot;#{controller_name}##{action_name}&quot;</span>
27: <span class="ruby-keyword kw">end</span>
28: <span class="ruby-keyword kw">end</span>
23: <span class="ruby-node">&quot;#{controller_name}##{action_name}&quot;</span>
24: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
Expand Down Expand Up @@ -288,15 +284,15 @@ <h3 class="section-bar">Public Instance methods</h3>
onclick="toggleCode('M000054-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000054-source">
<pre>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 36</span>
36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">short_name</span>
37: <span class="ruby-comment cmt"># standard controller actions</span>
38: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">segments</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
39: <span class="ruby-identifier">url</span>
40: <span class="ruby-keyword kw">else</span>
41: <span class="ruby-value str">'All Controller Actions'</span>
42: <span class="ruby-keyword kw">end</span>
43: <span class="ruby-keyword kw">end</span>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 32</span>
32: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">short_name</span>
33: <span class="ruby-comment cmt"># standard controller actions</span>
34: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">segments</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
35: <span class="ruby-identifier">url</span>
36: <span class="ruby-keyword kw">else</span>
37: <span class="ruby-value str">'All Controller Actions'</span>
38: <span class="ruby-keyword kw">end</span>
39: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
Expand All @@ -320,10 +316,10 @@ <h3 class="section-bar">Public Instance methods</h3>
onclick="toggleCode('M000056-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000056-source">
<pre>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 51</span>
51: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tt_path</span>
52: <span class="ruby-identifier">segments</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">join</span>(<span class="ruby-value str">'/'</span>)
53: <span class="ruby-keyword kw">end</span>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 47</span>
47: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tt_path</span>
48: <span class="ruby-identifier">segments</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">join</span>(<span class="ruby-value str">'/'</span>)
49: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
Expand All @@ -343,10 +339,10 @@ <h3 class="section-bar">Public Instance methods</h3>
onclick="toggleCode('M000055-source');return false;">[Source]</a></p>
<div class="method-source-code" id="M000055-source">
<pre>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 45</span>
45: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">url</span>
46: <span class="ruby-value str">'/'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">segments</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">join</span>(<span class="ruby-value str">'/'</span>)
47: <span class="ruby-keyword kw">end</span>
<span class="ruby-comment cmt"># File lib/new_relic/metric_parser/controller.rb, line 41</span>
41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">url</span>
42: <span class="ruby-value str">'/'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">segments</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">join</span>(<span class="ruby-value str">'/'</span>)
43: <span class="ruby-keyword kw">end</span>
</pre>
</div>
</div>
Expand Down

0 comments on commit 932afa0

Please sign in to comment.