solarwinds_apm 6.0.0 → 6.0.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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/ext/oboe_metal/extconf.rb +42 -41
  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-lambda-aarch64.so.sha256 +1 -0
  7. data/ext/oboe_metal/lib/liboboe-1.0-lambda-x86_64.so.sha256 +1 -0
  8. data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.sha256 +1 -1
  9. data/ext/oboe_metal/src/VERSION +1 -1
  10. data/ext/oboe_metal/src/oboe.h +3 -0
  11. data/ext/oboe_metal/src/oboe_api.cpp +1 -1
  12. data/lib/oboe_metal.rb +30 -27
  13. data/lib/rails/generators/solarwinds_apm/install_generator.rb +21 -19
  14. data/lib/solarwinds_apm/api/current_trace_info.rb +16 -9
  15. data/lib/solarwinds_apm/api/custom_metrics.rb +6 -4
  16. data/lib/solarwinds_apm/api/opentelemetry.rb +8 -4
  17. data/lib/solarwinds_apm/api/tracing.rb +6 -4
  18. data/lib/solarwinds_apm/api/transaction_name.rb +21 -11
  19. data/lib/solarwinds_apm/api.rb +7 -5
  20. data/lib/solarwinds_apm/config.rb +70 -46
  21. data/lib/solarwinds_apm/constants.rb +25 -23
  22. data/lib/solarwinds_apm/logger.rb +2 -0
  23. data/lib/solarwinds_apm/noop/api.rb +3 -1
  24. data/lib/solarwinds_apm/noop/context.rb +2 -0
  25. data/lib/solarwinds_apm/noop/metadata.rb +2 -0
  26. data/lib/solarwinds_apm/noop/span.rb +2 -0
  27. data/lib/solarwinds_apm/noop.rb +8 -6
  28. data/lib/solarwinds_apm/oboe_init_options.rb +47 -39
  29. data/lib/solarwinds_apm/opentelemetry/otlp_processor.rb +135 -0
  30. data/lib/solarwinds_apm/opentelemetry/solarwinds_exporter.rb +66 -41
  31. data/lib/solarwinds_apm/opentelemetry/solarwinds_processor.rb +49 -51
  32. data/lib/solarwinds_apm/opentelemetry/solarwinds_propagator.rb +30 -22
  33. data/lib/solarwinds_apm/opentelemetry/solarwinds_response_propagator.rb +29 -16
  34. data/lib/solarwinds_apm/opentelemetry/solarwinds_sampler.rb +135 -98
  35. data/lib/solarwinds_apm/opentelemetry.rb +8 -5
  36. data/lib/solarwinds_apm/otel_config.rb +32 -25
  37. data/lib/solarwinds_apm/otel_lambda_config.rb +53 -0
  38. data/lib/solarwinds_apm/patch.rb +2 -0
  39. data/lib/solarwinds_apm/support/logger_formatter.rb +4 -2
  40. data/lib/solarwinds_apm/support/logging_log_event.rb +2 -0
  41. data/lib/solarwinds_apm/support/lumberjack_formatter.rb +2 -0
  42. data/lib/solarwinds_apm/support/oboe_tracing_mode.rb +2 -0
  43. data/lib/solarwinds_apm/support/service_key_checker.rb +18 -6
  44. data/lib/solarwinds_apm/support/support_report.rb +5 -3
  45. data/lib/solarwinds_apm/support/swomarginalia/comment.rb +18 -17
  46. data/lib/solarwinds_apm/support/swomarginalia/load_swomarginalia.rb +13 -12
  47. data/lib/solarwinds_apm/support/swomarginalia/railtie.rb +4 -2
  48. data/lib/solarwinds_apm/support/swomarginalia/swomarginalia.rb +3 -1
  49. data/lib/solarwinds_apm/support/transaction_cache.rb +6 -4
  50. data/lib/solarwinds_apm/support/transaction_settings.rb +7 -3
  51. data/lib/solarwinds_apm/support/txn_name_manager.rb +8 -3
  52. data/lib/solarwinds_apm/support/utils.rb +12 -9
  53. data/lib/solarwinds_apm/support/x_trace_options.rb +23 -17
  54. data/lib/solarwinds_apm/support.rb +28 -24
  55. data/lib/solarwinds_apm/version.rb +3 -1
  56. data/lib/solarwinds_apm.rb +44 -34
  57. metadata +14 -23
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # © 2023 SolarWinds Worldwide, LLC. All rights reserved.
2
4
  #
