oboe 1.4.2.2 → 2.1.1
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.
- data/.gitignore +4 -0
- data/Gemfile +30 -0
- data/Gemfile.lock +103 -0
- data/Guardfile +24 -0
- data/README.md +36 -0
- data/Rakefile +12 -0
- data/ext/oboe_metal/extconf.rb +12 -4
- data/ext/oboe_metal/tests/test.rb +7 -0
- data/get_version.rb +5 -0
- data/lib/joboe_metal.rb +45 -0
- data/lib/oboe.rb +16 -7
- data/lib/oboe/api/logging.rb +1 -1
- data/lib/oboe/api/tracing.rb +1 -1
- data/lib/oboe/api/util.rb +1 -1
- data/lib/oboe/config.rb +0 -47
- data/lib/oboe/frameworks/rails.rb +9 -7
- data/lib/oboe/frameworks/rails/inst/action_controller.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/action_view.rb +8 -8
- data/lib/oboe/frameworks/rails/inst/active_record.rb +18 -18
- data/lib/oboe/inst/cassandra.rb +3 -3
- data/lib/oboe/inst/dalli.rb +2 -2
- data/lib/oboe/inst/http.rb +1 -1
- data/lib/oboe/inst/memcache.rb +4 -4
- data/lib/oboe/inst/memcached.rb +2 -2
- data/lib/oboe/inst/mongo.rb +1 -1
- data/lib/oboe/inst/moped.rb +5 -5
- data/lib/oboe/inst/resque.rb +4 -4
- data/lib/oboe/instrumentation.rb +1 -1
- data/lib/oboe/loading.rb +8 -3
- data/lib/oboe/logger.rb +39 -0
- data/lib/oboe/version.rb +4 -4
- data/lib/oboe_metal.rb +67 -27
- data/oboe.gemspec +19 -0
- data/oboe_fu.gemspec +13 -0
- data/release.sh +65 -0
- data/spec/instrumentation/cassandra_spec.rb +18 -0
- data/spec/instrumentation/dalli_spec.rb +14 -0
- data/spec/instrumentation/http_spec.rb +14 -0
- data/spec/instrumentation/memcache_spec.rb +19 -0
- data/spec/instrumentation/memcached_spec.rb +22 -0
- data/spec/instrumentation/mongo_spec.rb +29 -0
- data/spec/instrumentation/moped_spec.rb +41 -0
- data/spec/instrumentation/resque_spec.rb +18 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/config_spec.rb +27 -0
- data/spec/support/oboe_spec.rb +4 -0
- metadata +100 -41
data/.gitignore
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Import dependencies from oboe.gemspec
|
4
|
+
gemspec :name => 'oboe'
|
5
|
+
|
6
|
+
gem 'rake'
|
7
|
+
|
8
|
+
group :development do
|
9
|
+
gem 'guard'
|
10
|
+
gem 'guard-rspec'
|
11
|
+
|
12
|
+
gem 'rb-inotify', :require => false
|
13
|
+
gem 'rb-fsevent', :require => false
|
14
|
+
gem 'rb-fchange', :require => false
|
15
|
+
end
|
16
|
+
|
17
|
+
group :test do
|
18
|
+
gem 'rspec'
|
19
|
+
|
20
|
+
# Instrumented gems
|
21
|
+
gem 'dalli'
|
22
|
+
gem 'memcache-client'
|
23
|
+
gem 'memcached' if (RUBY_VERSION =~ /^1./) == 0
|
24
|
+
gem 'cassandra'
|
25
|
+
gem 'mongo'
|
26
|
+
gem 'bson_ext' # For Mongo, Yours Truly
|
27
|
+
gem 'moped'
|
28
|
+
gem 'resque'
|
29
|
+
end
|
30
|
+
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
oboe (2.1.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
bson (1.8.2)
|
10
|
+
bson_ext (1.8.2)
|
11
|
+
bson (~> 1.8.2)
|
12
|
+
cassandra (0.17.0)
|
13
|
+
json
|
14
|
+
rake
|
15
|
+
simple_uuid (~> 0.2.0)
|
16
|
+
thrift_client (>= 0.7.0, < 0.9)
|
17
|
+
coderay (1.0.9)
|
18
|
+
dalli (2.6.2)
|
19
|
+
diff-lcs (1.1.3)
|
20
|
+
ffi (1.4.0)
|
21
|
+
guard (1.6.2)
|
22
|
+
listen (>= 0.6.0)
|
23
|
+
lumberjack (>= 1.0.2)
|
24
|
+
pry (>= 0.9.10)
|
25
|
+
terminal-table (>= 1.4.3)
|
26
|
+
thor (>= 0.14.6)
|
27
|
+
guard-rspec (2.4.1)
|
28
|
+
guard (>= 1.1)
|
29
|
+
rspec (~> 2.11)
|
30
|
+
json (1.7.7)
|
31
|
+
listen (0.7.3)
|
32
|
+
lumberjack (1.0.2)
|
33
|
+
memcache-client (1.8.5)
|
34
|
+
memcached (1.5.0)
|
35
|
+
method_source (0.8.1)
|
36
|
+
mongo (1.8.2)
|
37
|
+
bson (~> 1.8.2)
|
38
|
+
moped (1.4.2)
|
39
|
+
multi_json (1.6.1)
|
40
|
+
pry (0.9.12)
|
41
|
+
coderay (~> 1.0.5)
|
42
|
+
method_source (~> 0.8)
|
43
|
+
slop (~> 3.4)
|
44
|
+
rack (1.4.5)
|
45
|
+
rack-protection (1.3.2)
|
46
|
+
rack
|
47
|
+
rake (10.0.3)
|
48
|
+
rb-fchange (0.0.6)
|
49
|
+
ffi
|
50
|
+
rb-fsevent (0.9.3)
|
51
|
+
rb-inotify (0.9.0)
|
52
|
+
ffi (>= 0.5.0)
|
53
|
+
redis (3.0.2)
|
54
|
+
redis-namespace (1.2.1)
|
55
|
+
redis (~> 3.0.0)
|
56
|
+
resque (1.23.0)
|
57
|
+
multi_json (~> 1.0)
|
58
|
+
redis-namespace (~> 1.0)
|
59
|
+
sinatra (>= 0.9.2)
|
60
|
+
vegas (~> 0.1.2)
|
61
|
+
rspec (2.11.0)
|
62
|
+
rspec-core (~> 2.11.0)
|
63
|
+
rspec-expectations (~> 2.11.0)
|
64
|
+
rspec-mocks (~> 2.11.0)
|
65
|
+
rspec-core (2.11.1)
|
66
|
+
rspec-expectations (2.11.3)
|
67
|
+
diff-lcs (~> 1.1.3)
|
68
|
+
rspec-mocks (2.11.2)
|
69
|
+
simple_uuid (0.2.0)
|
70
|
+
sinatra (1.3.4)
|
71
|
+
rack (~> 1.4)
|
72
|
+
rack-protection (~> 1.3)
|
73
|
+
tilt (~> 1.3, >= 1.3.3)
|
74
|
+
slop (3.4.3)
|
75
|
+
terminal-table (1.4.5)
|
76
|
+
thor (0.17.0)
|
77
|
+
thrift (0.8.0)
|
78
|
+
thrift_client (0.8.3)
|
79
|
+
thrift (~> 0.8.0)
|
80
|
+
tilt (1.3.3)
|
81
|
+
vegas (0.1.11)
|
82
|
+
rack (>= 1.0.0)
|
83
|
+
|
84
|
+
PLATFORMS
|
85
|
+
ruby
|
86
|
+
|
87
|
+
DEPENDENCIES
|
88
|
+
bson_ext
|
89
|
+
cassandra
|
90
|
+
dalli
|
91
|
+
guard
|
92
|
+
guard-rspec
|
93
|
+
memcache-client
|
94
|
+
memcached
|
95
|
+
mongo
|
96
|
+
moped
|
97
|
+
oboe!
|
98
|
+
rake
|
99
|
+
rb-fchange
|
100
|
+
rb-fsevent
|
101
|
+
rb-inotify
|
102
|
+
resque
|
103
|
+
rspec
|
data/Guardfile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard 'rspec' do
|
5
|
+
watch(%r{^spec/.+_spec\.rb$})
|
6
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
|
+
watch('spec/spec_helper.rb') { "spec" }
|
8
|
+
|
9
|
+
# Rails example
|
10
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
11
|
+
watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
12
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
13
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
14
|
+
watch('config/routes.rb') { "spec/routing" }
|
15
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
16
|
+
|
17
|
+
# Capybara features specs
|
18
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
19
|
+
|
20
|
+
# Turnip features and steps
|
21
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
22
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
23
|
+
end
|
24
|
+
|
data/README.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Tracelytics Ruby (and Ruby Frameworks) Instrumentation
|
2
|
+
|
3
|
+
```oboe``` provides instrumentation for [Ruby](http://www.ruby-lang.org/en/) and the [Rails framework](http://rubyonrails.org/), as well as other
|
4
|
+
common components used to build rails applications.
|
5
|
+
|
6
|
+
## Installing
|
7
|
+
|
8
|
+
See the [Ruby Knowedge Base article](http://support.tracelytics.com/kb/instrumenting-your-app/instrumenting-ruby-apps)
|
9
|
+
for information on how to install. Release notes can be found [here](http://support.tracelytics.com/kb/instrumenting-your-app/ruby-instrumentation-release-notes)
|
10
|
+
|
11
|
+
## Supported Technologies
|
12
|
+
|
13
|
+
Check the [support matrix](https://github.com/tracelytics/oboe-ruby/wiki/Support-Matrix) for which versions of Ruby, Rails and technologies are supported.
|
14
|
+
|
15
|
+
## Tips
|
16
|
+
|
17
|
+
General tips using, installing and debugging the oboe gem can be found [here](https://github.com/tracelytics/oboe-ruby/wiki/Ruby-Oboe-Tips).
|
18
|
+
|
19
|
+
## liboboe Linking Notes
|
20
|
+
|
21
|
+
Build instructions
|
22
|
+
|
23
|
+
- Requires: liboboe development headers, available from the
|
24
|
+
liboboe-dev (Ubuntu) and liboboe-devel (Red Hat) packages.
|
25
|
+
|
26
|
+
Build and install a gem the normal way:
|
27
|
+
|
28
|
+
gem build oboe.gemspec
|
29
|
+
gem install oboe-VERSION.gem
|
30
|
+
|
31
|
+
Compile a binary gem from a regular gem, using gem-compile [1]:
|
32
|
+
|
33
|
+
sudo gem install gem-compile
|
34
|
+
gem compile oboe-VERSION.gem
|
35
|
+
|
36
|
+
[1] https://github.com/frsyuki/gem-compile
|
data/Rakefile
ADDED
data/ext/oboe_metal/extconf.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
# Copyright (c) 2012 by Tracelytics, Inc.
|
2
2
|
# All rights reserved.
|
3
|
-
|
4
3
|
require 'mkmf'
|
5
4
|
require 'rbconfig'
|
6
5
|
|
7
|
-
dir_config('oboe')
|
8
|
-
|
9
6
|
# Check if we're running in JRuby
|
10
7
|
if RbConfig::CONFIG.has_key?('arch')
|
11
8
|
# nil meaning java string not found
|
@@ -14,7 +11,17 @@ else
|
|
14
11
|
jruby = false
|
15
12
|
end
|
16
13
|
|
17
|
-
|
14
|
+
dir_config('oboe')
|
15
|
+
|
16
|
+
if jruby or ENV.has_key?('TRACEVIEW_URL')
|
17
|
+
# Build the noop extension under JRuby and Heroku.
|
18
|
+
# The oboe-heroku gem builds it's own c extension which links to
|
19
|
+
# libs specific to a Heroku dyno
|
20
|
+
# FIXME: For JRuby we need to remove the c extension entirely
|
21
|
+
create_makefile('oboe_noop', 'noop')
|
22
|
+
|
23
|
+
elsif have_library('oboe')
|
24
|
+
|
18
25
|
$libs = append_library($libs, "oboe")
|
19
26
|
$libs = append_library($libs, "stdc++")
|
20
27
|
|
@@ -24,6 +31,7 @@ if not jruby and have_library('oboe')
|
|
24
31
|
|
25
32
|
cpp_command('g++') if RUBY_VERSION < '1.9'
|
26
33
|
create_makefile('oboe_metal', 'src')
|
34
|
+
|
27
35
|
else
|
28
36
|
$stderr.puts "Error: Could not find the base liboboe libraries. No tracing will occur."
|
29
37
|
create_makefile('oboe_noop', 'noop')
|
data/get_version.rb
ADDED
data/lib/joboe_metal.rb
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
module Oboe_metal
|
5
5
|
include_package 'com.tracelytics.joboe'
|
6
6
|
import 'com.tracelytics.joboe'
|
7
|
+
include_package 'com.tracelytics.joboe.SettingsReader'
|
8
|
+
import 'com.tracelytics.joboe.SettingsReader'
|
7
9
|
include_package 'com.tracelytics.joboe.Context'
|
8
10
|
import 'com.tracelytics.joboe.Context'
|
9
11
|
include_package 'com.tracelytics.joboe.Event'
|
@@ -77,7 +79,50 @@ end
|
|
77
79
|
module Oboe
|
78
80
|
include Oboe_metal
|
79
81
|
|
82
|
+
def self.always?
|
83
|
+
Oboe::Config[:tracing_mode].to_s == "always"
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.continue?
|
87
|
+
Oboe::Context.isValid and not Oboe.never?
|
88
|
+
end
|
89
|
+
|
80
90
|
def self.log(layer, label, options = {})
|
81
91
|
Context.log(layer, label, options = options)
|
82
92
|
end
|
93
|
+
|
94
|
+
def self.never?
|
95
|
+
Oboe::Config[:tracing_mode].to_s == "never"
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.now?
|
99
|
+
Oboe::Context.isValid and not Oboe.never?
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.passthrough?
|
103
|
+
["always", "through"].include?(Oboe::Config[:tracing_mode])
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.sample?
|
107
|
+
Java::ComTracelyticsJoboeSettingsReader.shouldTraceRequest('', '')
|
108
|
+
end
|
109
|
+
|
110
|
+
def self.start?
|
111
|
+
not Oboe::Context.isValid and Oboe.always?
|
112
|
+
end
|
113
|
+
|
114
|
+
def self.through?
|
115
|
+
Oboe::Config[:tracing_mode] == "through"
|
116
|
+
end
|
117
|
+
|
118
|
+
def self.tracing?
|
119
|
+
Oboe::Context.isValid and not Oboe.never?
|
120
|
+
end
|
121
|
+
|
122
|
+
def self.reporter
|
123
|
+
if !@reporter
|
124
|
+
@reporter = Oboe::UdpReporter.new(Oboe::Config[:reporter_host])
|
125
|
+
end
|
126
|
+
return @reporter
|
127
|
+
end
|
83
128
|
end
|
data/lib/oboe.rb
CHANGED
@@ -3,13 +3,20 @@
|
|
3
3
|
|
4
4
|
begin
|
5
5
|
require 'rbconfig'
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
require 'logger'
|
7
|
+
|
8
|
+
# If Oboe_metal is already defined then we are in a PaaS environment
|
9
|
+
# with an alternate metal (such as Heroku: see the oboe-heroku gem)
|
10
|
+
unless defined?(Oboe_metal)
|
11
|
+
if RUBY_PLATFORM == 'java'
|
12
|
+
require '/usr/local/tracelytics/tracelyticsagent.jar'
|
13
|
+
require 'joboe_metal'
|
14
|
+
else
|
15
|
+
require 'oboe_metal.so'
|
16
|
+
require 'oboe_metal'
|
17
|
+
end
|
12
18
|
end
|
19
|
+
require 'oboe/logger'
|
13
20
|
require 'oboe/config'
|
14
21
|
require 'oboe/loading'
|
15
22
|
require 'method_profiling'
|
@@ -20,5 +27,7 @@ begin
|
|
20
27
|
require 'oboe/frameworks/rails' if defined?(::Rails)
|
21
28
|
|
22
29
|
rescue LoadError
|
23
|
-
puts "Unsupported Tracelytics environment (no libs). Going No-op."
|
30
|
+
$stderr.puts "Unsupported Tracelytics environment (no libs). Going No-op."
|
31
|
+
rescue Exception => e
|
32
|
+
$stderr.puts "[oboe/error] Problem loading: #{e.inspect}"
|
24
33
|
end
|
data/lib/oboe/api/logging.rb
CHANGED
data/lib/oboe/api/tracing.rb
CHANGED
data/lib/oboe/api/util.rb
CHANGED
data/lib/oboe/config.rb
CHANGED
@@ -2,53 +2,6 @@
|
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
4
|
module Oboe
|
5
|
-
|
6
|
-
def self.always?
|
7
|
-
Oboe::Config[:tracing_mode].to_s == "always"
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.continue?
|
11
|
-
Oboe::Context.isValid and not Oboe.never?
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.log(layer, label, options = {})
|
15
|
-
Context.log(layer, label, options = options)
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.never?
|
19
|
-
Oboe::Config[:tracing_mode].to_s == "never"
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.now?
|
23
|
-
Oboe::Context.isValid and not Oboe.never?
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.passthrough?
|
27
|
-
["always", "through"].include?(Oboe::Config[:tracing_mode])
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.sample?
|
31
|
-
# Note that this the only point in the code that currently does and
|
32
|
-
# should ever read the sample rate. When autopilot is released, modify
|
33
|
-
# the line below and that line only.
|
34
|
-
Oboe::Config[:sample_rate].to_i < rand(1e6)
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.start?
|
38
|
-
not Oboe::Context.isValid and Oboe.always?
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.through?
|
42
|
-
Oboe::Config[:tracing_mode] == "through"
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.tracing?
|
46
|
-
Oboe::Context.isValid and not Oboe.never?
|
47
|
-
end
|
48
|
-
|
49
|
-
############################
|
50
|
-
# Oboe Configuration Module
|
51
|
-
############################
|
52
5
|
module Config
|
53
6
|
@@config = {}
|
54
7
|
|