solarwinds_apm 5.0.0 → 5.1.1.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/workflows/build_and_release_gem.yml +23 -27
  4. data/.github/workflows/build_for_packagecloud.yml +7 -18
  5. data/.github/workflows/docker-images.yml +23 -17
  6. data/.github/workflows/run_cpluplus_tests.yml +1 -1
  7. data/.github/workflows/run_tests.yml +5 -6
  8. data/.github/workflows/scripts/test_install.rb +14 -9
  9. data/.github/workflows/test_on_4_linux.yml +3 -3
  10. data/.gitignore +5 -1
  11. data/.whitesource +22 -0
  12. data/CHANGELOG-appoptics.md +766 -0
  13. data/CHANGELOG.md +9 -753
  14. data/Gemfile +1 -0
  15. data/README.md +3 -3
  16. data/ext/oboe_metal/extconf.rb +5 -5
  17. data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.0.0.0.sha256 +1 -1
  18. data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.0.0.0.sha256 +1 -1
  19. data/ext/oboe_metal/src/README.md +1 -1
  20. data/ext/oboe_metal/src/VERSION +1 -1
  21. data/ext/oboe_metal/src/frames.h +1 -1
  22. data/ext/oboe_metal/src/init_solarwinds_apm.cc +4 -1
  23. data/ext/oboe_metal/src/logging.h +1 -1
  24. data/ext/oboe_metal/src/oboe.h +29 -45
  25. data/ext/oboe_metal/src/oboe_api.cpp +75 -26
  26. data/ext/oboe_metal/src/{oboe_api.hpp → oboe_api.h} +38 -7
  27. data/ext/oboe_metal/src/oboe_swig_wrap.cc +674 -84
  28. data/ext/oboe_metal/src/profiling.cc +1 -1
  29. data/ext/oboe_metal/src/profiling.h +1 -1
  30. data/lib/rails/generators/solarwinds_apm/templates/solarwinds_apm_initializer.rb +1 -21
  31. data/lib/solarwinds_apm/config.rb +9 -0
  32. data/lib/solarwinds_apm/inst/rack.rb +7 -1
  33. data/lib/solarwinds_apm/oboe_init_options.rb +12 -1
  34. data/lib/solarwinds_apm/support/profiling.rb +3 -0
  35. data/lib/solarwinds_apm/support.rb +1 -0
  36. data/lib/solarwinds_apm/version.rb +3 -4
  37. data/lib/solarwinds_apm.rb +1 -1
  38. data/solarwinds_apm.gemspec +6 -6
  39. metadata +13 -9
@@ -13,7 +13,7 @@
13
13
 
14
14
  #include "frames.h"
15
15
  #include "logging.h"
16
- #include "oboe_api.hpp"
16
+ #include "oboe_api.h"
17
17
 
18
18
 
19
19
  #define TIMER_SIG SIGRTMAX // the timer notification signal
@@ -16,7 +16,7 @@
16
16
 
17
17
  #include "frames.h"
18
18
  #include "logging.h"
19
- #include "oboe_api.hpp"
19
+ #include "oboe_api.h"
20
20
 
21
21
  #define BUF_SIZE 2048
22
22
 
@@ -78,27 +78,6 @@ if defined?(SolarWindsAPM::Config)
78
78
  #
79
79
  SolarWindsAPM::Config[:verbose] = false
80
80
 
81
- #
82
- # Turn code profiling on or off
83
- #
84
- # By default profiling is set to :disabled, the other option is :enabled.
85
- # :enabled means that any traced code will also be profiled to get deeper insight
86
- # into the methods called during a trace.
87
- # Profiling in the solarwinds_apm gem is based on the low-overhead, sampling
88
- # profiler implemented in stackprof.
89
- #
90
- SolarWindsAPM::Config[:profiling] = :disabled
91
-
92
- #
93
- # Set the profiling interval (in milliseconds)
94
- #
95
- # The default is 10 milliseconds, which means that the method call stack is
96
- # recorded every 10 milliseconds. Shorter intervals may give better insight,
97
- # but will incur more overhead.
98
- # Minimum: 1, Maximum: 100
99
- #
100
- SolarWindsAPM::Config[:profiling_interval] = 10
101
-
102
81
  #
103
82
  # Turn Tracing on or off
104
83
  #
@@ -295,6 +274,7 @@ if defined?(SolarWindsAPM::Config)
295
274
  #
296
275
  SolarWindsAPM::Config[:ec2_metadata_timeout] = 1000
297
276
 
277
+
298
278
  #############################################
299
279
  ## SETTINGS FOR INDIVIDUAL GEMS/FRAMEWORKS ##
300
280
  #############################################
@@ -146,6 +146,9 @@ module SolarWindsAPM
146
146
  (@@instrumentation+@@ignore).each { |k| @@config[k] = {} }
147
147
  @@config[:transaction_name] = {}
148
148
 
149
+ @@config[:profiling] = :disabled
150
+ @@config[:profiling_interval] = 5
151
+
149
152
  # Always load the template, it has all the keys and defaults defined,
150
153
  # no guarantee of completeness in the user's config file
151
154
  load(File.join(File.dirname(File.dirname(__FILE__)),
@@ -226,7 +229,12 @@ module SolarWindsAPM
226
229
  Regexp.new(SolarWindsAPM::Config[:dnt_regexp], SolarWindsAPM::Config[:dnt_opts] || nil)
227
230
  end
228
231
 
232
+ elsif key == :profiling
233
+ SolarWindsAPM.logger.warn "[solarwinds_apm/config] Profiling feature is currently not available."
234
+ @@config[:profiling] = :disabled
235
+
229
236
  elsif key == :profiling_interval
237
+ SolarWindsAPM.logger.warn "[solarwinds_apm/config] Profiling feature is currently not available. :profiling_interval setting is not configured."
230
238
  if value.is_a?(Integer) && value > 0
231
239
  value = [100, value].min
232
240
  else
@@ -271,6 +279,7 @@ module SolarWindsAPM
271
279
  elsif key == :trigger_tracing_mode
272
280
  # Make sure that the mode is stored as a symbol
273
281
  @@config[key.to_sym] = value.to_sym
282
+
274
283
  end
275
284
  end
276
285
  # rubocop:enable Metrics/AbcSize, Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity
@@ -63,7 +63,13 @@ if SolarWindsAPM.loaded
63
63
  response =
64
64
  propagate_tracecontext(env, settings) do
65
65
  sample(env, settings, options, profile_spans) do
66
- SolarWindsAPM::Profiling.run do
66
+ if defined?(SolarWindsAPM::Profiling)
67
+ SolarWindsAPM::Profiling.run do
68
+ SolarWindsAPM::TransactionMetrics.metrics(env, settings) do
69
+ @app.call(env)
70
+ end
71
+ end
72
+ else
67
73
  SolarWindsAPM::TransactionMetrics.metrics(env, settings) do
68
74
  @app.call(env)
69
75
  end
@@ -53,6 +53,8 @@ module SolarWindsAPM
53
53
  # hardcoded arg for lambda (lambda not supported yet)
54
54
  # hardcoded arg for grpc hack
55
55
  # hardcoded arg for trace id format to use w3c format
56
+ # flag for format of metric (0 = Both; 1 = AppOptics only; 2 = SWO only; default = 0)
57
+ @metric_format = determine_the_metric_model
56
58
  end
57
59
 
58
60
  def re_init # for testing with changed ENV vars
@@ -83,7 +85,8 @@ module SolarWindsAPM
83
85
  @grpc_proxy, #18
84
86
  0, #19 arg for lambda (no lambda for ruby yet)
85
87
  1, #20 arg for grpc hack, hardcoded to include hack
86
- 1 #21 arg for trace id format to use w3c format
88
+ 1, #21 arg for trace id format to use w3c format
89
+ @metric_format #22
87
90
  ]
88
91
  end
89
92
 
@@ -186,6 +189,14 @@ module SolarWindsAPM
186
189
 
187
190
  proxy
188
191
  end
192
+
193
+ def determine_the_metric_model
194
+ if ENV['SW_APM_COLLECTOR']&.include? "appoptics.com"
195
+ return 1
196
+ else
197
+ return 0
198
+ end
199
+ end
189
200
  end
190
201
  end
191
202
 
@@ -2,6 +2,9 @@
2
2
  # All rights reserved.
3
3
 
4
4
  module SolarWindsAPM
5
+
6
+ # *
7
+ # * This class only got defined if Init_profiling defined in init_solarwinds_apm.cc
5
8
  class Profiling
6
9
 
7
10
  def self.run
@@ -3,6 +3,7 @@
3
3
 
4
4
  pattern = File.join(File.dirname(__FILE__), 'support', '*.rb')
5
5
  Dir.glob(pattern) do |f|
6
+ next if f =~ /profiling/ unless defined?(SolarWindsAPM::CProfiler) # ignore defining SolarWindsAPM::Profiling if Init_profiling disabled
6
7
  begin
7
8
  require f
8
9
  rescue => e
@@ -7,10 +7,9 @@ module SolarWindsAPM
7
7
  # solarwinds_apm.gemspec during gem build process
8
8
  module Version
9
9
  MAJOR = 5 # breaking,
10
- MINOR = 0 # feature,
11
- PATCH = 0 # fix => BFF
12
- PRE = nil # for pre-releases into packagecloud,
13
- # set to nil for production releases into rubygems
10
+ MINOR = 1 # feature,
11
+ PATCH = 1 # fix => BFF
12
+ PRE = "pre" # for pre-releases into packagecloud, set to nil for production releases into rubygems
14
13
 
15
14
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
16
15
  end
@@ -57,7 +57,7 @@ begin
57
57
  SolarWindsAPM.logger.warn '=============================================================='
58
58
  require 'solarwinds_apm/noop/context'
59
59
  require 'solarwinds_apm/noop/metadata'
60
- require 'solarwinds_apm/noop/profiling'
60
+ # require 'solarwinds_apm/noop/profiling'
61
61
  require 'solarwinds_apm/support/trace_string'
62
62
  end
63
63
 
@@ -8,26 +8,26 @@ Gem::Specification.new do |s|
8
8
 
9
9
  s.license = "Apache-2.0"
10
10
 
11
- s.authors = ["Maia Engeli", "Peter Giacomo Lombardo", "Spiros Eliopoulos"]
11
+ s.authors = ["Maia Engeli", "Peter Giacomo Lombardo", "Spiros Eliopoulos", "Xuan Cao"]
12
12
  s.email = %q{technicalsupport@solarwinds.com}
13
- s.homepage = %q{https://cloud.solarwinds.com/}
13
+ s.homepage = %q{https://documentation.solarwinds.com/en/success_center/observability/content/intro/landing-page.html}
14
14
  s.summary = %q{SolarWindsAPM performance instrumentation gem for Ruby}
15
15
  s.description = <<-EOF
16
16
  Automatic tracing and metrics for Ruby applications. Get started at cloud.solarwinds.com
17
17
  EOF
18
18
 
19
19
  s.metadata = {
20
- 'changelog_uri' => 'https://github.com/appoptics/appoptics-apm-ruby/releases',
20
+ 'changelog_uri' => 'https://github.com/solarwindscloud/solarwinds-apm-ruby/releases',
21
21
  'documentation_uri' => 'https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=config-ruby-agent',
22
- 'homepage_uri' => 'https://cloud.solarwinds.com/',
23
- 'source_code_uri' => 'https://github.com/appoptics/appoptics-apm-ruby',
22
+ 'homepage_uri' => 'https://documentation.solarwinds.com/en/success_center/observability/content/intro/landing-page.html',
23
+ 'source_code_uri' => 'https://github.com/solarwindscloud/solarwinds-apm-ruby',
24
24
  }
25
25
 
26
26
  s.extra_rdoc_files = ['LICENSE']
27
27
  s.files = `git ls-files`.split("\n").reject { |f| f.match(%r{^(test|gemfiles)/}) }
28
28
  s.files += ['ext/oboe_metal/src/oboe.h',
29
29
  'ext/oboe_metal/src/oboe_api.cpp',
30
- 'ext/oboe_metal/src/oboe_api.hpp',
30
+ 'ext/oboe_metal/src/oboe_api.h',
31
31
  'ext/oboe_metal/src/oboe_debug.h',
32
32
  'ext/oboe_metal/src/oboe_swig_wrap.cc',
33
33
  'ext/oboe_metal/src/bson/bson.h',
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solarwinds_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.1.1.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maia Engeli
8
8
  - Peter Giacomo Lombardo
9
9
  - Spiros Eliopoulos
10
+ - Xuan Cao
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2022-04-29 00:00:00.000000000 Z
14
+ date: 2022-10-08 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: json
@@ -59,6 +60,7 @@ extra_rdoc_files:
59
60
  - LICENSE
60
61
  files:
61
62
  - ".dockerignore"
63
+ - ".github/CODEOWNERS"
62
64
  - ".github/ISSUE_TEMPLATE/bug-or-feature-request.md"
63
65
  - ".github/workflows/build_and_release_gem.yml"
64
66
  - ".github/workflows/build_for_packagecloud.yml"
@@ -70,7 +72,9 @@ files:
70
72
  - ".github/workflows/test_on_4_linux.yml"
71
73
  - ".gitignore"
72
74
  - ".rubocop.yml"
75
+ - ".whitesource"
73
76
  - ".yardopts"
77
+ - CHANGELOG-appoptics.md
74
78
  - CHANGELOG.md
75
79
  - CONFIG.md
76
80
  - Gemfile
@@ -97,7 +101,7 @@ files:
97
101
  - ext/oboe_metal/src/logging.h
98
102
  - ext/oboe_metal/src/oboe.h
99
103
  - ext/oboe_metal/src/oboe_api.cpp
100
- - ext/oboe_metal/src/oboe_api.hpp
104
+ - ext/oboe_metal/src/oboe_api.h
101
105
  - ext/oboe_metal/src/oboe_debug.h
102
106
  - ext/oboe_metal/src/oboe_swig_wrap.cc
103
107
  - ext/oboe_metal/src/profiling.cc
@@ -198,14 +202,14 @@ files:
198
202
  - log/postgresql/.keep
199
203
  - solarwinds_apm.gemspec
200
204
  - yardoc_frontpage.md
201
- homepage: https://cloud.solarwinds.com/
205
+ homepage: https://documentation.solarwinds.com/en/success_center/observability/content/intro/landing-page.html
202
206
  licenses:
203
207
  - Apache-2.0
204
208
  metadata:
205
- changelog_uri: https://github.com/appoptics/appoptics-apm-ruby/releases
209
+ changelog_uri: https://github.com/solarwindscloud/solarwinds-apm-ruby/releases
206
210
  documentation_uri: https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=config-ruby-agent
207
- homepage_uri: https://cloud.solarwinds.com/
208
- source_code_uri: https://github.com/appoptics/appoptics-apm-ruby
211
+ homepage_uri: https://documentation.solarwinds.com/en/success_center/observability/content/intro/landing-page.html
212
+ source_code_uri: https://github.com/solarwindscloud/solarwinds-apm-ruby
209
213
  post_install_message:
210
214
  rdoc_options: []
211
215
  require_paths:
@@ -217,9 +221,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
221
  version: 2.5.0
218
222
  required_rubygems_version: !ruby/object:Gem::Requirement
219
223
  requirements:
220
- - - ">="
224
+ - - ">"
221
225
  - !ruby/object:Gem::Version
222
- version: '0'
226
+ version: 1.3.1
223
227
  requirements: []
224
228
  rubygems_version: 3.1.6
225
229
  signing_key: