oneapm_rpm 1.1.3 → 1.2.0

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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/lib/one_apm/agent.rb +4 -4
  3. data/lib/one_apm/agent/agent/connect.rb +3 -49
  4. data/lib/one_apm/agent/agent/container_data_manager.rb +2 -10
  5. data/lib/one_apm/agent/agent/forkable_dispatcher_functions.rb +4 -2
  6. data/lib/one_apm/agent/agent/helpers.rb +2 -0
  7. data/lib/one_apm/agent/agent/start.rb +3 -3
  8. data/lib/one_apm/agent/agent/start_worker_thread.rb +2 -0
  9. data/lib/one_apm/agent/database/active_record_helper.rb +1 -0
  10. data/lib/one_apm/agent/{datastores.rb → datastore.rb} +2 -2
  11. data/lib/one_apm/agent/{datastores → datastore}/metric_helper.rb +1 -1
  12. data/lib/one_apm/agent/{datastores → datastore}/mongo.rb +1 -1
  13. data/lib/one_apm/agent/{datastores → datastore}/mongo/metric_translator.rb +4 -4
  14. data/lib/one_apm/agent/{datastores → datastore}/mongo/obfuscator.rb +1 -1
  15. data/lib/one_apm/agent/{datastores → datastore}/mongo/statement_formatter.rb +2 -2
  16. data/lib/one_apm/agent/threading/agent_thread.rb +50 -50
  17. data/lib/one_apm/agent/threading/thread_profile.rb +1 -4
  18. data/lib/one_apm/collector/commands/thread_profiler_session.rb +1 -1
  19. data/lib/one_apm/collector/containers/agent_command_router.rb +1 -1
  20. data/lib/one_apm/collector/containers/transaction_sampler.rb +7 -1
  21. data/lib/one_apm/collector/containers/utilization_data.rb +3 -4
  22. data/lib/one_apm/{agent → collector}/sampler.rb +1 -1
  23. data/lib/one_apm/{agent → collector}/samplers/cpu_sampler.rb +4 -4
  24. data/lib/one_apm/{agent → collector}/samplers/delayed_job_sampler.rb +3 -14
  25. data/lib/one_apm/{agent → collector}/samplers/memory_sampler.rb +13 -15
  26. data/lib/one_apm/{agent → collector}/samplers/object_sampler.rb +3 -3
  27. data/lib/one_apm/{agent → collector}/samplers/vm_sampler.rb +2 -2
  28. data/lib/one_apm/collector/{forked_process_service.rb → support/forked_process_service.rb} +1 -1
  29. data/lib/one_apm/{agent → collector/support}/sampler_collection.rb +2 -2
  30. data/lib/one_apm/configuration/default_source.rb +7 -2
  31. data/lib/one_apm/frameworks/rails.rb +18 -0
  32. data/lib/one_apm/inst/nosql/memcache.rb +2 -2
  33. data/lib/one_apm/inst/nosql/mongo.rb +6 -6
  34. data/lib/one_apm/inst/nosql/mongo_moped.rb +3 -3
  35. data/lib/one_apm/inst/nosql/redis.rb +4 -4
  36. data/lib/one_apm/manager.rb +38 -6
  37. data/lib/one_apm/metrics/metric_spec.rb +1 -4
  38. data/lib/one_apm/probe/instrumentation.rb +2 -5
  39. data/lib/one_apm/rack/developer_mode.rb +221 -0
  40. data/lib/one_apm/rack/developer_mode/helper.rb +299 -0
  41. data/lib/one_apm/rack/developer_mode/views/oneapm/_explain_plans.html.erb +25 -0
  42. data/lib/one_apm/rack/developer_mode/views/oneapm/_home_right.html.erb +18 -0
  43. data/lib/one_apm/rack/developer_mode/views/oneapm/_sample.html.erb +20 -0
  44. data/lib/one_apm/rack/developer_mode/views/oneapm/_segment.html.erb +24 -0
  45. data/lib/one_apm/rack/developer_mode/views/oneapm/_segment_limit_message.html.erb +1 -0
  46. data/lib/one_apm/rack/developer_mode/views/oneapm/_segment_row.html.erb +11 -0
  47. data/lib/one_apm/rack/developer_mode/views/oneapm/_show_sample_detail.html.erb +30 -0
  48. data/lib/one_apm/rack/developer_mode/views/oneapm/_show_sample_sql.html.erb +19 -0
  49. data/lib/one_apm/rack/developer_mode/views/oneapm/_show_sample_summary.html.erb +25 -0
  50. data/lib/one_apm/rack/developer_mode/views/oneapm/_sql_row.html.erb +15 -0
  51. data/lib/one_apm/rack/developer_mode/views/oneapm/_stack_trace.html.erb +14 -0
  52. data/lib/one_apm/rack/developer_mode/views/oneapm/_summary_table.html.erb +12 -0
  53. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/images/arrow-close.png +0 -0
  54. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/images/arrow-open.png +0 -0
  55. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/images/oneapm_logo.png +0 -0
  56. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/c3.min.js +5 -0
  57. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/d3.min.js +5 -0
  58. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/jquery.min.js +4 -0
  59. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/transaction_sample.js +120 -0
  60. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/stylesheets/bootstrap.min.css +5 -0
  61. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/stylesheets/c3.css +158 -0
  62. data/lib/one_apm/rack/developer_mode/views/oneapm/assets/stylesheets/style.css +149 -0
  63. data/lib/one_apm/rack/developer_mode/views/oneapm/explain_sql.html.erb +53 -0
  64. data/lib/one_apm/rack/developer_mode/views/oneapm/index.html.erb +33 -0
  65. data/lib/one_apm/rack/developer_mode/views/oneapm/layout.html.erb +46 -0
  66. data/lib/one_apm/rack/developer_mode/views/oneapm/sample_not_found.html.erb +2 -0
  67. data/lib/one_apm/rack/developer_mode/views/oneapm/show_sample.html.erb +61 -0
  68. data/lib/one_apm/rack/developer_mode/views/oneapm/threads.html.erb +53 -0
  69. data/lib/one_apm/{agent/threading → support/backtrace}/backtrace_node.rb +0 -0
  70. data/lib/one_apm/{agent/threading → support/backtrace}/backtrace_service.rb +0 -0
  71. data/lib/one_apm/support/environment_report.rb +6 -38
  72. data/lib/one_apm/support/system_info.rb +1 -6
  73. data/lib/one_apm/transaction/composite_segment.rb +30 -0
  74. data/lib/one_apm/transaction/sample_buffer/developer_mode_sample_buffer.rb +58 -0
  75. data/lib/one_apm/transaction/segment_summary.rb +0 -5
  76. data/lib/one_apm/transaction/summary_segment.rb +24 -0
  77. data/lib/one_apm/transaction/transaction_sample.rb +2 -0
  78. data/lib/one_apm/version.rb +2 -2
  79. metadata +51 -19
  80. data/lib/one_apm/configuration/autostart.rb +0 -41
