solarwinds_apm 6.0.0.preV5 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/ext/oboe_metal/extconf.rb +5 -4
  3. data/ext/oboe_metal/lib/liboboe-1.0-aarch64.so.sha256 +1 -1
  4. data/ext/oboe_metal/lib/liboboe-1.0-alpine-aarch64.so.sha256 +1 -1
  5. data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.sha256 +1 -1
  6. data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.sha256 +1 -1
  7. data/ext/oboe_metal/src/VERSION +1 -1
  8. data/ext/oboe_metal/src/oboe.h +56 -13
  9. data/ext/oboe_metal/src/oboe_api.cpp +105 -6
  10. data/ext/oboe_metal/src/oboe_api.h +121 -2
  11. data/ext/oboe_metal/src/oboe_debug.h +4 -315
  12. data/ext/oboe_metal/src/oboe_swig_wrap.cc +2987 -549
  13. data/lib/oboe_metal.rb +23 -64
  14. data/lib/rails/generators/solarwinds_apm/templates/solarwinds_apm_initializer.rb +1 -1
  15. data/lib/solarwinds_apm/api/current_trace_info.rb +2 -3
  16. data/lib/solarwinds_apm/api/opentelemetry.rb +2 -2
  17. data/lib/solarwinds_apm/api/tracing.rb +1 -1
  18. data/lib/solarwinds_apm/api.rb +1 -1
  19. data/lib/solarwinds_apm/config.rb +56 -17
  20. data/lib/solarwinds_apm/constants.rb +5 -7
  21. data/lib/solarwinds_apm/noop/README.md +1 -1
  22. data/lib/solarwinds_apm/noop/api.rb +83 -0
  23. data/lib/solarwinds_apm/noop/context.rb +13 -2
  24. data/lib/solarwinds_apm/noop/metadata.rb +5 -2
  25. data/lib/solarwinds_apm/{thread_local.rb → noop/span.rb} +14 -20
  26. data/lib/solarwinds_apm/{base.rb → noop.rb} +22 -27
  27. data/lib/solarwinds_apm/oboe_init_options.rb +23 -82
  28. data/lib/solarwinds_apm/opentelemetry/solarwinds_exporter.rb +1 -1
  29. data/lib/solarwinds_apm/opentelemetry/solarwinds_processor.rb +2 -2
  30. data/lib/solarwinds_apm/opentelemetry/solarwinds_sampler.rb +4 -3
  31. data/lib/solarwinds_apm/opentelemetry.rb +1 -1
  32. data/lib/solarwinds_apm/otel_config.rb +14 -43
  33. data/lib/solarwinds_apm/patch/dummy_patch.rb +12 -0
  34. data/lib/solarwinds_apm/patch.rb +11 -0
  35. data/lib/solarwinds_apm/support/logger_formatter.rb +1 -1
  36. data/lib/solarwinds_apm/support/oboe_tracing_mode.rb +20 -22
  37. data/lib/solarwinds_apm/support/service_key_checker.rb +94 -0
  38. data/lib/solarwinds_apm/{support_report.rb → support/support_report.rb} +11 -8
  39. data/lib/solarwinds_apm/support/swomarginalia/comment.rb +2 -2
  40. data/lib/solarwinds_apm/support/swomarginalia/swomarginalia.rb +1 -1
  41. data/lib/solarwinds_apm/support/transaction_settings.rb +1 -5
  42. data/lib/solarwinds_apm/support.rb +1 -0
  43. data/lib/solarwinds_apm/version.rb +1 -1
  44. data/lib/solarwinds_apm.rb +70 -55
  45. metadata +12 -7
@@ -5,74 +5,89 @@
5
5
  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
6
6
 
7
7
  begin
8
+ require 'solarwinds_apm/logger'
9
+ require 'solarwinds_apm/version'
10
+ require 'solarwinds_apm/noop'
11
+ require 'opentelemetry-api'
8
12
  if ENV.fetch('SW_APM_ENABLED', 'true') == 'false'