3
5
  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:http://www.apache.org/licenses/LICENSE-2.0
@@ -6,36 +8,38 @@
6
8
 
7
9
  # This file is for loading support library
8
10
 
9
- require_relative './support/logger_formatter'
10
- require_relative './support/logging_log_event'
11
- require_relative './support/lumberjack_formatter'
12
- require_relative './support/transaction_cache'
13
- require_relative './support/transaction_settings'
14
- require_relative './support/oboe_tracing_mode'
15
- require_relative './support/txn_name_manager'
16
- require_relative './support/utils'
17
- require_relative './support/x_trace_options'
18
- require_relative './support/support_report'
11
+ require_relative 'support/logger_formatter'
12
+ require_relative 'support/logging_log_event'
13
+ require_relative 'support/lumberjack_formatter'
14
+ require_relative 'support/transaction_cache'
15
+ require_relative 'support/transaction_settings'
16
+ require_relative 'support/oboe_tracing_mode'
17
+ require_relative 'support/txn_name_manager'
18
+ require_relative 'support/utils'
19
+ require_relative 'support/x_trace_options'
20
+ require_relative 'support/support_report'
19
21
 
20
22
  if SolarWindsAPM::Config[:tag_sql]
21
- if defined?(::Rails)
22
- if ::Rails.version < '7'
23
- require_relative './support/swomarginalia/railtie'
24
- elsif ::Rails.version >= '7'
23
+ if defined?(Rails)
24
+ if Rails.version < '7'
25
+ require_relative 'support/swomarginalia/railtie'
26
+ elsif Rails.version >= '7'
25
27
  # User has to define in their config/environments:
26
- # config.active_record.query_log_tags = [
27
- # {
28
- # tracecontext: -> {
29
- # SolarWindsAPM::SWOMarginalia::Comment.traceparent
30
- # }
28
+ # config.active_record.query_log_tags = [
29
+ # {
30
+ # tracecontext: -> {
31
+ # SolarWindsAPM::SWOMarginalia::Comment.traceparent
32
+ # }
31
33
  # }
32
34
  # ]
33
- SolarWindsAPM.logger.info {"In Rails 7, tag tracecontext on a query by including SolarWindsAPM::SWOMarginalia::Comment.traceparent as function in config.active_record.query_log_tags."}
34
- SolarWindsAPM.logger.info {"For more information, please check https://api.rubyonrails.org/classes/ActiveRecord/QueryLogs.html"}
35
- require_relative './support/swomarginalia/comment'
35
+ SolarWindsAPM.logger.info do
36
+ 'In Rails 7, tag tracecontext on a query by including SolarWindsAPM::SWOMarginalia::Comment.traceparent as function in config.active_record.query_log_tags.'
37
+ end
38
+ SolarWindsAPM.logger.info { 'For more information, please check https://api.rubyonrails.org/classes/ActiveRecord/QueryLogs.html' }
39
+ require_relative 'support/swomarginalia/comment'
36
40
  end
37
- elsif defined?(::ActiveRecord)
38
- require_relative './support/swomarginalia/load_swomarginalia'
41
+ elsif defined?(ActiveRecord)
42
+ require_relative 'support/swomarginalia/load_swomarginalia'
39
43
  SolarWindsAPM::SWOMarginalia::LoadSWOMarginalia.insert
40
44
  end
41
45
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # © 2023 SolarWinds Worldwide, LLC. All rights reserved.
2
4
  #
3
5
  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:http://www.apache.org/licenses/LICENSE-2.0
@@ -11,7 +13,7 @@ module SolarWindsAPM
11
13
  module Version
12
14
  MAJOR = 6 # breaking,
13
15
  MINOR = 0 # feature,
14
- PATCH = 0 # fix => BFF
16
+ PATCH = 1 # fix => BFF
15
17
  PRE = nil
16
18
 
17
19
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # © 2023 SolarWinds Worldwide, LLC. All rights reserved.
2
4
  #
3
5
  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:http://www.apache.org/licenses/LICENSE-2.0
@@ -17,12 +19,10 @@ begin
17
19
  end
18
20
 
19
21
  begin
20
- if /linux/.match?(RUBY_PLATFORM)
22
+ if RUBY_PLATFORM.include?('linux')
21
23
  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?