@@ -1,14 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
- # This module is intended to provide access to information about the host OS and
4
- # [virtual] machine. It intentionally does no caching and maintains no state -
5
- # caching should be handled by clients if needed. Methods should return nil if
6
- # the requested information is unavailable.
7
-
8
3
  require 'rbconfig'
9
4
 
10
5
  module OneApm
11
- module Agent
6
+ module Support
12
7
  module SystemInfo
13
8
  def self.ruby_os_identifier
14
9
  RbConfig::CONFIG['target_os']
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ require 'one_apm/transaction/transaction_sample'
4
+ require 'one_apm/transaction/segment'
5
+ require 'one_apm/transaction/summary_segment'
6
+
7
+ module OneApm
8
+ class TransactionSample
9
+ class CompositeSegment < Segment
10
+ attr_reader :detail_segments
11
+
12
+ def initialize(segments)
13
+ summary = SummarySegment.new(segments.first)
14
+ super summary.entry_timestamp, "Repeating pattern (#{segments.length} repeats)"
15
+
16
+ summary.end_trace(segments.last.exit_timestamp)
17
+
18
+ @detail_segments = segments.clone
19
+
20
+ add_called_segment(summary)
21
+ end_trace summary.exit_timestamp
22
+ end
23
+
24
+ def detail_segments=(segments)
25
+ @detail_segments = segments
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,58 @@
1
+ # encoding: utf-8
2
+
3
+ require 'one_apm/transaction/sample_buffer/transaction_sample_buffer'
4
+
5
+ module OneApm
6
+ class Transaction
7
+ class DeveloperModeSampleBuffer < TransactionSampleBuffer
8
+
9
+ CAPACITY = 100
10
+
11
+ def capacity
12
+ max_capacity
13
+ end
14
+
15
+ # Dev mode is allowed more than the typical upper limit.
16
+ # Sidestep normal cap by overriding max_capacity.
17
+ def max_capacity
18
+ CAPACITY
19
+ end
20
+
21
+ def harvest_samples
22
+ NO_SAMPLES
23
+ end
24
+
25
+ def enabled?
26
+ Manager.config[:developer_mode]
27
+ end
28
+
29
+ # Truncate to the last capacity samples we've received
30
+ def truncate_samples
31
+ @samples = @samples.last(capacity)
32
+ end
33
+
34
+ # We don't hold onto previously trapped transactions on harvest
35
+ # We've already got all the traces we want, thank you!
36
+ def store_previous(*)
37
+ end
38
+
39
+ # Captures the stack trace for a segment
40
+ # This is expensive and not for production mode
41
+ def visit_segment(segment)
42
+ return unless enabled? && segment
43
+
44
+ trace = strip_oneapm_frames(caller)
45
+ trace = trace.first(40) if trace.length > 40
46
+ segment[:backtrace] = trace
47
+ end
48
+
49
+ def strip_oneapm_frames(trace)
50
+ while trace.first =~/\/lib\/one_apm\/agent\//
51
+ trace.shift
52
+ end
53
+ trace
54
+ end
55
+
56
+ end
57
+ end
58
+ end
@@ -41,11 +41,6 @@ module OneApm
41
41
  return 0 unless @total_time && @sample.duration && @sample.duration > 0
