dolores_rpm 3.2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +559 -0
- data/LICENSE +64 -0
- data/README.rdoc +179 -0
- data/bin/mongrel_rpm +33 -0
- data/bin/newrelic +13 -0
- data/bin/newrelic_cmd +5 -0
- data/cert/cacert.pem +118 -0
- data/cert/oldsite.pem +28 -0
- data/cert/site.pem +27 -0
- data/dolores_rpm-3.3.4.fork.gem +0 -0
- data/install.rb +9 -0
- data/lib/conditional_vendored_dependency_detection.rb +3 -0
- data/lib/conditional_vendored_metric_parser.rb +5 -0
- data/lib/new_relic/agent/agent.rb +1311 -0
- data/lib/new_relic/agent/beacon_configuration.rb +110 -0
- data/lib/new_relic/agent/browser_monitoring.rb +102 -0
- data/lib/new_relic/agent/busy_calculator.rb +99 -0
- data/lib/new_relic/agent/chained_call.rb +13 -0
- data/lib/new_relic/agent/database.rb +203 -0
- data/lib/new_relic/agent/error_collector.rb +251 -0
- data/lib/new_relic/agent/instrumentation/active_merchant.rb +27 -0
- data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +68 -0
- data/lib/new_relic/agent/instrumentation/authlogic.rb +19 -0
- data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +424 -0
- data/lib/new_relic/agent/instrumentation/data_mapper.rb +57 -0
- data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +52 -0
- data/lib/new_relic/agent/instrumentation/memcache.rb +80 -0
- data/lib/new_relic/agent/instrumentation/merb/controller.rb +41 -0
- data/lib/new_relic/agent/instrumentation/merb/errors.rb +29 -0
- data/lib/new_relic/agent/instrumentation/metric_frame/pop.rb +80 -0
- data/lib/new_relic/agent/instrumentation/metric_frame.rb +332 -0
- data/lib/new_relic/agent/instrumentation/net.rb +29 -0
- data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +36 -0
- data/lib/new_relic/agent/instrumentation/queue_time.rb +210 -0
- data/lib/new_relic/agent/instrumentation/rack.rb +98 -0
- data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +114 -0
- data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +42 -0
- data/lib/new_relic/agent/instrumentation/rails/active_record_instrumentation.rb +115 -0
- data/lib/new_relic/agent/instrumentation/rails/errors.rb +42 -0
- data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +118 -0
- data/lib/new_relic/agent/instrumentation/rails3/active_record_instrumentation.rb +122 -0
- data/lib/new_relic/agent/instrumentation/rails3/errors.rb +37 -0
- data/lib/new_relic/agent/instrumentation/sinatra.rb +58 -0
- data/lib/new_relic/agent/instrumentation/sunspot.rb +29 -0
- data/lib/new_relic/agent/instrumentation/unicorn_instrumentation.rb +21 -0
- data/lib/new_relic/agent/instrumentation.rb +9 -0
- data/lib/new_relic/agent/method_tracer.rb +528 -0
- data/lib/new_relic/agent/sampler.rb +50 -0
- data/lib/new_relic/agent/samplers/cpu_sampler.rb +58 -0
- data/lib/new_relic/agent/samplers/delayed_job_lock_sampler.rb +40 -0
- data/lib/new_relic/agent/samplers/memory_sampler.rb +144 -0
- data/lib/new_relic/agent/samplers/object_sampler.rb +26 -0
- data/lib/new_relic/agent/shim_agent.rb +29 -0
- data/lib/new_relic/agent/sql_sampler.rb +267 -0
- data/lib/new_relic/agent/stats_engine/metric_stats.rb +187 -0
- data/lib/new_relic/agent/stats_engine/samplers.rb +95 -0
- data/lib/new_relic/agent/stats_engine/transactions.rb +208 -0
- data/lib/new_relic/agent/stats_engine.rb +25 -0
- data/lib/new_relic/agent/transaction_sample_builder.rb +101 -0
- data/lib/new_relic/agent/transaction_sampler.rb +397 -0
- data/lib/new_relic/agent/worker_loop.rb +89 -0
- data/lib/new_relic/agent.rb +454 -0
- data/lib/new_relic/collection_helper.rb +75 -0
- data/lib/new_relic/command.rb +85 -0
- data/lib/new_relic/commands/deployments.rb +105 -0
- data/lib/new_relic/commands/install.rb +80 -0
- data/lib/new_relic/control/class_methods.rb +53 -0
- data/lib/new_relic/control/configuration.rb +202 -0
- data/lib/new_relic/control/frameworks/external.rb +16 -0
- data/lib/new_relic/control/frameworks/merb.rb +31 -0
- data/lib/new_relic/control/frameworks/rails.rb +164 -0
- data/lib/new_relic/control/frameworks/rails3.rb +75 -0
- data/lib/new_relic/control/frameworks/ruby.rb +42 -0
- data/lib/new_relic/control/frameworks/sinatra.rb +20 -0
- data/lib/new_relic/control/frameworks.rb +10 -0
- data/lib/new_relic/control/instance_methods.rb +179 -0
- data/lib/new_relic/control/instrumentation.rb +100 -0
- data/lib/new_relic/control/logging_methods.rb +143 -0
- data/lib/new_relic/control/profiling.rb +25 -0
- data/lib/new_relic/control/server_methods.rb +114 -0
- data/lib/new_relic/control.rb +46 -0
- data/lib/new_relic/data_serialization.rb +157 -0
- data/lib/new_relic/delayed_job_injection.rb +46 -0
- data/lib/new_relic/language_support.rb +69 -0
- data/lib/new_relic/local_environment.rb +414 -0
- data/lib/new_relic/merbtasks.rb +6 -0
- data/lib/new_relic/metric_data.rb +51 -0
- data/lib/new_relic/metric_spec.rb +75 -0
- data/lib/new_relic/metrics.rb +9 -0
- data/lib/new_relic/noticed_error.rb +24 -0
- data/lib/new_relic/rack/browser_monitoring.rb +68 -0
- data/lib/new_relic/rack/developer_mode.rb +268 -0
- data/lib/new_relic/recipes.rb +73 -0
- data/lib/new_relic/stats.rb +388 -0
- data/lib/new_relic/timer_lib.rb +27 -0
- data/lib/new_relic/transaction_analysis/segment_summary.rb +49 -0
- data/lib/new_relic/transaction_analysis.rb +77 -0
- data/lib/new_relic/transaction_sample/composite_segment.rb +27 -0
- data/lib/new_relic/transaction_sample/fake_segment.rb +9 -0
- data/lib/new_relic/transaction_sample/segment.rb +201 -0
- data/lib/new_relic/transaction_sample/summary_segment.rb +21 -0
- data/lib/new_relic/transaction_sample.rb +245 -0
- data/lib/new_relic/url_rule.rb +14 -0
- data/lib/new_relic/version.rb +55 -0
- data/lib/newrelic_rpm.rb +49 -0
- data/lib/tasks/all.rb +4 -0
- data/lib/tasks/install.rake +7 -0
- data/lib/tasks/tests.rake +19 -0
- data/newrelic.yml +265 -0
- data/recipes/newrelic.rb +6 -0
- data/test/active_record_fixtures.rb +77 -0
- data/test/config/newrelic.yml +48 -0
- data/test/config/test_control.rb +48 -0
- data/test/new_relic/agent/agent/connect_test.rb +410 -0
- data/test/new_relic/agent/agent/start_test.rb +255 -0
- data/test/new_relic/agent/agent/start_worker_thread_test.rb +153 -0
- data/test/new_relic/agent/agent_test.rb +139 -0
- data/test/new_relic/agent/agent_test_controller.rb +77 -0
- data/test/new_relic/agent/agent_test_controller_test.rb +363 -0
- data/test/new_relic/agent/apdex_from_server_test.rb +9 -0
- data/test/new_relic/agent/beacon_configuration_test.rb +108 -0
- data/test/new_relic/agent/browser_monitoring_test.rb +278 -0
- data/test/new_relic/agent/busy_calculator_test.rb +81 -0
- data/test/new_relic/agent/database_test.rb +162 -0
- data/test/new_relic/agent/error_collector/notice_error_test.rb +257 -0
- data/test/new_relic/agent/error_collector_test.rb +175 -0
- data/test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb +538 -0
- data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +36 -0
- data/test/new_relic/agent/instrumentation/instrumentation_test.rb +11 -0
- data/test/new_relic/agent/instrumentation/metric_frame/pop_test.rb +172 -0
- data/test/new_relic/agent/instrumentation/metric_frame_test.rb +50 -0
- data/test/new_relic/agent/instrumentation/net_instrumentation_test.rb +84 -0
- data/test/new_relic/agent/instrumentation/queue_time_test.rb +387 -0
- data/test/new_relic/agent/instrumentation/rack_test.rb +35 -0
- data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +184 -0
- data/test/new_relic/agent/memcache_instrumentation_test.rb +143 -0
- data/test/new_relic/agent/method_tracer/class_methods/add_method_tracer_test.rb +164 -0
- data/test/new_relic/agent/method_tracer/instance_methods/trace_execution_scoped_test.rb +234 -0
- data/test/new_relic/agent/method_tracer_test.rb +386 -0
- data/test/new_relic/agent/mock_scope_listener.rb +23 -0
- data/test/new_relic/agent/rpm_agent_test.rb +149 -0
- data/test/new_relic/agent/sampler_test.rb +19 -0
- data/test/new_relic/agent/shim_agent_test.rb +20 -0
- data/test/new_relic/agent/sql_sampler_test.rb +160 -0
- data/test/new_relic/agent/stats_engine/metric_stats/harvest_test.rb +150 -0
- data/test/new_relic/agent/stats_engine/metric_stats_test.rb +82 -0
- data/test/new_relic/agent/stats_engine/samplers_test.rb +99 -0
- data/test/new_relic/agent/stats_engine_test.rb +185 -0
- data/test/new_relic/agent/transaction_sample_builder_test.rb +195 -0
- data/test/new_relic/agent/transaction_sampler_test.rb +955 -0
- data/test/new_relic/agent/worker_loop_test.rb +66 -0
- data/test/new_relic/agent_test.rb +175 -0
- data/test/new_relic/collection_helper_test.rb +149 -0
- data/test/new_relic/command/deployments_test.rb +68 -0
- data/test/new_relic/control/class_methods_test.rb +62 -0
- data/test/new_relic/control/configuration_test.rb +72 -0
- data/test/new_relic/control/logging_methods_test.rb +185 -0
- data/test/new_relic/control_test.rb +254 -0
- data/test/new_relic/data_serialization_test.rb +208 -0
- data/test/new_relic/delayed_job_injection_test.rb +16 -0
- data/test/new_relic/local_environment_test.rb +72 -0
- data/test/new_relic/metric_data_test.rb +125 -0
- data/test/new_relic/metric_spec_test.rb +95 -0
- data/test/new_relic/rack/all_test.rb +11 -0
- data/test/new_relic/rack/browser_monitoring_test.rb +84 -0
- data/test/new_relic/rack/developer_mode_helper_test.rb +141 -0
- data/test/new_relic/rack/developer_mode_test.rb +43 -0
- data/test/new_relic/stats_test.rb +426 -0
- data/test/new_relic/transaction_analysis/segment_summary_test.rb +91 -0
- data/test/new_relic/transaction_analysis_test.rb +121 -0
- data/test/new_relic/transaction_sample/composite_segment_test.rb +35 -0
- data/test/new_relic/transaction_sample/fake_segment_test.rb +17 -0
- data/test/new_relic/transaction_sample/segment_test.rb +389 -0
- data/test/new_relic/transaction_sample/summary_segment_test.rb +31 -0
- data/test/new_relic/transaction_sample_subtest_test.rb +56 -0
- data/test/new_relic/transaction_sample_test.rb +164 -0
- data/test/new_relic/version_number_test.rb +89 -0
- data/test/test_contexts.rb +29 -0
- data/test/test_helper.rb +154 -0
- data/ui/helpers/developer_mode_helper.rb +357 -0
- data/ui/helpers/google_pie_chart.rb +48 -0
- data/ui/views/layouts/newrelic_default.rhtml +47 -0
- data/ui/views/newrelic/_explain_plans.rhtml +27 -0
- data/ui/views/newrelic/_sample.rhtml +20 -0
- data/ui/views/newrelic/_segment.rhtml +28 -0
- data/ui/views/newrelic/_segment_limit_message.rhtml +1 -0
- data/ui/views/newrelic/_segment_row.rhtml +12 -0
- data/ui/views/newrelic/_show_sample_detail.rhtml +24 -0
- data/ui/views/newrelic/_show_sample_sql.rhtml +24 -0
- data/ui/views/newrelic/_show_sample_summary.rhtml +3 -0
- data/ui/views/newrelic/_sql_row.rhtml +16 -0
- data/ui/views/newrelic/_stack_trace.rhtml +15 -0
- data/ui/views/newrelic/_table.rhtml +12 -0
- data/ui/views/newrelic/explain_sql.rhtml +43 -0
- data/ui/views/newrelic/file/images/arrow-close.png +0 -0
- data/ui/views/newrelic/file/images/arrow-open.png +0 -0
- data/ui/views/newrelic/file/images/blue_bar.gif +0 -0
- data/ui/views/newrelic/file/images/file_icon.png +0 -0
- data/ui/views/newrelic/file/images/gray_bar.gif +0 -0
- data/ui/views/newrelic/file/images/new-relic-rpm-desktop.gif +0 -0
- data/ui/views/newrelic/file/images/new_relic_rpm_desktop.gif +0 -0
- data/ui/views/newrelic/file/images/textmate.png +0 -0
- data/ui/views/newrelic/file/javascript/jquery-1.4.2.js +6240 -0
- data/ui/views/newrelic/file/javascript/transaction_sample.js +120 -0
- data/ui/views/newrelic/file/stylesheets/style.css +490 -0
- data/ui/views/newrelic/index.rhtml +71 -0
- data/ui/views/newrelic/sample_not_found.rhtml +2 -0
- data/ui/views/newrelic/show_sample.rhtml +80 -0
- data/ui/views/newrelic/show_source.rhtml +3 -0
- data/ui/views/newrelic/threads.rhtml +53 -0
- data/vendor/gems/dependency_detection-0.0.1.build/LICENSE +5 -0
- data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection/version.rb +3 -0
- data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb +62 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/metric_parser.rb +1 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/action_mailer.rb +14 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_merchant.rb +31 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_record.rb +33 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/apdex.rb +89 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/background_transaction.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/client.rb +46 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller.rb +67 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_cpu.rb +43 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_ext.rb +17 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database.rb +48 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database_pool.rb +24 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net.rb +28 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net_parser.rb +17 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/errors.rb +11 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/external.rb +55 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/frontend.rb +40 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/gc.rb +20 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/hibernate_session.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java.rb +31 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java_parser.rb +17 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp.rb +34 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp_tag.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/mem_cache.rb +55 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/metric_parser.rb +122 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/orm.rb +27 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/other_transaction.rb +40 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_context_listener.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_filter.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr.rb +27 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr_request_handler.rb +15 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring.rb +54 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_controller.rb +6 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_view.rb +6 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_action.rb +20 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_result.rb +20 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/version.rb +5 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/view.rb +70 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_frontend.rb +18 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_service.rb +14 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_transaction.rb +133 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser.rb +64 -0
- metadata +398 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require 'new_relic/metric_parser'
|
|
2
|
+
module NewRelic
|
|
3
|
+
module MetricParser
|
|
4
|
+
class View < NewRelic::MetricParser::MetricParser
|
|
5
|
+
def is_view?; true; end
|
|
6
|
+
|
|
7
|
+
def is_render?
|
|
8
|
+
segments.last == "Rendering"
|
|
9
|
+
end
|
|
10
|
+
def is_compiler?
|
|
11
|
+
segments.last == "Compile"
|
|
12
|
+
end
|
|
13
|
+
def pie_chart_label
|
|
14
|
+
case segments.last
|
|
15
|
+
when "Rendering"
|
|
16
|
+
"#{file_name(segments[-2])} Template"
|
|
17
|
+
when "Partial"
|
|
18
|
+
"#{file_name(segments[-2])} Partial"
|
|
19
|
+
when "Collection"
|
|
20
|
+
"#{file_name(segments[-2])} Collection"
|
|
21
|
+
when ".rhtml Processing"
|
|
22
|
+
"ERB compilation"
|
|
23
|
+
else
|
|
24
|
+
segments[1..-1]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
def template_label
|
|
28
|
+
case segments.last
|
|
29
|
+
when "Rendering"
|
|
30
|
+
"#{file_name(segments[1..-2].join(NewRelic::MetricParser::MetricParser::SEPARATOR))} Template"
|
|
31
|
+
when "Partial"
|
|
32
|
+
"#{file_name(segments[1..-2].join(NewRelic::MetricParser::MetricParser::SEPARATOR))} Partial"
|
|
33
|
+
when "Collection"
|
|
34
|
+
"#{file_name(segments[1..-2].join(NewRelic::MetricParser::MetricParser::SEPARATOR))} Collection"
|
|
35
|
+
when ".rhtml Processing"
|
|
36
|
+
"ERB compilation"
|
|
37
|
+
else
|
|
38
|
+
segments[1..-1].join("/")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def short_name
|
|
43
|
+
segments[1..-2].join(NewRelic::MetricParser::MetricParser::SEPARATOR)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def controller_name
|
|
47
|
+
template_label
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def action_name
|
|
51
|
+
# Strip the extension
|
|
52
|
+
segments[-2].gsub(/\..*$/, "")
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def developer_name
|
|
56
|
+
template_label
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def url
|
|
60
|
+
'/' + file_name(segments[1..-2].join('/'))
|
|
61
|
+
end
|
|
62
|
+
private
|
|
63
|
+
def file_name(path)
|
|
64
|
+
label = path.gsub /\.html\.rhtml/, '.rhtml'
|
|
65
|
+
label = segments[1] if label.empty?
|
|
66
|
+
label
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'new_relic/metric_parser'
|
|
2
|
+
# The metric where the mongrel queue time is stored
|
|
3
|
+
module NewRelic
|
|
4
|
+
module MetricParser
|
|
5
|
+
class WebFrontend < NewRelic::MetricParser::MetricParser
|
|
6
|
+
def short_name
|
|
7
|
+
if segments.last == 'Average Queue Time'
|
|
8
|
+
'Mongrel Average Queue Time'
|
|
9
|
+
else
|
|
10
|
+
super
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
def legend_name
|
|
14
|
+
'Mongrel Wait'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'new_relic/metric_parser'
|
|
2
|
+
module NewRelic
|
|
3
|
+
module MetricParser
|
|
4
|
+
class WebService < NewRelic::MetricParser::MetricParser
|
|
5
|
+
def is_web_service?
|
|
6
|
+
segments[1] != 'Soap' && segments[1] != 'Xml Rpc'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def webservice_call_rate_suffix
|
|
10
|
+
'rpm'
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
class NewRelic::MetricParser::WebTransaction < NewRelic::MetricParser::MetricParser
|
|
2
|
+
|
|
3
|
+
def is_web_transaction?; true; end
|
|
4
|
+
def is_transaction?; true; end
|
|
5
|
+
|
|
6
|
+
module Controller
|
|
7
|
+
def category; 'Controller'; end
|
|
8
|
+
# If the controller name segments look like a file path, convert it to the controller
|
|
9
|
+
# class name. If it begins with a capital letter, assume it's already a class name
|
|
10
|
+
def controller_name
|
|
11
|
+
path = segments[2..-2].join('/')
|
|
12
|
+
path < 'a' ? path : camelize(path)+"Controller"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def action_name
|
|
16
|
+
segments[-1]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def developer_name
|
|
20
|
+
if action_name
|
|
21
|
+
"#{controller_name}##{action_name}"
|
|
22
|
+
else
|
|
23
|
+
controller_name
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
def short_name
|
|
27
|
+
developer_name
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
# Wow, ugliness. Ganked from Rails to make metric parser rails-free
|
|
33
|
+
def camelize(str)
|
|
34
|
+
str.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Like a controller but 2nd segment is always full class name,
|
|
39
|
+
# and 3rd segment (optional) is the action name
|
|
40
|
+
module Task
|
|
41
|
+
include Controller
|
|
42
|
+
def is_web_transaction?; false; end
|
|
43
|
+
def category; 'Task'; end
|
|
44
|
+
def action_name; segments[3]; end
|
|
45
|
+
def controller_name; segments[2]; end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
module Rack
|
|
49
|
+
include Task
|
|
50
|
+
|
|
51
|
+
def is_web_transaction?; true; end
|
|
52
|
+
def category; 'Rack App'; end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
module Spring
|
|
56
|
+
def category; 'Spring Transaction'; end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
module SpringView
|
|
60
|
+
def is_web_transaction?; true; end
|
|
61
|
+
def category; 'Spring View'; end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
module SpringController
|
|
65
|
+
def is_web_transaction?; true; end
|
|
66
|
+
def category; 'Spring Controller'; end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
module Solr
|
|
70
|
+
def category; 'Solr Request'; end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
module CXF
|
|
74
|
+
def category; 'CXF Transaction'; end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
module Pattern
|
|
78
|
+
def category;'Pattern';end
|
|
79
|
+
def developer_name
|
|
80
|
+
"#{category}: #{pattern}"
|
|
81
|
+
end
|
|
82
|
+
def pattern
|
|
83
|
+
segments[2..-1].join('/')
|
|
84
|
+
end
|
|
85
|
+
def short_name
|
|
86
|
+
pattern
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
module Sinatra
|
|
91
|
+
include Pattern
|
|
92
|
+
def is_web_transaction?; true; end
|
|
93
|
+
def category; 'Sinatra'; end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def initialize(name)
|
|
97
|
+
super
|
|
98
|
+
if %w[Sinatra Spring SpringController SpringView Solr CXF Task Pattern Rack Controller].include?(segment_1)
|
|
99
|
+
self.extend NewRelic::MetricParser::WebTransaction.const_get(segment_1)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def developer_name
|
|
104
|
+
url
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def short_name
|
|
108
|
+
if segments.length > 2
|
|
109
|
+
developer_name
|
|
110
|
+
else
|
|
111
|
+
'All Web Transactions'
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def url
|
|
116
|
+
'/' + segments[2..-1].join('/')
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# this is used to match transaction traces to controller actions.
|
|
120
|
+
# TT's don't have a preceding slash :P
|
|
121
|
+
def tt_path
|
|
122
|
+
segments[2..-1].join('/')
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def call_rate_suffix
|
|
126
|
+
'rpm'
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# default to v2 Web Transactions tab
|
|
130
|
+
def drilldown_url(metric_id)
|
|
131
|
+
{:controller => '/v2/transactions', :action => 'index', :anchor => "id=#{metric_id}"}
|
|
132
|
+
end
|
|
133
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module NewRelic
|
|
2
|
+
# Metric parsing logic mixin. Given a metric name (attribute called "name"), provide a set of accessors
|
|
3
|
+
# that enable inspection of the metric. A metric has 2 or more segments, each separated
|
|
4
|
+
# by the '/' character. The metric's category is specified by its first segment. Following
|
|
5
|
+
# are the set of categories currently supported by NewRelic's default metric set:
|
|
6
|
+
#
|
|
7
|
+
# * Controller
|
|
8
|
+
# * ActiveRecord
|
|
9
|
+
# * Rails
|
|
10
|
+
# * WebService
|
|
11
|
+
# * View
|
|
12
|
+
# * Database
|
|
13
|
+
# * Custom
|
|
14
|
+
#
|
|
15
|
+
# Based on the category of the metric, specific parsing logic is defined in the source files
|
|
16
|
+
# countained in the "metric_parsers" sub directory local to this file.
|
|
17
|
+
#
|
|
18
|
+
module MetricParser
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
require 'new_relic/metric_parser/metric_parser'
|
|
23
|
+
require 'new_relic/metric_parser/apdex'
|
|
24
|
+
|
|
25
|
+
require 'new_relic/metric_parser/action_mailer'
|
|
26
|
+
require 'new_relic/metric_parser/active_merchant'
|
|
27
|
+
require 'new_relic/metric_parser/active_record'
|
|
28
|
+
require 'new_relic/metric_parser/apdex'
|
|
29
|
+
require 'new_relic/metric_parser/background_transaction'
|
|
30
|
+
require 'new_relic/metric_parser/client'
|
|
31
|
+
require 'new_relic/metric_parser/controller'
|
|
32
|
+
require 'new_relic/metric_parser/controller_cpu'
|
|
33
|
+
require 'new_relic/metric_parser/controller_ext'
|
|
34
|
+
require 'new_relic/metric_parser/database'
|
|
35
|
+
require 'new_relic/metric_parser/database_pool'
|
|
36
|
+
require 'new_relic/metric_parser/dot_net'
|
|
37
|
+
require 'new_relic/metric_parser/errors'
|
|
38
|
+
require 'new_relic/metric_parser/external'
|
|
39
|
+
require 'new_relic/metric_parser/frontend'
|
|
40
|
+
require 'new_relic/metric_parser/gc'
|
|
41
|
+
require 'new_relic/metric_parser/hibernate_session'
|
|
42
|
+
require 'new_relic/metric_parser/java'
|
|
43
|
+
require 'new_relic/metric_parser/java_parser'
|
|
44
|
+
require 'new_relic/metric_parser/jsp'
|
|
45
|
+
require 'new_relic/metric_parser/jsp_tag'
|
|
46
|
+
require 'new_relic/metric_parser/mem_cache'
|
|
47
|
+
require 'new_relic/metric_parser/metric_parser'
|
|
48
|
+
require 'new_relic/metric_parser/orm'
|
|
49
|
+
require 'new_relic/metric_parser/other_transaction'
|
|
50
|
+
require 'new_relic/metric_parser/servlet'
|
|
51
|
+
require 'new_relic/metric_parser/servlet_context_listener'
|
|
52
|
+
require 'new_relic/metric_parser/servlet_filter'
|
|
53
|
+
require 'new_relic/metric_parser/solr'
|
|
54
|
+
require 'new_relic/metric_parser/solr_request_handler'
|
|
55
|
+
require 'new_relic/metric_parser/spring'
|
|
56
|
+
require 'new_relic/metric_parser/spring_controller'
|
|
57
|
+
require 'new_relic/metric_parser/spring_view'
|
|
58
|
+
require 'new_relic/metric_parser/struts_action'
|
|
59
|
+
require 'new_relic/metric_parser/struts_result'
|
|
60
|
+
require 'new_relic/metric_parser/version'
|
|
61
|
+
require 'new_relic/metric_parser/view'
|
|
62
|
+
require 'new_relic/metric_parser/web_frontend'
|
|
63
|
+
require 'new_relic/metric_parser/web_service'
|
|
64
|
+
require 'new_relic/metric_parser/web_transaction'
|