oneapm_rpm 1.2.1 → 1.2.2.rc
Sign up to get free protection for your applications and to get access to all the features.
- 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
|