raygun-apm 1.0.64-x86-mingw32 → 1.0.72-x86-mingw32
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/bin/{diagnostics → raygun-diagnostics} +1 -2
- data/lib/raygun/2.5/raygun_ext.so +0 -0
- data/lib/raygun/2.6/raygun_ext.so +0 -0
- data/lib/raygun/2.7/raygun_ext.so +0 -0
- data/lib/raygun/apm.rb +6 -4
- data/lib/raygun/apm/blacklist.rb +10 -0
- data/lib/raygun/apm/config.rb +15 -6
- data/lib/raygun/apm/diagnostics.rb +1 -1
- data/lib/raygun/apm/event.rb +10 -0
- data/lib/raygun/apm/hooks/internals.rb +22 -1
- data/lib/raygun/apm/hooks/mongodb.rb +45 -0
- data/lib/raygun/apm/tracer.rb +10 -7
- data/lib/raygun/apm/version.rb +1 -1
- data/raygun-apm.gemspec +2 -1
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0eb46634a2515d6d73291997494024e5cab8baa433c332b4f26662e5666646e
|
4
|
+
data.tar.gz: 01d74285ab240faf370c44835800bccffe344589b7a0368230955889f663388c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6d67e2cf6cef1d1b18267a289962b7c68ae10daa9ff267379bbcc7f7a531bf05fa60edc772f0841b87e9d36c7c54d868ffb9014241c13e49606485bcb40a217
|
7
|
+
data.tar.gz: bf67a4052680109501b102966af917d4f94ec924048d87d69cc6812367a8aed80fc8908ac0c6aef1cd2dd872a52c139074b8315cadc0d0b61c398fd7dfc1e0fd
|
Binary file
|
Binary file
|
Binary file
|
data/lib/raygun/apm.rb
CHANGED
@@ -18,8 +18,10 @@ require "raygun/apm/event"
|
|
18
18
|
require "raygun/apm/hooks/internals"
|
19
19
|
require "raygun/apm/hooks/net_http"
|
20
20
|
# conditionally required - may not be bundled
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
conditional_hooks = %w(httpclient excon mongodb)
|
22
|
+
conditional_hooks.each do |hook|
|
23
|
+
begin
|
24
|
+
require "raygun/apm/hooks/#{hook}"
|
25
|
+
rescue LoadError
|
26
|
+
end
|
25
27
|
end
|
data/lib/raygun/apm/blacklist.rb
CHANGED
@@ -66,6 +66,10 @@ module Raygun
|
|
66
66
|
Method#
|
67
67
|
Module#
|
68
68
|
Mutex#
|
69
|
+
+Thread::Mutex#synchronize
|
70
|
+
+Thread::Mutex#lock
|
71
|
+
+Thread::Mutex#unlock
|
72
|
+
+Thread::Mutex#sleep
|
69
73
|
NameError#
|
70
74
|
NilClass#
|
71
75
|
NoMemoryError#
|
@@ -154,6 +158,8 @@ module Raygun
|
|
154
158
|
FileUtils::
|
155
159
|
TempFile#
|
156
160
|
TempFile::
|
161
|
+
Logger#
|
162
|
+
Logger::
|
157
163
|
}
|
158
164
|
|
159
165
|
INTERNALS = %w{
|
@@ -246,6 +252,10 @@ module Raygun
|
|
246
252
|
}
|
247
253
|
|
248
254
|
QUERIES = %w{
|
255
|
+
#mongodb
|
256
|
+
Mongo
|
257
|
+
BSON
|
258
|
+
+Mongo::Operation::Executable#do_execute
|
249
259
|
#redis
|
250
260
|
Redis
|
251
261
|
+Redis#auth
|
data/lib/raygun/apm/config.rb
CHANGED
@@ -18,6 +18,9 @@ module Raygun
|
|
18
18
|
"production" => Tracer::ENV_PRODUCTION
|
19
19
|
}
|
20
20
|
|
21
|
+
DEFAULT_BLACKLIST_PATH_UNIX = "/usr/share/Raygun/Blacklist"
|
22
|
+
DEFAULT_BLACKLIST_PATH_WINDOWS = "C:\\ProgramData\\Raygun\\Blacklist"
|
23
|
+
|
21
24
|
attr_accessor :env
|
22
25
|
def initialize(env=ENV)
|
23
26
|
@env = env
|
@@ -62,19 +65,18 @@ module Raygun
|
|
62
65
|
config_var 'PROTON_FILE_IPC_FOLDER', as: String
|
63
66
|
config_var 'PROTON_USE_MULTICAST', as: String, default: 'False'
|
64
67
|
config_var 'PROTON_BATCH_IDLE_COUNTER', as: Integer, default: 500
|
68
|
+
## New - Ruby profiler
|
69
|
+
config_var 'PROTON_UDP_HOST', as: String, default: UDP_SINK_HOST
|
70
|
+
config_var 'PROTON_UDP_PORT', as: Integer, default: UDP_SINK_PORT
|
65
71
|
|
66
|
-
def
|
72
|
+
def proton_udp_host
|
67
73
|
if proton_use_multicast == 'True'
|
68
74
|
UDP_SINK_MULTICAST_HOST
|
69
75
|
else
|
70
|
-
UDP_SINK_HOST
|
76
|
+
env['PROTON_UDP_HOST'] ? env['PROTON_UDP_HOST'].to_s : UDP_SINK_HOST
|
71
77
|
end
|
72
78
|
end
|
73
79
|
|
74
|
-
def udp_port
|
75
|
-
UDP_SINK_PORT
|
76
|
-
end
|
77
|
-
|
78
80
|
def loglevel
|
79
81
|
LOGLEVELS[proton_debug_loglevel] || raise(ArgumentError, "invalid log level")
|
80
82
|
end
|
@@ -83,6 +85,13 @@ module Raygun
|
|
83
85
|
environment = env['RACK_ENV'] || env['RAILS_ENV'] || 'production'
|
84
86
|
ENVIRONMENTS[environment] || Tracer::ENV_PRODUCTION
|
85
87
|
end
|
88
|
+
|
89
|
+
# Prefer what is set by PROTON_USER_OVERRIDES_FILE env
|
90
|
+
def blacklist_file
|
91
|
+
return proton_user_overrides_file if proton_user_overrides_file
|
92
|
+
path = Gem.win_platform? ? DEFAULT_BLACKLIST_PATH_WINDOWS : DEFAULT_BLACKLIST_PATH_UNIX
|
93
|
+
"#{File.join(path, proton_api_key)}.txt"
|
94
|
+
end
|
86
95
|
end
|
87
96
|
end
|
88
97
|
end
|
@@ -5,7 +5,7 @@ module Raygun
|
|
5
5
|
module Apm
|
6
6
|
class Diagnostics
|
7
7
|
AGENT_STATE_DOWN = "\nThe Raygun APM Agent appears to not be running on the current host.\nIf not already installed, please consult https://raygun.com/documentation/product-guides/apm/agent/downloads/\nOtherwise refer to https://raygun.com/documentation/product-guides/apm/agent/installation/ for starting the Agent."
|
8
|
-
AGENT_STATE_UNKNOWN = "\
|
8
|
+
AGENT_STATE_UNKNOWN = "\nThe Raygun APM Agent is reachable, but Unable to determine the state of the Agent at the moment."
|
9
9
|
AGENT_STATE_UP_MISCONFIGURED = "\nThe Raygun APM Agent is running, but misconfigured.\nThe API Key needs to be set through the Raygun_ApiKey environment variable.\nThe API key can be found under 'Application Settings' in the Raygun UI"
|
10
10
|
AGENT_STATE_UP_CONFIGURED = "\nThe Raygun APM Agent is configured properly!"
|
11
11
|
AGENT_MINIMUM_VERSION_NOT_MET = "\nVersion #{Raygun::Apm::VERSION} of the Raygun APM Profiler requires a minimum Agent version #{Raygun::Apm::MINIMUM_AGENT_VERSION}\nPlease download the latest Agent from https://raygun.com/documentation/product-guides/apm/agent/downloads/"
|
data/lib/raygun/apm/event.rb
CHANGED
@@ -4,6 +4,11 @@ module Raygun
|
|
4
4
|
def inspect
|
5
5
|
"#<#{self.class.name}:#{self.object_id}> length:#{self.length} pid:#{self[:pid]} tid:#{self[:tid]} timestamp:#{self[:timestamp]}"
|
6
6
|
end
|
7
|
+
class ExceptionThrown < Event
|
8
|
+
def inspect
|
9
|
+
super + " class:#{self[:class_name]}"
|
10
|
+
end
|
11
|
+
end
|
7
12
|
class ThreadStarted < Event
|
8
13
|
def inspect
|
9
14
|
super + " parent_tid:#{self[:parent_tid]}"
|
@@ -29,6 +34,11 @@ module Raygun
|
|
29
34
|
super + " url:#{self[:url]} verb:#{self[:verb]} status:#{self[:status]} duration:#{self[:duration]}"
|
30
35
|
end
|
31
36
|
end
|
37
|
+
class Sql < Event
|
38
|
+
def inspect
|
39
|
+
super + " provider:#{self[:provider]} host:#{self[:host]} query:#{self[:query]} database:#{self[:database]} duration:#{self[:duration]}"
|
40
|
+
end
|
41
|
+
end
|
32
42
|
class BeginTransaction < Event
|
33
43
|
def inspect
|
34
44
|
super + " api_key:#{self[:api_key]} technology_type:#{self[:technology_type]} process_type:#{self[:process_type]}"
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'thread'
|
2
|
+
|
1
3
|
module Raygun
|
2
4
|
module Apm
|
3
5
|
module Hooks
|
@@ -64,6 +66,24 @@ module Raygun
|
|
64
66
|
super
|
65
67
|
end
|
66
68
|
end
|
69
|
+
|
70
|
+
module Mutex
|
71
|
+
def synchronize(*args)
|
72
|
+
super
|
73
|
+
end
|
74
|
+
|
75
|
+
def lock(*args)
|
76
|
+
super
|
77
|
+
end
|
78
|
+
|
79
|
+
def unlock(*args)
|
80
|
+
super
|
81
|
+
end
|
82
|
+
|
83
|
+
def sleep(*args)
|
84
|
+
super
|
85
|
+
end
|
86
|
+
end
|
67
87
|
end
|
68
88
|
end
|
69
89
|
end
|
@@ -71,4 +91,5 @@ end
|
|
71
91
|
Object.prepend Raygun::Apm::Hooks::Object
|
72
92
|
IO.prepend Raygun::Apm::Hooks::IO
|
73
93
|
Random.prepend Raygun::Apm::Hooks::Random
|
74
|
-
Signal.prepend Raygun::Apm::Hooks::Signal
|
94
|
+
Signal.prepend Raygun::Apm::Hooks::Signal
|
95
|
+
Thread::Mutex.prepend Raygun::Apm::Hooks::Mutex
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'mongo'
|
2
|
+
|
3
|
+
module Raygun
|
4
|
+
module Apm
|
5
|
+
module Hooks
|
6
|
+
module MongoDB
|
7
|
+
def do_execute(connection, client, options = {})
|
8
|
+
result = nil
|
9
|
+
if tracer = Raygun::Apm::Tracer.instance
|
10
|
+
started = tracer.now
|
11
|
+
result = super
|
12
|
+
ended = tracer.now
|
13
|
+
event = raygun_apm_sql_event
|
14
|
+
event[:pid] = Process.pid
|
15
|
+
event[:query] = raygun_format_query(connection)
|
16
|
+
event[:provider] = "mongodb"
|
17
|
+
event[:host] = connection.address.to_s
|
18
|
+
event[:database] = client.database.name
|
19
|
+
event[:duration] = ended - started
|
20
|
+
event[:timestamp] = started
|
21
|
+
event[:tid] = tracer.get_thread_id(Thread.current)
|
22
|
+
tracer.emit(event)
|
23
|
+
result
|
24
|
+
else
|
25
|
+
super
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def raygun_format_query(connection)
|
31
|
+
payload = message(connection).payload
|
32
|
+
return "#{payload["database_name"]}.#{payload["command_name"]} #{payload["command"]}}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def raygun_apm_sql_event
|
36
|
+
@_raygun_apm_sql_event ||= Raygun::Apm::Event::Sql.new
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
Mongo::Operation.constants.each do |operation|
|
44
|
+
Mongo::Operation.const_get(operation).prepend(Raygun::Apm::Hooks::MongoDB) rescue nil
|
45
|
+
end
|
data/lib/raygun/apm/tracer.rb
CHANGED
@@ -36,8 +36,8 @@ module Raygun
|
|
36
36
|
sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_SNDBUF, Tracer::BATCH_PACKET_SIZE)
|
37
37
|
self.udp_sink(
|
38
38
|
socket: sock,
|
39
|
-
host: config.
|
40
|
-
port: config.
|
39
|
+
host: config.proton_udp_host,
|
40
|
+
port: config.proton_udp_port,
|
41
41
|
receive_buffer_size: sock.getsockopt(Socket::SOL_SOCKET, Socket::SO_RCVBUF).int
|
42
42
|
)
|
43
43
|
# Any fails here is kamikaze for the tracer
|
@@ -57,20 +57,23 @@ module Raygun
|
|
57
57
|
|
58
58
|
def initialize_blacklist
|
59
59
|
@blacklist_parser = Raygun::Apm::Blacklist::Parser.new(self)
|
60
|
-
|
61
|
-
|
60
|
+
file = @config.blacklist_file
|
61
|
+
@blacklist = if file && File.exist?(file)
|
62
|
+
File.readlines(file)
|
62
63
|
else
|
63
64
|
[]
|
64
65
|
end
|
65
|
-
# From file
|
66
|
-
@blacklist_parser.add_filters @blacklist
|
67
66
|
# Defaults
|
68
67
|
@blacklist_parser.add_filters Raygun::Apm::Blacklist.resolve_entries
|
68
|
+
# From file
|
69
|
+
@blacklist_parser.add_filters @blacklist
|
69
70
|
end
|
70
71
|
|
71
72
|
def register_known_library_paths
|
72
73
|
if defined?(Bundler)
|
73
|
-
|
74
|
+
libs = Bundler.load.specs.map(&:full_gem_path).sort << RbConfig::CONFIG['rubylibdir']
|
75
|
+
libs.delete(Dir.getwd)
|
76
|
+
self.register_libraries libs
|
74
77
|
else
|
75
78
|
self.register_libraries [RbConfig::CONFIG['rubylibdir']]
|
76
79
|
end
|
data/lib/raygun/apm/version.rb
CHANGED
data/raygun-apm.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
|
15
15
|
spec.files = Dir['README.rdoc', 'raygun-apm.gemspec', 'lib/**/*', 'bin/**/*'].reject { |f| f.match(/raygun_ext\./) }
|
16
16
|
spec.files += Dir['lib/raygun/**/{2}*/raygun_ext.*']
|
17
|
-
spec.bindir = "
|
17
|
+
spec.bindir = "bin"
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ["lib", "ext"]
|
20
20
|
|
@@ -36,4 +36,5 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_development_dependency "excon", "~> 0.73.0"
|
37
37
|
spec.add_development_dependency "httparty", "~> 0.18.0"
|
38
38
|
spec.add_development_dependency "httpclient", "~> 2.8.3"
|
39
|
+
spec.add_development_dependency "mongoid", "~> 7.1.2"
|
39
40
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raygun-apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.72
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- Raygun
|
8
8
|
- Erkki Eilonen
|
9
9
|
autorequire:
|
10
|
-
bindir:
|
10
|
+
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: debase-ruby_core_source
|
@@ -193,6 +193,20 @@ dependencies:
|
|
193
193
|
- - "~>"
|
194
194
|
- !ruby/object:Gem::Version
|
195
195
|
version: 2.8.3
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
name: mongoid
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - "~>"
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: 7.1.2
|
203
|
+
type: :development
|
204
|
+
prerelease: false
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - "~>"
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: 7.1.2
|
196
210
|
description:
|
197
211
|
email:
|
198
212
|
- support@raygun.com
|
@@ -203,7 +217,7 @@ extra_rdoc_files: []
|
|
203
217
|
files:
|
204
218
|
- README.rdoc
|
205
219
|
- bin/console
|
206
|
-
- bin/diagnostics
|
220
|
+
- bin/raygun-diagnostics
|
207
221
|
- bin/setup
|
208
222
|
- ext/raygun/extconf.rb
|
209
223
|
- lib/raygun/2.5/raygun_ext.so
|
@@ -219,6 +233,7 @@ files:
|
|
219
233
|
- lib/raygun/apm/hooks/excon.rb
|
220
234
|
- lib/raygun/apm/hooks/httpclient.rb
|
221
235
|
- lib/raygun/apm/hooks/internals.rb
|
236
|
+
- lib/raygun/apm/hooks/mongodb.rb
|
222
237
|
- lib/raygun/apm/hooks/net_http.rb
|
223
238
|
- lib/raygun/apm/hooks/redis.rb
|
224
239
|
- lib/raygun/apm/tracer.rb
|