42
42
  @total_time / @sample.duration
43
43
  end
44
-
45
- def ui_name
46
- return @metric_name if @metric_name == 'Remainder'
47
- OneApm::MetricParser::MetricParser.parse(@metric_name).developer_name
48
- end
49
44
  end
50
45
  end
51
46
  end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ require 'one_apm/transaction/transaction_sample'
4
+ require 'one_apm/transaction/segment'
5
+
6
+ module OneApm
7
+ class TransactionSample
8
+ class SummarySegment < Segment
9
+ def initialize(segment)
10
+ super segment.entry_timestamp, segment.metric_name
11
+
12
+ add_segments segment.called_segments
13
+
14
+ end_trace segment.exit_timestamp
15
+ end
16
+
17
+ def add_segments(segments)
18
+ segments.collect do |segment|
19
+ SummarySegment.new(segment)
20
+ end.each {|segment| add_called_segment(segment)}
21
+ end
22
+ end
23
+ end
24
+ end
@@ -4,6 +4,8 @@ require 'base64'
4
4
 
5
5
  require 'one_apm/transaction/segment'
6
6
  require 'one_apm/transaction/transaction_analysis'
7
+ require 'one_apm/transaction/summary_segment'
8
+ require 'one_apm/transaction/composite_segment'
7
9
 
8
10
  module OneApm
9
11
  # the number of segments that need to exist before we roll them up
@@ -4,8 +4,8 @@ module OneApm
4
4
  module VERSION
5
5
 
6
6
  MAJOR = 1
7
- MINOR = 1
8
- TINY = 3
7
+ MINOR = 2
8
+ TINY = 0
9
9
 
10
10
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
11
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oneapm_rpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - oneapm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-18 00:00:00.000000000 Z
11
+ date: 2015-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -238,26 +238,17 @@ files:
238
238
  - lib/one_apm/agent/database/obfuscation_helpers.rb
239
239
  - lib/one_apm/agent/database/obfuscator.rb
240
240
  - lib/one_apm/agent/database/postgres_explain_obfuscator.rb
241
- - lib/one_apm/agent/datastores.rb
242
- - lib/one_apm/agent/datastores/metric_helper.rb
243
- - lib/one_apm/agent/datastores/mongo.rb
244
- - lib/one_apm/agent/datastores/mongo/metric_translator.rb
245
- - lib/one_apm/agent/datastores/mongo/obfuscator.rb
246
- - lib/one_apm/agent/datastores/mongo/statement_formatter.rb
241
+ - lib/one_apm/agent/datastore.rb
242
+ - lib/one_apm/agent/datastore/metric_helper.rb
243
+ - lib/one_apm/agent/datastore/mongo.rb
244
+ - lib/one_apm/agent/datastore/mongo/metric_translator.rb
245
+ - lib/one_apm/agent/datastore/mongo/obfuscator.rb
246
+ - lib/one_apm/agent/datastore/mongo/statement_formatter.rb
247
247
  - lib/one_apm/agent/harvester.rb
248
248
  - lib/one_apm/agent/inbound_request_monitor.rb
249
249
  - lib/one_apm/agent/javascript_instrumentor.rb
250
- - lib/one_apm/agent/sampler.rb
251
- - lib/one_apm/agent/sampler_collection.rb
252
- - lib/one_apm/agent/samplers/cpu_sampler.rb
253
- - lib/one_apm/agent/samplers/delayed_job_sampler.rb
254
- - lib/one_apm/agent/samplers/memory_sampler.rb
255
- - lib/one_apm/agent/samplers/object_sampler.rb
256
- - lib/one_apm/agent/samplers/vm_sampler.rb
257
250
  - lib/one_apm/agent/synthetics_monitor.rb
258
251
  - lib/one_apm/agent/threading/agent_thread.rb
259
- - lib/one_apm/agent/threading/backtrace_node.rb
260
- - lib/one_apm/agent/threading/backtrace_service.rb
261
252
  - lib/one_apm/agent/threading/thread_profile.rb
262
253
  - lib/one_apm/collector/collector/helper.rb
263
254
  - lib/one_apm/collector/collector/http_connection.rb
@@ -275,12 +266,18 @@ files:
275
266
  - lib/one_apm/collector/containers/transaction_event_aggregator.rb
276
267
  - lib/one_apm/collector/containers/transaction_sampler.rb
277
268
  - lib/one_apm/collector/containers/utilization_data.rb
278
- - lib/one_apm/collector/forked_process_service.rb
269
+ - lib/one_apm/collector/sampler.rb
270
+ - lib/one_apm/collector/samplers/cpu_sampler.rb
271
+ - lib/one_apm/collector/samplers/delayed_job_sampler.rb
272
+ - lib/one_apm/collector/samplers/memory_sampler.rb
273
+ - lib/one_apm/collector/samplers/object_sampler.rb
274
+ - lib/one_apm/collector/samplers/vm_sampler.rb
279
275
  - lib/one_apm/collector/stats_engine/gc_profiler.rb
280
276
  - lib/one_apm/collector/stats_engine/metric_stats.rb
281
277
  - lib/one_apm/collector/stats_engine/stats_hash.rb
278
+ - lib/one_apm/collector/support/forked_process_service.rb
279
+ - lib/one_apm/collector/support/sampler_collection.rb
282
280
  - lib/one_apm/configuration.rb
283
- - lib/one_apm/configuration/autostart.rb
284
281
  - lib/one_apm/configuration/default_source.rb
285
282
  - lib/one_apm/configuration/environment_source.rb
286
283
  - lib/one_apm/configuration/high_security_source.rb
@@ -360,10 +357,42 @@ files:
360
357
  - lib/one_apm/probe/instance_methods.rb
361
358
  - lib/one_apm/probe/instrumentation.rb
362
359
  - lib/one_apm/rack/browser_monitoring.rb
360
+ - lib/one_apm/rack/developer_mode.rb
361
+ - lib/one_apm/rack/developer_mode/helper.rb
362
+ - lib/one_apm/rack/developer_mode/views/oneapm/_explain_plans.html.erb
363
+ - lib/one_apm/rack/developer_mode/views/oneapm/_home_right.html.erb
364
+ - lib/one_apm/rack/developer_mode/views/oneapm/_sample.html.erb
365
+ - lib/one_apm/rack/developer_mode/views/oneapm/_segment.html.erb
366
+ - lib/one_apm/rack/developer_mode/views/oneapm/_segment_limit_message.html.erb
367
+ - lib/one_apm/rack/developer_mode/views/oneapm/_segment_row.html.erb
368
+ - lib/one_apm/rack/developer_mode/views/oneapm/_show_sample_detail.html.erb
369
+ - lib/one_apm/rack/developer_mode/views/oneapm/_show_sample_sql.html.erb
370
+ - lib/one_apm/rack/developer_mode/views/oneapm/_show_sample_summary.html.erb
371
+ - lib/one_apm/rack/developer_mode/views/oneapm/_sql_row.html.erb
372
+ - lib/one_apm/rack/developer_mode/views/oneapm/_stack_trace.html.erb
373
+ - lib/one_apm/rack/developer_mode/views/oneapm/_summary_table.html.erb
374
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/images/arrow-close.png
375
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/images/arrow-open.png
376
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/images/oneapm_logo.png
377
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/c3.min.js
378
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/d3.min.js
379
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/jquery.min.js
380
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/transaction_sample.js
381
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/stylesheets/bootstrap.min.css
382
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/stylesheets/c3.css
383
+ - lib/one_apm/rack/developer_mode/views/oneapm/assets/stylesheets/style.css
384
+ - lib/one_apm/rack/developer_mode/views/oneapm/explain_sql.html.erb
385
+ - lib/one_apm/rack/developer_mode/views/oneapm/index.html.erb
386
+ - lib/one_apm/rack/developer_mode/views/oneapm/layout.html.erb
387
+ - lib/one_apm/rack/developer_mode/views/oneapm/sample_not_found.html.erb
388
+ - lib/one_apm/rack/developer_mode/views/oneapm/show_sample.html.erb
389
+ - lib/one_apm/rack/developer_mode/views/oneapm/threads.html.erb
363
390
  - lib/one_apm/rack/middleware_base.rb
364
391
  - lib/one_apm/rack/middleware_hooks.rb
365
392
  - lib/one_apm/rack/middleware_tracing.rb
366
393
  - lib/one_apm/rack/middleware_wrapper.rb
394
+ - lib/one_apm/support/backtrace/backtrace_node.rb
395
+ - lib/one_apm/support/backtrace/backtrace_service.rb
367
396
  - lib/one_apm/support/chained_call.rb
368
397
  - lib/one_apm/support/coerce.rb
369
398
  - lib/one_apm/support/collection_helper.rb
@@ -415,8 +444,10 @@ files:
415
444
  - lib/one_apm/support/vm/snapshot.rb
416
445
  - lib/one_apm/transaction.rb
417
446
  - lib/one_apm/transaction/class_methods.rb
447
+ - lib/one_apm/transaction/composite_segment.rb
418
448
  - lib/one_apm/transaction/instance_helpers.rb
419
449
  - lib/one_apm/transaction/metric_constants.rb
450
+ - lib/one_apm/transaction/sample_buffer/developer_mode_sample_buffer.rb
420
451
  - lib/one_apm/transaction/sample_buffer/force_persist_sample_buffer.rb
421
452
  - lib/one_apm/transaction/sample_buffer/slowest_sample_buffer.rb
422
453
  - lib/one_apm/transaction/sample_buffer/synthetics_sample_buffer.rb
@@ -424,6 +455,7 @@ files:
424
455
  - lib/one_apm/transaction/sample_buffer/xray_sample_buffer.rb
425
456
  - lib/one_apm/transaction/segment.rb
426
457
  - lib/one_apm/transaction/segment_summary.rb
458
+ - lib/one_apm/transaction/summary_segment.rb
427
459
  - lib/one_apm/transaction/thread_local_access.rb
428
460
  - lib/one_apm/transaction/transaction_analysis.rb
429
461
  - lib/one_apm/transaction/transaction_apdex.rb
@@ -1,41 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module OneApm
4
- module Configuration
5
- module Autostart
6
- extend self
7
-
8
- def agent_should_start?
9
- !blacklisted_constants? &&
10
- !blacklisted_executables? &&
11
- !in_blacklisted_rake_task?
12
- end
13
-
14
- def blacklisted_constants?
15
- blacklisted?(OneApm::Manager.config[:'autostart.blacklisted_constants']) do |name|
16
- OneApm::LanguageSupport.constant_is_defined?(name)
17
- end
18
- end
19
-
20
- def blacklisted_executables?
21
- blacklisted?(OneApm::Manager.config[:'autostart.blacklisted_executables']) do |bin|
22
- File.basename($0) == bin
23
- end
24
- end
25
-
26
- def blacklisted?(value, &block)
27
- value.split(/\s*,\s*/).any?(&block)
28
- end
29
-
30
- def in_blacklisted_rake_task?
31
- tasks = begin
32
- ::Rake.application.top_level_tasks
33
- rescue => e
34
- OneApm::Manager.logger.debug("Not in Rake environment so skipping blacklisted_rake_tasks check: #{e}")
35
- []
36
- end
37
- !(tasks & OneApm::Manager.config[:'autostart.blacklisted_rake_tasks'].split(/\s*,\s*/)).empty?
38
- end
39
- end
40
- end
41
- end