9
- SolarWindsAPM.logger.warn 'SW_APM_ENABLED environment variable detected and was set to false; SolarWindsAPM disabled'
13
+ SolarWindsAPM.logger.info '==================================================================='
14
+ SolarWindsAPM.logger.info 'SW_APM_ENABLED environment variable detected and was set to false. SolarWindsAPM disabled'
15
+ SolarWindsAPM.logger.info '==================================================================='
10
16
  return
11
17
  end
12
18
 
13
- require 'solarwinds_apm/version'
14
- require 'solarwinds_apm/thread_local'
15
- require 'solarwinds_apm/support_report'
16
- require 'solarwinds_apm/constants'
17
- require 'solarwinds_apm/api'
18
- require 'solarwinds_apm/base'
19
- require 'solarwinds_apm/logger'
20
- require 'solarwinds_apm/config'
21
-
22
- SolarWindsAPM::Config.load_config_file
23
- SolarWindsAPM.loaded = false
24
19
  begin
25
- if RUBY_PLATFORM =~ /linux/
26
- require_relative './libsolarwinds_apm.so'
27
- require 'solarwinds_apm/oboe_init_options'
28
- require_relative './oboe_metal' # initialize Reporter; sets SolarWindsAPM.loaded = true if successful
20
+ if /linux/.match?(RUBY_PLATFORM)
21
+ require 'solarwinds_apm/config'
22
+ SolarWindsAPM::Config.load_config_file
23
+
24
+ require 'solarwinds_apm/oboe_init_options' # setup oboe reporter options
25
+ unless SolarWindsAPM::OboeInitOptions.instance.service_key_ok?
26
+ SolarWindsAPM.logger.warn '=============================================================='
27
+ SolarWindsAPM.logger.warn 'SW_APM_SERVICE_KEY Error. SolarWinds APM disabled'
28
+ SolarWindsAPM.logger.warn 'Please check previous log messages for more details.'
29
+ SolarWindsAPM.logger.warn '=============================================================='
30
+ return
31
+ end
32
+
33
+ require_relative './libsolarwinds_apm.so' # load c-lib oboe
34
+ require_relative './oboe_metal' # initialize reporter: SolarWindsAPM.loaded = true
35
+
36
+ require 'opentelemetry/sdk/version' # load otel sdk version
37
+ require 'opentelemetry/instrumentation/all/version' # load otel instrumentation
38
+
39
+ SolarWindsAPM.logger.info '==================================================================='
40
+ SolarWindsAPM.logger.info "Ruby #{RUBY_VERSION} on platform #{RUBY_PLATFORM}."
41
+ SolarWindsAPM.logger.info "Current solarwinds_apm version: #{SolarWindsAPM::Version::STRING}."
42
+ SolarWindsAPM.logger.info "OpenTelemetry version: #{OpenTelemetry::SDK::VERSION}."
43
+ SolarWindsAPM.logger.info "OpenTelemetry instrumentation version: #{OpenTelemetry::Instrumentation::All::VERSION}."
44
+ SolarWindsAPM.logger.info '==================================================================='
45
+
46
+ SolarWindsAPM::Reporter.start # start the reporter, any issue will be logged
47
+
48
+ if SolarWindsAPM.loaded
49
+ require 'solarwinds_apm/constants'
50
+ require 'solarwinds_apm/api'
51
+ require 'solarwinds_apm/support'
52
+ require 'solarwinds_apm/opentelemetry'
53
+ require 'solarwinds_apm/patch'
54
+ require 'solarwinds_apm/otel_config'
55
+
56
+ if ENV['SW_APM_AUTO_CONFIGURE'] != 'false'
57
+ SolarWindsAPM::OTelConfig.initialize
58
+ elsif ENV['SW_APM_AUTO_CONFIGURE'] == 'false'
59
+ SolarWindsAPM.logger.warn '=============================================================='
60
+ SolarWindsAPM.logger.warn 'SW_APM_AUTO_CONFIGURE set to false.'
61
+ SolarWindsAPM.logger.warn 'You need to initialize Ruby library in application with'
62
+ SolarWindsAPM.logger.warn 'SolarWindsAPM::OTelConfig.initialize_with_config do |config|'
63
+ SolarWindsAPM.logger.warn ' # ... your configuration code'
64
+ SolarWindsAPM.logger.warn 'end'
65
+ SolarWindsAPM.logger.warn 'See: https://github.com/solarwinds/apm-ruby/blob/main/CONFIGURATION.md#in-code-configuration'
66
+ SolarWindsAPM.logger.warn "\e[1mPlease discard this message if application have already taken this action.\e[0m"
67
+ SolarWindsAPM.logger.warn '=============================================================='
68
+ end
69
+ else
70
+ SolarWindsAPM.logger.warn '=============================================================='
71
+ SolarWindsAPM.logger.warn 'SolarWindsAPM not loaded. SolarWinds APM disabled'
72
+ SolarWindsAPM.logger.warn 'Please check previous log messages.'
73
+ SolarWindsAPM.logger.warn '=============================================================='
74
+ end
29
75
  else
30
76
  SolarWindsAPM.logger.warn '==================================================================='
31
- SolarWindsAPM.logger.warn "SolarWindsAPM warning: Platform #{RUBY_PLATFORM} not yet supported."
77
+ SolarWindsAPM.logger.warn "SolarWindsAPM warning: Platform #{RUBY_PLATFORM} not yet supported on current solarwinds_apm #{SolarWindsAPM::Version::STRING}"
32
78
  SolarWindsAPM.logger.warn 'see: https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=config-ruby-agent'
33
- SolarWindsAPM.logger.warn 'Tracing disabled.'
79
+ SolarWindsAPM.logger.warn 'SolarWinds APM disabled.'
34
80
  SolarWindsAPM.logger.warn 'Contact technicalsupport@solarwinds.com if this is unexpected.'
35
81
  SolarWindsAPM.logger.warn '==================================================================='
36
82
  end
37
83
  rescue LoadError => e
38
- unless ENV['RAILS_GROUP'] == 'assets' || ENV['SW_APM_NO_LIBRARIES_WARNING']
39
- SolarWindsAPM.logger.error '=============================================================='
40
- SolarWindsAPM.logger.error 'Missing SolarWindsAPM libraries. Tracing disabled.'
41
- SolarWindsAPM.logger.error "Error: #{e.message}"
42
- SolarWindsAPM.logger.error 'See: https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=config-ruby-agent'
43
- SolarWindsAPM.logger.error '=============================================================='
44
- end
45
- end
46
-
47
- # Auto-start the Reporter unless we are running Unicorn on Heroku
48
- # In that case, we start the reporters after fork
49
- unless SolarWindsAPM.forking_webserver?
50
- SolarWindsAPM::Reporter.start if SolarWindsAPM.loaded
51
- end
52
-
53
- if SolarWindsAPM.loaded
54
- require 'solarwinds_apm/support'
55
- require 'solarwinds_apm/opentelemetry'
56
- require 'solarwinds_apm/otel_config'
57
- if ENV['SW_APM_AUTO_CONFIGURE'] == 'false'
58
- SolarWindsAPM.logger.warn "SolarWindsAPM warning: Ruby library is not initilaized.
59
- You may need to initialize Ruby library in application like the following:
60
- SolarWindsAPM::OTelConfig.initialize_with_config do |config|
61
- ...
62
- end"
63
- else
64
- SolarWindsAPM::OTelConfig.initialize
65
- end
66
-
67
- else
68
- SolarWindsAPM.logger.warn '=============================================================='
69
- SolarWindsAPM.logger.warn 'SolarWindsAPM not loaded. Tracing disabled.'
70
- SolarWindsAPM.logger.warn 'There may be a problem with the service key or other settings.'
71
- SolarWindsAPM.logger.warn 'Please check previous log messages.'
72
- SolarWindsAPM.logger.warn '=============================================================='
73
- require 'solarwinds_apm/noop/context'
74
- require 'solarwinds_apm/noop/metadata'
84
+ SolarWindsAPM.logger.error '=============================================================='
85
+ SolarWindsAPM.logger.error 'Error occurs while loading solarwinds_apm. SolarWinds APM disabled.'
86
+ SolarWindsAPM.logger.error "Error: #{e.message}"
87
+ SolarWindsAPM.logger.error 'See: https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=config-ruby-agent'
88
+ SolarWindsAPM.logger.error '=============================================================='
75
89
  end
90
+
76
91
  rescue StandardError => e
77
92
  $stderr.puts "[solarwinds_apm/error] Problem loading: #{e.inspect}"
78
93
  $stderr.puts e.backtrace
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solarwinds_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.preV5
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maia Engeli
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2023-11-06 00:00:00.000000000 Z
14
+ date: 2024-04-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: opentelemetry-sdk
@@ -102,14 +102,16 @@ files:
102
102
  - lib/solarwinds_apm/api/opentelemetry.rb
103
103
  - lib/solarwinds_apm/api/tracing.rb
104
104
  - lib/solarwinds_apm/api/transaction_name.rb
105
- - lib/solarwinds_apm/base.rb
106
105
  - lib/solarwinds_apm/cert/star.appoptics.com.issuer.crt
107
106
  - lib/solarwinds_apm/config.rb
108
107
  - lib/solarwinds_apm/constants.rb
109
108
  - lib/solarwinds_apm/logger.rb
109
+ - lib/solarwinds_apm/noop.rb
110
110
  - lib/solarwinds_apm/noop/README.md
111
+ - lib/solarwinds_apm/noop/api.rb
111
112
  - lib/solarwinds_apm/noop/context.rb
112
113
  - lib/solarwinds_apm/noop/metadata.rb
114
+ - lib/solarwinds_apm/noop/span.rb
113
115
  - lib/solarwinds_apm/oboe_init_options.rb
114
116
  - lib/solarwinds_apm/opentelemetry.rb
115
117
  - lib/solarwinds_apm/opentelemetry/solarwinds_exporter.rb
@@ -118,11 +120,15 @@ files:
118
120
  - lib/solarwinds_apm/opentelemetry/solarwinds_response_propagator.rb
119
121
  - lib/solarwinds_apm/opentelemetry/solarwinds_sampler.rb
120
122
  - lib/solarwinds_apm/otel_config.rb
123
+ - lib/solarwinds_apm/patch.rb
124
+ - lib/solarwinds_apm/patch/dummy_patch.rb
121
125
  - lib/solarwinds_apm/support.rb
122
126
  - lib/solarwinds_apm/support/logger_formatter.rb
123
127
  - lib/solarwinds_apm/support/logging_log_event.rb
124
128
  - lib/solarwinds_apm/support/lumberjack_formatter.rb
125
129
  - lib/solarwinds_apm/support/oboe_tracing_mode.rb
130
+ - lib/solarwinds_apm/support/service_key_checker.rb
131
+ - lib/solarwinds_apm/support/support_report.rb
126
132
  - lib/solarwinds_apm/support/swomarginalia/LICENSE
127
133
  - lib/solarwinds_apm/support/swomarginalia/README.md
128
134
  - lib/solarwinds_apm/support/swomarginalia/comment.rb
@@ -134,8 +140,6 @@ files:
134
140
  - lib/solarwinds_apm/support/txn_name_manager.rb
135
141
  - lib/solarwinds_apm/support/utils.rb
136
142
  - lib/solarwinds_apm/support/x_trace_options.rb
137
- - lib/solarwinds_apm/support_report.rb
138
- - lib/solarwinds_apm/thread_local.rb
139
143
  - lib/solarwinds_apm/version.rb
140
144
  homepage: https://documentation.solarwinds.com/en/success_center/observability/content/intro/landing-page.html
141
145
  licenses:
@@ -145,6 +149,7 @@ metadata:
145
149
  documentation_uri: https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=config-ruby-agent
146
150
  homepage_uri: https://documentation.solarwinds.com/en/success_center/observability/content/intro/landing-page.html
147
151
  source_code_uri: https://github.com/solarwinds/apm-ruby
152
+ github_repo: https://github.com/solarwinds/apm-ruby.git
148
153
  post_install_message:
149
154
  rdoc_options: []
150
155
  require_paths:
@@ -156,9 +161,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
156
161
  version: 2.7.0
157
162
  required_rubygems_version: !ruby/object:Gem::Requirement
158
163
  requirements:
159
- - - ">"
164
+ - - ">="
160
165
  - !ruby/object:Gem::Version
161
- version: 1.3.1
166
+ version: '0'
162
167
  requirements: []
163
168
  rubygems_version: 3.3.26
164
169
  signing_key: