oneapm_rpm 1.2.1 → 1.2.2.rc
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 +8 -8
- data/Guardfile +2 -1
- data/lib/one_apm/collector/collector/http_connection.rb +0 -3
- data/lib/one_apm/configuration/default_source.rb +7 -0
- data/lib/one_apm/rack/browser_monitoring.rb +26 -1
- data/lib/one_apm/transaction/class_methods.rb +1 -1
- data/lib/one_apm/transaction/metric_constants.rb +5 -4
- data/lib/one_apm/transaction/transaction_name.rb +15 -6
- data/lib/one_apm/transaction/transaction_namer.rb +2 -2
- data/lib/one_apm/transaction/transaction_summary.rb +1 -1
- data/lib/one_apm/version.rb +3 -2
- data/oneapm_rpm.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MTBjNGFlOWYyNDg0OGJmMzQzYTA1YjQzYjIxOGVjMjMyOTg3NjYwMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTY1NTEyNjRmODllNTJkYjI0ZjU1MDJhYjkwOTdhNzM3ZjI1YmEwZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NGVkZDg2OTA1Y2RjNWQwNzRmZmVhMjAwZTJkYTNjZmQxNGI5N2IxMWQxNDU4
|
10
|
+
M2E5NzlmYjI0ZTNhY2ZmYmQ0YzQ1M2Y3MWJlYTYwOWU4ZGIyOThlMWYxYzcw
|
11
|
+
MDdkYzAzMTI5MTk2ZjFiNGQ5MzY3YmEyMmVjOGU0MDAwNTk2ZDU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjBjMmFhYmRlMjI5YTJkNzU3Y2U3NTgwNjY0ODBlNzZjNDBlOWQ5OGY0YTNk
|
14
|
+
ZWIyYTRmZDlmNjRhODQ4NTI1ZDZkMmU2MmE3NGJjYmUzYzIwZjQ0OWY1NjQ5
|
15
|
+
MjM5MmUxN2I2YjRhMGRiZjNlYjE4MjlmN2JlZWE0MWYyMDQ0ZmE=
|
data/Guardfile
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
guard :minitest, :test_folders => ['test/one_apm'], :all_after_pass => false do
|
2
|
-
watch(%r{^lib
|
2
|
+
watch(%r{^lib\/.*\/(.*)\.rb$}) {|m| Dir["test/one_apm/**/#{m[1]}_test.rb"]}
|
3
|
+
watch(%r{.*suites\/(.+)?\/(.*)_test.rb$}){|m|Guard::UI.info "Change: #{m[1]}: #{m[0]}}"; system("rake test:multiverse[#{m[1]},file=#{m[0]}]") || throw(:task_has_failed) }
|
3
4
|
watch(%r{^test/.+_test\.rb$})
|
4
5
|
watch('test/test_helper.rb') { "test/one_apm" }
|
5
6
|
watch('test/agent_helper.rb') { "test/one_apm" }
|
@@ -13,9 +13,6 @@ module OneApm
|
|
13
13
|
data = nil
|
14
14
|
begin
|
15
15
|
data = @marshaller.dump(payload, options)
|
16
|
-
if method != :connect
|
17
|
-
data = data.gsub(/(Controller|HttpDispatcher)/, "WebTransaction")
|
18
|
-
end
|
19
16
|
rescue StandardError, SystemStackError => e
|
20
17
|
handle_serialization_error(method, e)
|
21
18
|
end
|
@@ -766,6 +766,13 @@ module OneApm
|
|
766
766
|
:type => Boolean,
|
767
767
|
:description => 'Enable or disable HTTPS instrumentation by JavaScript agent on HTTP pages.'
|
768
768
|
},
|
769
|
+
:'browser_monitoring.whitelist_ips' => {
|
770
|
+
:default => '',
|
771
|
+
:allow_nil => true,
|
772
|
+
:public => true,
|
773
|
+
:type => String,
|
774
|
+
:description => 'Filter IPs which can be inerted JavaScript agent on HTTP pages.'
|
775
|
+
},
|
769
776
|
:'browser_monitoring.is_js_text' => {
|
770
777
|
:default => false,
|
771
778
|
:public => true,
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
require 'rack'
|
4
|
+
require 'ipaddr'
|
4
5
|
require 'one_apm/rack/middleware_base'
|
5
6
|
require 'one_apm/rack/middleware_wrapper'
|
6
7
|
|
@@ -9,6 +10,7 @@ module OneApm::Rack
|
|
9
10
|
|
10
11
|
SCAN_LIMIT = 50_000
|
11
12
|
ALREADY_INSTRUMENTED_KEY = "oneapm.browser_monitoring_already_instrumented"
|
13
|
+
REMOTE_IP = "action_dispatch.remote_ip"
|
12
14
|
|
13
15
|
CHARSET_RE = /<\s*meta[^>]+charset\s*=[^>]*>/im.freeze
|
14
16
|
X_UA_COMPATIBLE_RE = /<\s*meta[^>]+http-equiv\s*=\s*['"]x-ua-compatible['"][^>]*>/im.freeze
|
@@ -38,7 +40,8 @@ module OneApm::Rack
|
|
38
40
|
!env[ALREADY_INSTRUMENTED_KEY] &&
|
39
41
|
is_html?(headers) &&
|
40
42
|
!is_attachment?(headers) &&
|
41
|
-
!is_streaming?(env)
|
43
|
+
!is_streaming?(env) &&
|
44
|
+
ip_valid?(env)
|
42
45
|
end
|
43
46
|
|
44
47
|
def is_html?(headers)
|
@@ -54,6 +57,28 @@ module OneApm::Rack
|
|
54
57
|
env['action_controller.instance'].class.included_modules.include?(ActionController::Live)
|
55
58
|
end
|
56
59
|
|
60
|
+
def ip_valid?(env)
|
61
|
+
whitelist_ips = OneApm::Manager.config[:'browser_monitoring.whitelist_ips']
|
62
|
+
return true if whitelist_ips.empty? || env[REMOTE_IP].to_s.empty?
|
63
|
+
OneApm::Manager.logger.debug "Remote IP: #{env[REMOTE_IP]}"
|
64
|
+
begin
|
65
|
+
client = IPAddr.new(env[REMOTE_IP].to_s).to_i
|
66
|
+
whitelist_ips.split(",").any? do |ip|
|
67
|
+
low_ip, high_ip = ip.split("-").map(&:strip)
|
68
|
+
low = IPAddr.new(low_ip).to_i
|
69
|
+
if high_ip
|
70
|
+
high = IPAddr.new(high_ip).to_i
|
71
|
+
(low..high) === client
|
72
|
+
else
|
73
|
+
low == client
|
74
|
+
end
|
75
|
+
end
|
76
|
+
rescue => e
|
77
|
+
OneApm::Manager.logger.error "Configuration for browser_monitoring.whitelist_ips has problems:#{whitelist_ips}"
|
78
|
+
true
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
57
82
|
def autoinstrument_source(response, headers, js_to_inject)
|
58
83
|
source = gather_source(response)
|
59
84
|
close_old_response(response)
|
@@ -81,7 +81,7 @@ module OneApm
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def nested_transaction_name(name)
|
84
|
-
if name.start_with?(Transaction::
|
84
|
+
if name.start_with?(Transaction::WEB_TRANSACTION_PREFIX) || name.start_with?(Transaction::OTHER_TRANSACTION_PREFIX)
|
85
85
|
"#{Transaction::SUBTRANSACTION_PREFIX}#{name}"
|
86
86
|
else
|
87
87
|
name
|
@@ -7,14 +7,15 @@ module OneApm
|
|
7
7
|
CONTROLLER_PREFIX = 'Controller/'.freeze
|
8
8
|
MIDDLEWARE_PREFIX = 'Middleware/Rack/'.freeze
|
9
9
|
TASK_PREFIX = 'OtherTransaction/Background/'.freeze
|
10
|
-
RACK_PREFIX = '
|
11
|
-
SINATRA_PREFIX = '
|
12
|
-
GRAPE_PREFIX = '
|
10
|
+
RACK_PREFIX = 'WebTransaction/Rack/'.freeze
|
11
|
+
SINATRA_PREFIX = 'WebTransaction/Sinatra/'.freeze
|
12
|
+
GRAPE_PREFIX = 'WebTransaction/Grape/'.freeze
|
13
13
|
OTHER_TRANSACTION_PREFIX = 'OtherTransaction/'.freeze
|
14
|
+
WEB_TRANSACTION_PREFIX = 'WebTransaction/'.freeze
|
14
15
|
|
15
16
|
CONTROLLER_MIDDLEWARE_PREFIX = 'Controller/Middleware/Rack'.freeze
|
16
17
|
|
17
|
-
WEB_SUMMARY_METRIC = '
|
18
|
+
WEB_SUMMARY_METRIC = 'WebTransaction'.freeze
|
18
19
|
OTHER_SUMMARY_METRIC = 'OtherTransaction/all'.freeze
|
19
20
|
|
20
21
|
APDEX_S = 'S'.freeze
|
@@ -5,11 +5,20 @@ module OneApm
|
|
5
5
|
module TransactionName
|
6
6
|
|
7
7
|
def overridden_name=(name)
|
8
|
-
@overridden_name =
|
8
|
+
@overridden_name = filter name
|
9
9
|
end
|
10
10
|
|
11
11
|
def default_name=(name)
|
12
|
-
@default_name =
|
12
|
+
@default_name = filter name
|
13
|
+
end
|
14
|
+
|
15
|
+
def frozen_name=(name)
|
16
|
+
@frozen_name = filter name
|
17
|
+
end
|
18
|
+
|
19
|
+
def filter name
|
20
|
+
encoded_name = Helper.correctly_encoded(name)
|
21
|
+
encoded_name ? encoded_name.gsub("Controller", "WebTransaction") : nil
|
13
22
|
end
|
14
23
|
|
15
24
|
def make_transaction_name(name, category = nil)
|
@@ -33,7 +42,7 @@ module OneApm
|
|
33
42
|
end
|
34
43
|
|
35
44
|
def name_last_frame(name)
|
36
|
-
frame_stack.last.name = name
|
45
|
+
frame_stack.last.name = filter(name)
|
37
46
|
end
|
38
47
|
|
39
48
|
def log_frozen_name(name)
|
@@ -56,7 +65,7 @@ module OneApm
|
|
56
65
|
|
57
66
|
def promoted_transaction_name(name)
|
58
67
|
if name.start_with?(Transaction::MIDDLEWARE_PREFIX)
|
59
|
-
"#{Transaction::
|
68
|
+
"#{Transaction::WEB_TRANSACTION_PREFIX}#{name}"
|
60
69
|
else
|
61
70
|
name
|
62
71
|
end
|
@@ -70,9 +79,9 @@ module OneApm
|
|
70
79
|
|
71
80
|
if name.nil?
|
72
81
|
ignore!
|
73
|
-
|
82
|
+
self.frozen_name = best_name
|
74
83
|
else
|
75
|
-
|
84
|
+
self.frozen_name = name
|
76
85
|
end
|
77
86
|
end
|
78
87
|
|
@@ -8,10 +8,10 @@ module OneApm
|
|
8
8
|
def self.prefix_for_category(txn, category = nil)
|
9
9
|
category ||= (txn && txn.category)
|
10
10
|
case category
|
11
|
-
when :controller then ::OneApm::Transaction::
|
11
|
+
when :controller then ::OneApm::Transaction::WEB_TRANSACTION_PREFIX
|
12
12
|
when :task then ::OneApm::Transaction::TASK_PREFIX
|
13
13
|
when :rack then ::OneApm::Transaction::RACK_PREFIX
|
14
|
-
when :uri then ::OneApm::Transaction::
|
14
|
+
when :uri then ::OneApm::Transaction::WEB_TRANSACTION_PREFIX
|
15
15
|
when :sinatra then ::OneApm::Transaction::SINATRA_PREFIX
|
16
16
|
when :middleware then ::OneApm::Transaction::MIDDLEWARE_PREFIX
|
17
17
|
when :grape then ::OneApm::Transaction::GRAPE_PREFIX
|
data/lib/one_apm/version.rb
CHANGED
data/oneapm_rpm.gemspec
CHANGED
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.add_development_dependency 'minitest', '~> 4.7'
|
30
30
|
s.add_development_dependency 'minitest-ci', '= 2.4.0'
|
31
31
|
s.add_development_dependency 'minitest-focus', '~> 1.1'
|
32
|
+
s.add_development_dependency 'minitest-reporters', '0.14.24'
|
32
33
|
s.add_development_dependency 'simplecov', '= 0.10.0'
|
33
34
|
s.add_development_dependency 'mocha', '~> 0.13.0'
|
34
35
|
s.add_development_dependency 'rails', '~> 3.2'
|
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.2.
|
4
|
+
version: 1.2.2.rc
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- oneapm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest-reporters
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.14.24
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.14.24
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: simplecov
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|