scout_apm 1.6.3 → 1.6.4
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/CHANGELOG.markdown +6 -0
- data/lib/scout_apm.rb +1 -0
- data/lib/scout_apm/agent.rb +1 -0
- data/lib/scout_apm/framework_integrations/rails_3_or_4.rb +13 -3
- data/lib/scout_apm/instruments/grape.rb +69 -0
- data/lib/scout_apm/version.rb +1 -1
- data/scout_apm.gemspec +1 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4a68db2ae2d5615f89aacc3c015909ee24bc49f
|
4
|
+
data.tar.gz: e21486b451e768a573c10615042c9b2d183bbb47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6c77fd02eb44509a79f883e27ff4e306e6c96cf063481a617968d0e3b5bd8d6ad9125b3b39247879dfa3c0daba032a48f74c2ddce392fa87864d45aae5a35dd
|
7
|
+
data.tar.gz: feaf556828e488ebc3c15d951af248ede825af9b2a47b8a13428da6516e4ae377c672564e1594c42370368f784b0d68f2b4eff4d1d82d152a6ad5206d0122a0e
|
data/CHANGELOG.markdown
CHANGED
data/lib/scout_apm.rb
CHANGED
@@ -77,6 +77,7 @@ require 'scout_apm/instruments/action_controller_rails_3_rails4'
|
|
77
77
|
require 'scout_apm/instruments/middleware_summary'
|
78
78
|
# require 'scout_apm/instruments/middleware_detailed' # Currently disabled functionality, see the file for details.
|
79
79
|
require 'scout_apm/instruments/rails_router'
|
80
|
+
require 'scout_apm/instruments/grape'
|
80
81
|
require 'scout_apm/instruments/sinatra'
|
81
82
|
require 'scout_apm/instruments/process/process_cpu'
|
82
83
|
require 'scout_apm/instruments/process/process_memory'
|
data/lib/scout_apm/agent.rb
CHANGED
@@ -272,6 +272,7 @@ module ScoutApm
|
|
272
272
|
install_instrument(ScoutApm::Instruments::Redis)
|
273
273
|
install_instrument(ScoutApm::Instruments::InfluxDB)
|
274
274
|
install_instrument(ScoutApm::Instruments::Elasticsearch)
|
275
|
+
install_instrument(ScoutApm::Instruments::Grape)
|
275
276
|
rescue
|
276
277
|
logger.warn "Exception loading instruments:"
|
277
278
|
logger.warn $!.message
|
@@ -34,7 +34,7 @@ module ScoutApm
|
|
34
34
|
|
35
35
|
def database_engine
|
36
36
|
return @database_engine if @database_engine
|
37
|
-
default = :
|
37
|
+
default = :postgres
|
38
38
|
|
39
39
|
@database_engine = if defined?(ActiveRecord::Base)
|
40
40
|
adapter = get_database_adapter # can be nil
|
@@ -54,10 +54,20 @@ module ScoutApm
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def get_database_adapter
|
57
|
-
ActiveRecord::Base.
|
57
|
+
adapter = if ActiveRecord::Base.respond_to?(:connection_config)
|
58
|
+
ActiveRecord::Base.connection_config[:adapter].to_s
|
59
|
+
else
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
|
63
|
+
if adapter.nil?
|
64
|
+
adapter = ActiveRecord::Base.configurations[env]["adapter"]
|
65
|
+
end
|
66
|
+
|
67
|
+
return adapter
|
58
68
|
rescue # this would throw an exception if ActiveRecord::Base is defined but no configuration exists.
|
59
69
|
nil
|
60
70
|
end
|
61
71
|
end
|
62
72
|
end
|
63
|
-
end
|
73
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module ScoutApm
|
2
|
+
module Instruments
|
3
|
+
class Grape
|
4
|
+
attr_reader :logger
|
5
|
+
|
6
|
+
def initalize(logger=ScoutApm::Agent.instance.logger)
|
7
|
+
@logger = logger
|
8
|
+
@installed = false
|
9
|
+
end
|
10
|
+
|
11
|
+
def installed?
|
12
|
+
@installed
|
13
|
+
end
|
14
|
+
|
15
|
+
def install
|
16
|
+
@installed = true
|
17
|
+
|
18
|
+
if defined?(::Grape) && defined?(::Grape::Endpoint)
|
19
|
+
ScoutApm::Agent.instance.logger.info "Instrumenting Grape::Endpoint"
|
20
|
+
|
21
|
+
::Grape::Endpoint.class_eval do
|
22
|
+
include ScoutApm::Instruments::GrapeEndpointInstruments
|
23
|
+
|
24
|
+
alias run_without_scout_instruments run
|
25
|
+
alias run run_with_scout_instruments
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
module GrapeEndpointInstruments
|
32
|
+
def run_with_scout_instruments
|
33
|
+
request = ::Grape::Request.new(env)
|
34
|
+
req = ScoutApm::RequestManager.lookup
|
35
|
+
path = ScoutApm::Agent.instance.config.value("uri_reporting") == 'path' ? request.path : request.fullpath
|
36
|
+
req.annotate_request(:uri => path)
|
37
|
+
|
38
|
+
# IP Spoofing Protection can throw an exception, just move on w/o remote ip
|
39
|
+
req.context.add_user(:ip => request.ip) rescue nil
|
40
|
+
|
41
|
+
req.set_headers(request.headers)
|
42
|
+
req.web!
|
43
|
+
|
44
|
+
begin
|
45
|
+
name = ["Grape",
|
46
|
+
self.options[:method].first,
|
47
|
+
self.options[:for].to_s,
|
48
|
+
self.namespace.sub(%r{\A/}, ''), # removing leading slashes
|
49
|
+
self.options[:path].first,
|
50
|
+
].compact.map{ |n| n.to_s }.join("/")
|
51
|
+
rescue => e
|
52
|
+
ScoutApm::Agent.instance.logger.info("Error getting Grape Endpoint Name. Error: #{e.message}. Options: #{self.options.inspect}")
|
53
|
+
name = "Grape/Unknown"
|
54
|
+
end
|
55
|
+
|
56
|
+
req.start_layer( ScoutApm::Layer.new("Controller", name) )
|
57
|
+
begin
|
58
|
+
run_without_scout_instruments
|
59
|
+
rescue
|
60
|
+
req.error!
|
61
|
+
raise
|
62
|
+
ensure
|
63
|
+
req.stop_layer
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
data/lib/scout_apm/version.rb
CHANGED
data/scout_apm.gemspec
CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.homepage = "https://github.com/scoutapp/scout_apm_ruby"
|
11
11
|
s.summary = "Ruby application performance monitoring"
|
12
12
|
s.description = "Monitors Ruby apps and reports detailed metrics on performance to Scout."
|
13
|
+
s.license = "Proprietary (See LICENSE.md)"
|
13
14
|
|
14
15
|
s.rubyforge_project = "scout_apm"
|
15
16
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scout_apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derek Haynes
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-07-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
@@ -111,6 +111,7 @@ files:
|
|
111
111
|
- lib/scout_apm/instruments/active_record.rb
|
112
112
|
- lib/scout_apm/instruments/delayed_job.rb
|
113
113
|
- lib/scout_apm/instruments/elasticsearch.rb
|
114
|
+
- lib/scout_apm/instruments/grape.rb
|
114
115
|
- lib/scout_apm/instruments/http_client.rb
|
115
116
|
- lib/scout_apm/instruments/influxdb.rb
|
116
117
|
- lib/scout_apm/instruments/middleware_detailed.rb
|
@@ -199,7 +200,8 @@ files:
|
|
199
200
|
- test/unit/sql_sanitizer_test.rb
|
200
201
|
- test/unit/utils/active_record_metric_name_test.rb
|
201
202
|
homepage: https://github.com/scoutapp/scout_apm_ruby
|
202
|
-
licenses:
|
203
|
+
licenses:
|
204
|
+
- Proprietary (See LICENSE.md)
|
203
205
|
metadata: {}
|
204
206
|
post_install_message:
|
205
207
|
rdoc_options: []
|
@@ -218,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
218
220
|
version: '0'
|
219
221
|
requirements: []
|
220
222
|
rubyforge_project: scout_apm
|
221
|
-
rubygems_version: 2.
|
223
|
+
rubygems_version: 2.6.2
|
222
224
|
signing_key:
|
223
225
|
specification_version: 4
|
224
226
|
summary: Ruby application performance monitoring
|
@@ -239,3 +241,4 @@ test_files:
|
|
239
241
|
- test/unit/slow_request_policy_test.rb
|
240
242
|
- test/unit/sql_sanitizer_test.rb
|
241
243
|
- test/unit/utils/active_record_metric_name_test.rb
|
244
|
+
has_rdoc:
|