24
+ require 'solarwinds_apm/oboe_init_options' # setup oboe reporter options
25
+ if !SolarWindsAPM::OboeInitOptions.instance.service_key_ok? && !SolarWindsAPM::OboeInitOptions.instance.lambda_env
26
26
  SolarWindsAPM.logger.warn '=============================================================='
27
27
  SolarWindsAPM.logger.warn 'SW_APM_SERVICE_KEY Error. SolarWinds APM disabled'
28
28
  SolarWindsAPM.logger.warn 'Please check previous log messages for more details.'
@@ -30,8 +30,8 @@ begin
30
30
  return
31
31
  end
32
32
 
33
- require_relative './libsolarwinds_apm.so' # load c-lib oboe
34
- require_relative './oboe_metal' # initialize reporter: SolarWindsAPM.loaded = true
33
+ require_relative 'libsolarwinds_apm.so' # load c-lib oboe
34
+ require_relative 'oboe_metal' # initialize reporter: SolarWindsAPM.loaded = true
35
35
 
36
36
  require 'opentelemetry/sdk/version' # load otel sdk version
37
37
  require 'opentelemetry/instrumentation/all/version' # load otel instrumentation
@@ -43,34 +43,45 @@ begin
43
43
  SolarWindsAPM.logger.info "OpenTelemetry instrumentation version: #{OpenTelemetry::Instrumentation::All::VERSION}."
44
44
  SolarWindsAPM.logger.info '==================================================================='
45
45
 
46
- SolarWindsAPM::Reporter.start # start the reporter, any issue will be logged
46
+ if SolarWindsAPM::OboeInitOptions.instance.lambda_env
47
+ SolarWindsAPM.logger.info '==================================================================='
48
+ SolarWindsAPM.logger.info "Ruby #{RUBY_VERSION} on platform #{RUBY_PLATFORM} is running in lambda environment."
49
+ SolarWindsAPM.logger.info '==================================================================='
50
+
51
+ SolarWindsAPM.oboe_api = SolarWindsAPM::OboeAPI.new # start oboe api for lambda env
52
+ require 'solarwinds_apm/otel_lambda_config'
53
+
54
+ SolarWindsAPM::OTelLambdaConfig.initialize # we don't allow in-code configuration under lambda env
55
+ else
56
+ SolarWindsAPM::Reporter.start # start the reporter, any issue will be logged
47
57
 
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'
58
+ if SolarWindsAPM.loaded
59
+ require 'solarwinds_apm/constants'
60
+ require 'solarwinds_apm/api'
61
+ require 'solarwinds_apm/support'
62
+ require 'solarwinds_apm/opentelemetry'
63
+ require 'solarwinds_apm/patch'
64
+ require 'solarwinds_apm/otel_config'
65
+
66
+ if ENV['SW_APM_AUTO_CONFIGURE'] != 'false'
67
+ SolarWindsAPM::OTelConfig.initialize
68
+ elsif ENV['SW_APM_AUTO_CONFIGURE'] == 'false'
69
+ SolarWindsAPM.logger.warn '=============================================================='
70
+ SolarWindsAPM.logger.warn 'SW_APM_AUTO_CONFIGURE set to false.'
71
+ SolarWindsAPM.logger.warn 'You need to initialize Ruby library in application with'
72
+ SolarWindsAPM.logger.warn 'SolarWindsAPM::OTelConfig.initialize_with_config do |config|'
73
+ SolarWindsAPM.logger.warn ' # ... your configuration code'
74
+ SolarWindsAPM.logger.warn 'end'
75
+ SolarWindsAPM.logger.warn 'See: https://github.com/solarwinds/apm-ruby/blob/main/CONFIGURATION.md#in-code-configuration'
76
+ SolarWindsAPM.logger.warn "\e[1mPlease discard this message if application have already taken this action.\e[0m"
77
+ SolarWindsAPM.logger.warn '=============================================================='
78
+ end
79
+ else
59
80
  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"
81
+ SolarWindsAPM.logger.warn 'SolarWindsAPM not loaded. SolarWinds APM disabled'
82
+ SolarWindsAPM.logger.warn 'Please check previous log messages.'
67
83
  SolarWindsAPM.logger.warn '=============================================================='
68
84
  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
85
  end
75
86
  else
76
87
  SolarWindsAPM.logger.warn '==================================================================='
@@ -87,8 +98,7 @@ begin
87
98
  SolarWindsAPM.logger.error 'See: https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshid=config-ruby-agent'
88
99
  SolarWindsAPM.logger.error '=============================================================='
89
100
  end
90
-
91
101
  rescue StandardError => e
92
- $stderr.puts "[solarwinds_apm/error] Problem loading: #{e.inspect}"
93
- $stderr.puts e.backtrace
102
+ warn "[solarwinds_apm/error] Problem loading: #{e.inspect}"
103
+ warn e.backtrace
94
104
  end
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
4
+ version: 6.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maia Engeli
@@ -11,36 +11,36 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2024-04-11 00:00:00.000000000 Z
14
+ date: 2024-06-20 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: opentelemetry-sdk
17
+ name: opentelemetry-instrumentation-all
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.2.0
22
+ version: 0.31.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 1.2.0
29
+ version: 0.31.0
30
30
  - !ruby/object:Gem::Dependency
31
- name: opentelemetry-instrumentation-all
31
+ name: opentelemetry-sdk
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 0.31.0
36
+ version: 1.2.0
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: 0.31.0
43
+ version: 1.2.0
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: json
46
46
  requirement: !ruby/object:Gem::Requirement
@@ -55,20 +55,6 @@ dependencies:
55
55
  - - "~>"
56
56
  - !ruby/object:Gem::Version
57
57
  version: '2.0'
58
- - !ruby/object:Gem::Dependency
59
- name: opentelemetry-exporter-otlp
60
- requirement: !ruby/object:Gem::Requirement
61
- requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 0.24.2
65
- type: :development
66
- prerelease: false
67
- version_requirements: !ruby/object:Gem::Requirement
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- version: 0.24.2
72
58
  description: Automatic tracing and metrics for Ruby applications. Get started at cloud.solarwinds.com
73
59
  email: technicalsupport@solarwinds.com
74
60
  executables: []
@@ -82,6 +68,8 @@ files:
82
68
  - ext/oboe_metal/lib/liboboe-1.0-aarch64.so.sha256
83
69
  - ext/oboe_metal/lib/liboboe-1.0-alpine-aarch64.so.sha256
84
70
  - ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.sha256
71
+ - ext/oboe_metal/lib/liboboe-1.0-lambda-aarch64.so.sha256
72
+ - ext/oboe_metal/lib/liboboe-1.0-lambda-x86_64.so.sha256
85
73
  - ext/oboe_metal/lib/liboboe-1.0-x86_64.so.sha256
86
74
  - ext/oboe_metal/src/VERSION
87
75
  - ext/oboe_metal/src/bson/bson.h
@@ -114,12 +102,14 @@ files:
114
102
  - lib/solarwinds_apm/noop/span.rb
115
103
  - lib/solarwinds_apm/oboe_init_options.rb
116
104
  - lib/solarwinds_apm/opentelemetry.rb
105
+ - lib/solarwinds_apm/opentelemetry/otlp_processor.rb
117
106
  - lib/solarwinds_apm/opentelemetry/solarwinds_exporter.rb
118
107
  - lib/solarwinds_apm/opentelemetry/solarwinds_processor.rb
119
108
  - lib/solarwinds_apm/opentelemetry/solarwinds_propagator.rb
120
109
  - lib/solarwinds_apm/opentelemetry/solarwinds_response_propagator.rb
121
110
  - lib/solarwinds_apm/opentelemetry/solarwinds_sampler.rb
122
111
  - lib/solarwinds_apm/otel_config.rb
112
+ - lib/solarwinds_apm/otel_lambda_config.rb
123
113
  - lib/solarwinds_apm/patch.rb
124
114
  - lib/solarwinds_apm/patch/dummy_patch.rb
125
115
  - lib/solarwinds_apm/support.rb
@@ -150,6 +140,7 @@ metadata:
150
140
  homepage_uri: https://documentation.solarwinds.com/en/success_center/observability/content/intro/landing-page.html
151
141
  source_code_uri: https://github.com/solarwinds/apm-ruby
152
142
  github_repo: https://github.com/solarwinds/apm-ruby.git
143
+ rubygems_mfa_required: 'true'
153
144
  post_install_message:
154
145
  rdoc_options: []
155
146
  require_paths:
@@ -165,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
156
  - !ruby/object:Gem::Version
166
157
  version: '0'
167
158
  requirements: []
168
- rubygems_version: 3.3.26
159
+ rubygems_version: 3.3.27
169
160
  signing_key:
170
161
  specification_version: 4
171
162
  summary: SolarWindsAPM performance instrumentation gem for Ruby