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.
- checksums.yaml +4 -4
- data/lib/one_apm/agent.rb +4 -4
- data/lib/one_apm/agent/agent/connect.rb +3 -49
- data/lib/one_apm/agent/agent/container_data_manager.rb +2 -10
- data/lib/one_apm/agent/agent/forkable_dispatcher_functions.rb +4 -2
- data/lib/one_apm/agent/agent/helpers.rb +2 -0
- data/lib/one_apm/agent/agent/start.rb +3 -3
- data/lib/one_apm/agent/agent/start_worker_thread.rb +2 -0
- data/lib/one_apm/agent/database/active_record_helper.rb +1 -0
- data/lib/one_apm/agent/{datastores.rb → datastore.rb} +2 -2
- data/lib/one_apm/agent/{datastores → datastore}/metric_helper.rb +1 -1
- data/lib/one_apm/agent/{datastores → datastore}/mongo.rb +1 -1
- data/lib/one_apm/agent/{datastores → datastore}/mongo/metric_translator.rb +4 -4
- data/lib/one_apm/agent/{datastores → datastore}/mongo/obfuscator.rb +1 -1
- data/lib/one_apm/agent/{datastores → datastore}/mongo/statement_formatter.rb +2 -2
- data/lib/one_apm/agent/threading/agent_thread.rb +50 -50
- data/lib/one_apm/agent/threading/thread_profile.rb +1 -4
- data/lib/one_apm/collector/commands/thread_profiler_session.rb +1 -1
- data/lib/one_apm/collector/containers/agent_command_router.rb +1 -1
- data/lib/one_apm/collector/containers/transaction_sampler.rb +7 -1
- data/lib/one_apm/collector/containers/utilization_data.rb +3 -4
- data/lib/one_apm/{agent → collector}/sampler.rb +1 -1
- data/lib/one_apm/{agent → collector}/samplers/cpu_sampler.rb +4 -4
- data/lib/one_apm/{agent → collector}/samplers/delayed_job_sampler.rb +3 -14
- data/lib/one_apm/{agent → collector}/samplers/memory_sampler.rb +13 -15
- data/lib/one_apm/{agent → collector}/samplers/object_sampler.rb +3 -3
- data/lib/one_apm/{agent → collector}/samplers/vm_sampler.rb +2 -2
- data/lib/one_apm/collector/{forked_process_service.rb → support/forked_process_service.rb} +1 -1
- data/lib/one_apm/{agent → collector/support}/sampler_collection.rb +2 -2
- data/lib/one_apm/configuration/default_source.rb +7 -2
- data/lib/one_apm/frameworks/rails.rb +18 -0
- data/lib/one_apm/inst/nosql/memcache.rb +2 -2
- data/lib/one_apm/inst/nosql/mongo.rb +6 -6
- data/lib/one_apm/inst/nosql/mongo_moped.rb +3 -3
- data/lib/one_apm/inst/nosql/redis.rb +4 -4
- data/lib/one_apm/manager.rb +38 -6
- data/lib/one_apm/metrics/metric_spec.rb +1 -4
- data/lib/one_apm/probe/instrumentation.rb +2 -5
- data/lib/one_apm/rack/developer_mode.rb +221 -0
- data/lib/one_apm/rack/developer_mode/helper.rb +299 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_explain_plans.html.erb +25 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_home_right.html.erb +18 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_sample.html.erb +20 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_segment.html.erb +24 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_segment_limit_message.html.erb +1 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_segment_row.html.erb +11 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_show_sample_detail.html.erb +30 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_show_sample_sql.html.erb +19 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_show_sample_summary.html.erb +25 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_sql_row.html.erb +15 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_stack_trace.html.erb +14 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/_summary_table.html.erb +12 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/images/arrow-close.png +0 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/images/arrow-open.png +0 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/images/oneapm_logo.png +0 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/c3.min.js +5 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/d3.min.js +5 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/jquery.min.js +4 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/javascript/transaction_sample.js +120 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/stylesheets/bootstrap.min.css +5 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/stylesheets/c3.css +158 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/assets/stylesheets/style.css +149 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/explain_sql.html.erb +53 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/index.html.erb +33 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/layout.html.erb +46 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/sample_not_found.html.erb +2 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/show_sample.html.erb +61 -0
- data/lib/one_apm/rack/developer_mode/views/oneapm/threads.html.erb +53 -0
- data/lib/one_apm/{agent/threading → support/backtrace}/backtrace_node.rb +0 -0
- data/lib/one_apm/{agent/threading → support/backtrace}/backtrace_service.rb +0 -0
- data/lib/one_apm/support/environment_report.rb +6 -38
- data/lib/one_apm/support/system_info.rb +1 -6
- data/lib/one_apm/transaction/composite_segment.rb +30 -0
- data/lib/one_apm/transaction/sample_buffer/developer_mode_sample_buffer.rb +58 -0
- data/lib/one_apm/transaction/segment_summary.rb +0 -5
- data/lib/one_apm/transaction/summary_segment.rb +24 -0
- data/lib/one_apm/transaction/transaction_sample.rb +2 -0
- data/lib/one_apm/version.rb +2 -2
- metadata +51 -19
- data/lib/one_apm/configuration/autostart.rb +0 -41
@@ -1,10 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
require 'set'
|
4
|
-
require 'one_apm/support/
|
5
|
-
require 'one_apm/agent/threading/backtrace_node'
|
6
|
-
|
7
|
-
# Data structure for representing a thread profile
|
4
|
+
require 'one_apm/support/backtrace/backtrace_node'
|
8
5
|
|
9
6
|
module OneApm
|
10
7
|
module Agent
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'one_apm/collector/commands/agent_command'
|
4
4
|
require 'one_apm/collector/commands/xray_session_collection'
|
5
5
|
require 'one_apm/collector/commands/thread_profiler_session'
|
6
|
-
require 'one_apm/
|
6
|
+
require 'one_apm/support/backtrace/backtrace_service'
|
7
7
|
|
8
8
|
module OneApm
|
9
9
|
module Collector
|
@@ -5,6 +5,7 @@ require 'one_apm/transaction/sample_buffer/force_persist_sample_buffer'
|
|
5
5
|
require 'one_apm/transaction/sample_buffer/slowest_sample_buffer'
|
6
6
|
require 'one_apm/transaction/sample_buffer/synthetics_sample_buffer'
|
7
7
|
require 'one_apm/transaction/sample_buffer/xray_sample_buffer'
|
8
|
+
require 'one_apm/transaction/sample_buffer/developer_mode_sample_buffer'
|
8
9
|
|
9
10
|
module OneApm
|
10
11
|
module Collector
|
@@ -27,13 +28,15 @@ module OneApm
|
|
27
28
|
def on_finishing_transaction(*args); end
|
28
29
|
end
|
29
30
|
|
30
|
-
attr_reader :last_sample, :xray_sample_buffer
|
31
|
+
attr_reader :last_sample, :xray_sample_buffer, :dev_mode_sample_buffer
|
31
32
|
|
32
33
|
def initialize
|
33
34
|
@xray_sample_buffer = OneApm::Transaction::XraySampleBuffer.new
|
35
|
+
@dev_mode_sample_buffer = OneApm::Transaction::DeveloperModeSampleBuffer.new
|
34
36
|
|
35
37
|
@sample_buffers = []
|
36
38
|
@sample_buffers << @xray_sample_buffer
|
39
|
+
@sample_buffers << @dev_mode_sample_buffer
|
37
40
|
@sample_buffers << OneApm::Transaction::SlowestSampleBuffer.new
|
38
41
|
@sample_buffers << OneApm::Transaction::SyntheticsSampleBuffer.new
|
39
42
|
@sample_buffers << OneApm::Transaction::ForcePersistSampleBuffer.new
|
@@ -81,6 +84,9 @@ module OneApm
|
|
81
84
|
return unless builder
|
82
85
|
|
83
86
|
segment = builder.trace_entry(time.to_f)
|
87
|
+
if @dev_mode_sample_buffer
|
88
|
+
@dev_mode_sample_buffer.visit_segment(segment)
|
89
|
+
end
|
84
90
|
segment
|
85
91
|
end
|
86
92
|
|
@@ -10,7 +10,6 @@ module OneApm
|
|
10
10
|
[hostname, container_id, cpu_count, instance_type]
|
11
11
|
end
|
12
12
|
|
13
|
-
# No persistent data, so no need for merging or resetting
|
14
13
|
def merge!(*_); end
|
15
14
|
def reset!(*_); end
|
16
15
|
|
@@ -19,12 +18,12 @@ module OneApm
|
|
19
18
|
end
|
20
19
|
|
21
20
|
def container_id
|
22
|
-
::OneApm::
|
21
|
+
::OneApm::Support::SystemInfo.docker_container_id
|
23
22
|
end
|
24
23
|
|
25
24
|
def cpu_count
|
26
|
-
::OneApm::
|
27
|
-
::OneApm::
|
25
|
+
::OneApm::Support::SystemInfo.clear_processor_info
|
26
|
+
::OneApm::Support::SystemInfo.num_logical_processors
|
28
27
|
end
|
29
28
|
|
30
29
|
def instance_type
|
@@ -1,17 +1,17 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require 'one_apm/
|
3
|
+
require 'one_apm/collector/sampler'
|
4
4
|
|
5
5
|
module OneApm
|
6
|
-
module
|
6
|
+
module Collector
|
7
7
|
module Samplers
|
8
|
-
class CpuSampler < OneApm::
|
8
|
+
class CpuSampler < OneApm::Collector::Sampler
|
9
9
|
attr_reader :last_time
|
10
10
|
|
11
11
|
named :cpu
|
12
12
|
|
13
13
|
def initialize
|
14
|
-
@processor_count = OneApm::
|
14
|
+
@processor_count = OneApm::Support::SystemInfo.num_logical_processors
|
15
15
|
poll
|
16
16
|
end
|
17
17
|
|
@@ -1,23 +1,14 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require 'one_apm/
|
3
|
+
require 'one_apm/collector/sampler'
|
4
4
|
require 'one_apm/inst/background_job/delayed_job_injection'
|
5
5
|
|
6
6
|
module OneApm
|
7
|
-
module
|
7
|
+
module Collector
|
8
8
|
module Samplers
|
9
|
-
|
10
|
-
# It assumes jobs are cleared after being run, and failed jobs are not (otherwise
|
11
|
-
# the failed job metric is useless).
|
12
|
-
#
|
13
|
-
# In earlier versions it will break out the queue length by priority. In later
|
14
|
-
# versions of DJ where distinct queues are supported, it breaks it out by queue name.
|
15
|
-
#
|
16
|
-
class DelayedJobSampler < OneApm::Agent::Sampler
|
9
|
+
class DelayedJobSampler < OneApm::Collector::Sampler
|
17
10
|
named :delayed_job
|
18
11
|
|
19
|
-
# DelayedJob supports multiple backends, only some of which we can
|
20
|
-
# handle. Check whether we think we've got what we need here.
|
21
12
|
def self.supported_backend?
|
22
13
|
::Delayed::Worker.backend.to_s == "Delayed::Backend::ActiveRecord::Job"
|
23
14
|
end
|
@@ -91,8 +82,6 @@ module OneApm
|
|
91
82
|
|
92
83
|
def queue_counts(column_name)
|
93
84
|
now = ::Delayed::Job.db_time_now
|
94
|
-
# There is not an ActiveRecord syntax for what we're trying to do
|
95
|
-
# here that's valid on 2.x through 4.1, so split it up.
|
96
85
|
result = if ::ActiveRecord::VERSION::MAJOR.to_i < 4
|
97
86
|
::Delayed::Job.count(:group => column_name,
|
98
87
|
:conditions => [QUEUE_QUERY_CONDITION, now])
|
@@ -1,18 +1,17 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require 'one_apm/
|
3
|
+
require 'one_apm/collector/sampler'
|
4
4
|
|
5
5
|
module OneApm
|
6
|
-
module
|
6
|
+
module Collector
|
7
7
|
module Samplers
|
8
8
|
|
9
|
-
class MemorySampler < OneApm::
|
9
|
+
class MemorySampler < OneApm::Collector::Sampler
|
10
10
|
named :memory
|
11
11
|
|
12
12
|
attr_accessor :sampler
|
13
13
|
|
14
14
|
def initialize
|
15
|
-
# macos, linux, solaris
|
16
15
|
if defined? JRuby
|
17
16
|
@sampler = JavaHeapSampler.new
|
18
17
|
elsif platform =~ /linux/
|
@@ -49,7 +48,7 @@ module OneApm
|
|
49
48
|
end
|
50
49
|
end
|
51
50
|
def platform
|
52
|
-
OneApm::
|
51
|
+
OneApm::Collector::Samplers::MemorySampler.platform
|
53
52
|
end
|
54
53
|
|
55
54
|
def poll
|
@@ -60,6 +59,7 @@ module OneApm
|
|
60
59
|
end
|
61
60
|
|
62
61
|
class Base
|
62
|
+
|
63
63
|
def can_run?
|
64
64
|
return false if @broken
|
65
65
|
m = get_memory rescue nil
|
@@ -81,6 +81,7 @@ module OneApm
|
|
81
81
|
return nil
|
82
82
|
end
|
83
83
|
end
|
84
|
+
|
84
85
|
end
|
85
86
|
|
86
87
|
class JavaHeapSampler < Base
|
@@ -89,39 +90,35 @@ module OneApm
|
|
89
90
|
raise "Can't sample Java heap unless running in JRuby" unless defined? JRuby
|
90
91
|
java.lang.Runtime.getRuntime.totalMemory / (1024 * 1024).to_f rescue nil
|
91
92
|
end
|
93
|
+
|
92
94
|
def to_s
|
93
95
|
"JRuby Java heap sampler"
|
94
96
|
end
|
97
|
+
|
95
98
|
end
|
96
99
|
|
97
100
|
class ShellPS < Base
|
101
|
+
|
98
102
|
def initialize(command)
|
99
103
|
super()
|
100
104
|
@command = command
|
101
105
|
end
|
102
|
-
|
103
|
-
#
|
106
|
+
|
104
107
|
def get_memory
|
105
108
|
process = $$
|
106
109
|
memory = `#{@command} #{process}`.split("\n")[1].to_f / 1024.0 rescue nil
|
107
|
-
# if for some reason the ps command doesn't work on the resident os,
|
108
|
-
# then don't execute it any more.
|
109
110
|
raise "Faulty command: `#{@command} #{process}`" if memory.nil? || memory <= 0
|
110
111
|
memory
|
111
112
|
end
|
113
|
+
|
112
114
|
def to_s
|
113
115
|
"shell command sampler: #{@command}"
|
114
116
|
end
|
117
|
+
|
115
118
|
end
|
116
119
|
|
117
|
-
# ProcStatus
|
118
|
-
#
|
119
|
-
# A class that samples memory by reading the file /proc/$$/status, which is specific to linux
|
120
|
-
#
|
121
120
|
class ProcStatus < Base
|
122
121
|
|
123
|
-
# Returns the amount of resident memory this process is using in MB
|
124
|
-
#
|
125
122
|
def get_memory
|
126
123
|
proc_status = File.open(proc_status_file, "r") {|f| f.read_nonblock(4096).strip }
|
127
124
|
if proc_status =~ /RSS:\s*(\d+) kB/i
|
@@ -137,6 +134,7 @@ module OneApm
|
|
137
134
|
def to_s
|
138
135
|
"proc status file sampler: #{proc_status_file}"
|
139
136
|
end
|
137
|
+
|
140
138
|
end
|
141
139
|
end
|
142
140
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require 'one_apm/
|
3
|
+
require 'one_apm/collector/sampler'
|
4
4
|
|
5
5
|
module OneApm
|
6
|
-
module
|
6
|
+
module Collector
|
7
7
|
module Samplers
|
8
|
-
class ObjectSampler < OneApm::
|
8
|
+
class ObjectSampler < OneApm::Collector::Sampler
|
9
9
|
named :object
|
10
10
|
|
11
11
|
def self.supported_on_this_platform?
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require 'one_apm/
|
3
|
+
require 'one_apm/collector/sampler'
|
4
4
|
require 'one_apm/support/vm'
|
5
5
|
|
6
6
|
module OneApm
|
7
|
-
module
|
7
|
+
module Collector
|
8
8
|
module Samplers
|
9
9
|
class VMSampler < Sampler
|
10
10
|
GC_RUNS_METRIC = 'RubyVM/GC/runs'.freeze
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module OneApm
|
4
|
-
module
|
4
|
+
module Collector
|
5
5
|
class SamplerCollection
|
6
6
|
include Enumerable
|
7
7
|
|
@@ -52,7 +52,7 @@ module OneApm
|
|
52
52
|
else
|
53
53
|
OneApm::Manager.logger.debug("#{sampler_class.name} not supported on this platform.")
|
54
54
|
end
|
55
|
-
rescue OneApm::
|
55
|
+
rescue OneApm::Collector::Sampler::Unsupported => e
|
56
56
|
OneApm::Manager.logger.info("#{sampler_class.name} not available: #{e}")
|
57
57
|
rescue => e
|
58
58
|
OneApm::Manager.logger.error("Error registering sampler:", e)
|
@@ -3,7 +3,6 @@
|
|
3
3
|
module OneApm
|
4
4
|
module Configuration
|
5
5
|
|
6
|
-
# Helper since default Procs are evaluated in the context of this module
|
7
6
|
def self.value_of(key)
|
8
7
|
Proc.new do
|
9
8
|
OneApm::Manager.config[key]
|
@@ -84,7 +83,7 @@ module OneApm
|
|
84
83
|
Proc.new {
|
85
84
|
OneApm::Manager.config[:enabled] &&
|
86
85
|
OneApm::Manager.config[:monitor_mode] &&
|
87
|
-
OneApm::
|
86
|
+
OneApm::Manager.agent_should_start?
|
88
87
|
}
|
89
88
|
end
|
90
89
|
|
@@ -401,6 +400,12 @@ module OneApm
|
|
401
400
|
:type => Boolean,
|
402
401
|
:description => 'Enable or disable transmission of application environment information to the OneApm data collection service.'
|
403
402
|
},
|
403
|
+
:developer_mode => {
|
404
|
+
:default => false,
|
405
|
+
:public => true,
|
406
|
+
:type => Boolean,
|
407
|
+
:description => "developer mode for profiling in development, should be disable in production"
|
408
|
+
},
|
404
409
|
:'resque.use_harvest_lock' => {
|
405
410
|
:default => false,
|
406
411
|
:public => true,
|
@@ -44,6 +44,7 @@ module OneApm
|
|
44
44
|
if !Manager.config[:agent_enabled]
|
45
45
|
OneApm::Manager.logger.info("OneApm Agent not running.")
|
46
46
|
else
|
47
|
+
install_developer_mode(rails_config) if Manager.config[:developer_mode]
|
47
48
|
install_browser_monitoring(rails_config)
|
48
49
|
install_agent_hooks(rails_config)
|
49
50
|
end
|
@@ -76,6 +77,23 @@ module OneApm
|
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
80
|
+
def install_developer_mode(rails_config)
|
81
|
+
return if env != "development"
|
82
|
+
return if @installed
|
83
|
+
@installed = true
|
84
|
+
if rails_config && rails_config.respond_to?(:middleware)
|
85
|
+
begin
|
86
|
+
require 'one_apm/rack/developer_mode'
|
87
|
+
rails_config.middleware.use OneApm::Rack::DeveloperMode
|
88
|
+
OneApm::Manager.logger.info("Developer Mode enabled.")
|
89
|
+
rescue => e
|
90
|
+
::OneApm::Manager.logger.warn("Error installing OneAPM Developer Mode", e)
|
91
|
+
end
|
92
|
+
elsif rails_config
|
93
|
+
::OneApm::Manager.logger.warn("Developer mode not available for Rails versions prior to 2.2")
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
79
97
|
protected
|
80
98
|
|
81
99
|
def install_shim
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require 'one_apm/agent/
|
3
|
+
require 'one_apm/agent/datastore/metric_helper'
|
4
4
|
|
5
5
|
module OneApm
|
6
6
|
module Agent
|
@@ -31,7 +31,7 @@ module OneApm
|
|
31
31
|
alias_method method_name_without, method_name
|
32
32
|
|
33
33
|
define_method method_name do |*args, &block|
|
34
|
-
metrics =
|
34
|
+
metrics = Datastore::MetricHelper.metrics_for("Memcached", method_name)
|
35
35
|
|
36
36
|
OneApm::Support::MethodTracer.trace_execution_scoped(metrics) do
|
37
37
|
t0 = Time.now
|
@@ -8,8 +8,8 @@ LibraryDetection.defer do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
depends_on do
|
11
|
-
require 'one_apm/agent/
|
12
|
-
OneApm::Agent::
|
11
|
+
require 'one_apm/agent/datastore/mongo'
|
12
|
+
OneApm::Agent::Datastore::Mongo.is_supported_version?
|
13
13
|
end
|
14
14
|
|
15
15
|
executes do
|
@@ -18,8 +18,8 @@ LibraryDetection.defer do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def install_mongo_instrumentation
|
21
|
-
require 'one_apm/agent/
|
22
|
-
require 'one_apm/agent/
|
21
|
+
require 'one_apm/agent/datastore/mongo/metric_translator'
|
22
|
+
require 'one_apm/agent/datastore/mongo/statement_formatter'
|
23
23
|
|
24
24
|
hook_instrument_methods
|
25
25
|
instrument_save
|
@@ -40,7 +40,7 @@ LibraryDetection.defer do
|
|
40
40
|
# It's key that this method eats all exceptions, as it rests between the
|
41
41
|
# Mongo operation the user called and us returning them the data. Be safe!
|
42
42
|
def one_apm_notice_statement(t0, payload, name)
|
43
|
-
statement = OneApm::Agent::
|
43
|
+
statement = OneApm::Agent::Datastore::Mongo::StatementFormatter.format(payload, name)
|
44
44
|
if statement
|
45
45
|
OneApm::Manager.agent.transaction_sampler.notice_nosql_statement(statement, (Time.now - t0).to_f)
|
46
46
|
end
|
@@ -50,7 +50,7 @@ LibraryDetection.defer do
|
|
50
50
|
|
51
51
|
def one_apm_generate_metrics(operation, payload = nil)
|
52
52
|
payload ||= { :collection => self.name, :database => self.db.name }
|
53
|
-
OneApm::Agent::
|
53
|
+
OneApm::Agent::Datastore::Mongo::MetricTranslator.metrics_for(operation, payload)
|
54
54
|
end
|
55
55
|
|
56
56
|
def instrument_with_one_apm_trace(name, payload = {}, &block)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
require 'one_apm/support/method_tracer'
|
4
|
-
require 'one_apm/agent/
|
4
|
+
require 'one_apm/agent/datastore'
|
5
5
|
|
6
6
|
LibraryDetection.defer do
|
7
7
|
@name = :mongo_moped
|
@@ -44,10 +44,10 @@ module OneApm
|
|
44
44
|
|
45
45
|
if operation
|
46
46
|
callback = Proc.new do |result, metric, elapsed|
|
47
|
-
OneApm::Agent::
|
47
|
+
OneApm::Agent::Datastore.notice_statement(log_statement, elapsed)
|
48
48
|
end
|
49
49
|
|
50
|
-
OneApm::Agent::
|
50
|
+
OneApm::Agent::Datastore.wrap('MongoDB', operation, collection, callback) do
|
51
51
|
res = command.call
|
52
52
|
end
|
53
53
|
else
|