solarwinds_apm 6.0.0.preV1 → 6.0.0.preV3
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/LICENSE +28 -54
- data/ext/oboe_metal/extconf.rb +23 -23
- data/ext/oboe_metal/lib/liboboe-1.0-aarch64.so.sha256 +1 -1
- data/ext/oboe_metal/lib/liboboe-1.0-alpine-aarch64.so.sha256 +1 -1
- data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.sha256 +1 -1
- data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.sha256 +1 -1
- data/ext/oboe_metal/src/VERSION +1 -2
- data/ext/oboe_metal/src/init_solarwinds_apm.cc +0 -6
- data/ext/oboe_metal/src/oboe.h +0 -12
- data/ext/oboe_metal/src/oboe_swig_wrap.cc +5 -5
- data/lib/oboe_metal.rb +3 -3
- data/lib/rails/generators/solarwinds_apm/install_generator.rb +0 -3
- data/lib/rails/generators/solarwinds_apm/templates/solarwinds_apm_initializer.rb +8 -25
- data/lib/solarwinds_apm/api/current_trace_info.rb +1 -2
- data/lib/solarwinds_apm/api/opentelemetry.rb +39 -0
- data/lib/solarwinds_apm/api/transaction_name.rb +18 -17
- data/lib/solarwinds_apm/api.rb +2 -0
- data/lib/solarwinds_apm/config.rb +21 -63
- data/lib/solarwinds_apm/constants.rb +2 -4
- data/lib/solarwinds_apm/noop/context.rb +1 -1
- data/lib/solarwinds_apm/oboe_init_options.rb +11 -16
- data/lib/solarwinds_apm/opentelemetry/solarwinds_exporter.rb +92 -87
- data/lib/solarwinds_apm/opentelemetry/solarwinds_processor.rb +27 -23
- data/lib/solarwinds_apm/opentelemetry/solarwinds_propagator.rb +28 -28
- data/lib/solarwinds_apm/opentelemetry/solarwinds_response_propagator.rb +9 -14
- data/lib/solarwinds_apm/opentelemetry/solarwinds_sampler.rb +132 -175
- data/lib/solarwinds_apm/otel_config.rb +55 -36
- data/lib/solarwinds_apm/support/lumberjack_formatter.rb +17 -2
- data/lib/solarwinds_apm/support/swomarginalia/comment.rb +2 -2
- data/lib/solarwinds_apm/support/swomarginalia/swomarginalia.rb +6 -5
- data/lib/solarwinds_apm/support/transaction_cache.rb +27 -2
- data/lib/solarwinds_apm/support/transaction_settings.rb +10 -10
- data/lib/solarwinds_apm/support/txn_name_manager.rb +34 -17
- data/lib/solarwinds_apm/support/utils.rb +24 -0
- data/lib/solarwinds_apm/support.rb +4 -2
- data/lib/solarwinds_apm/version.rb +1 -1
- data/lib/solarwinds_apm.rb +3 -4
- metadata +18 -33
- data/lib/oboe.rb +0 -7
- data/lib/solarwinds_apm/noop/profiling.rb +0 -17
- data/lib/solarwinds_apm/support/transformer.rb +0 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ac8eac87b0a75af0fc92b5f220fd70393a893b1b3291b013d11e5dfa29ee99e
|
4
|
+
data.tar.gz: 2fc862e44f562b7d29c85cd7b54fcb490c4ba5c8575f817a4d65d6cf9914479b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f08999c45b7fe14c224df1af5bd4fc83ba9efd21fb4d6bac5ec36bfe437448ce0622ce8997e9acf47c90010fda716a1f92f35b7336b41fb29ac33ded939abfa
|
7
|
+
data.tar.gz: 2e9dc14242b180518bf23d39db3c8f93dde26855fc5a9ee356a7d712ac624e0939adf5390f02770a1bd56d38fa34d9cb91566d7747e073982514e9ae6e09b380
|
data/LICENSE
CHANGED
@@ -1,17 +1,18 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
Apache License
|
2
3
|
Version 2.0, January 2004
|
3
4
|
http://www.apache.org/licenses/
|
4
|
-
|
5
|
+
|
5
6
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
6
|
-
|
7
|
+
|
7
8
|
1. Definitions.
|
8
|
-
|
9
|
+
|
9
10
|
"License" shall mean the terms and conditions for use, reproduction,
|
10
11
|
and distribution as defined by Sections 1 through 9 of this document.
|
11
|
-
|
12
|
+
|
12
13
|
"Licensor" shall mean the copyright owner or entity authorized by
|
13
14
|
the copyright owner that is granting the License.
|
14
|
-
|
15
|
+
|
15
16
|
"Legal Entity" shall mean the union of the acting entity and all
|
16
17
|
other entities that control, are controlled by, or are under common
|
17
18
|
control with that entity. For the purposes of this definition,
|
@@ -19,24 +20,24 @@
|
|
19
20
|
direction or management of such entity, whether by contract or
|
20
21
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
21
22
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
22
|
-
|
23
|
+
|
23
24
|
"You" (or "Your") shall mean an individual or Legal Entity
|
24
25
|
exercising permissions granted by this License.
|
25
|
-
|
26
|
+
|
26
27
|
"Source" form shall mean the preferred form for making modifications,
|
27
28
|
including but not limited to software source code, documentation
|
28
29
|
source, and configuration files.
|
29
|
-
|
30
|
+
|
30
31
|
"Object" form shall mean any form resulting from mechanical
|
31
32
|
transformation or translation of a Source form, including but
|
32
33
|
not limited to compiled object code, generated documentation,
|
33
34
|
and conversions to other media types.
|
34
|
-
|
35
|
+
|
35
36
|
"Work" shall mean the work of authorship, whether in Source or
|
36
37
|
Object form, made available under the License, as indicated by a
|
37
38
|
copyright notice that is included in or attached to the work
|
38
39
|
(an example is provided in the Appendix below).
|
39
|
-
|
40
|
+
|
40
41
|
"Derivative Works" shall mean any work, whether in Source or Object
|
41
42
|
form, that is based on (or derived from) the Work and for which the
|
42
43
|
editorial revisions, annotations, elaborations, or other modifications
|
@@ -44,7 +45,7 @@
|
|
44
45
|
of this License, Derivative Works shall not include works that remain
|
45
46
|
separable from, or merely link (or bind by name) to the interfaces of,
|
46
47
|
the Work and Derivative Works thereof.
|
47
|
-
|
48
|
+
|
48
49
|
"Contribution" shall mean any work of authorship, including
|
49
50
|
the original version of the Work and any modifications or additions
|
50
51
|
to that Work or Derivative Works thereof, that is intentionally
|
@@ -58,18 +59,18 @@
|
|
58
59
|
Licensor for the purpose of discussing and improving the Work, but
|
59
60
|
excluding communication that is conspicuously marked or otherwise
|
60
61
|
designated in writing by the copyright owner as "Not a Contribution."
|
61
|
-
|
62
|
+
|
62
63
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
63
64
|
on behalf of whom a Contribution has been received by Licensor and
|
64
65
|
subsequently incorporated within the Work.
|
65
|
-
|
66
|
+
|
66
67
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
67
68
|
this License, each Contributor hereby grants to You a perpetual,
|
68
69
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
69
70
|
copyright license to reproduce, prepare Derivative Works of,
|
70
71
|
publicly display, publicly perform, sublicense, and distribute the
|
71
72
|
Work and such Derivative Works in Source or Object form.
|
72
|
-
|
73
|
+
|
73
74
|
3. Grant of Patent License. Subject to the terms and conditions of
|
74
75
|
this License, each Contributor hereby grants to You a perpetual,
|
75
76
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
@@ -85,24 +86,24 @@
|
|
85
86
|
or contributory patent infringement, then any patent licenses
|
86
87
|
granted to You under this License for that Work shall terminate
|
87
88
|
as of the date such litigation is filed.
|
88
|
-
|
89
|
+
|
89
90
|
4. Redistribution. You may reproduce and distribute copies of the
|
90
91
|
Work or Derivative Works thereof in any medium, with or without
|
91
92
|
modifications, and in Source or Object form, provided that You
|
92
93
|
meet the following conditions:
|
93
|
-
|
94
|
+
|
94
95
|
(a) You must give any other recipients of the Work or
|
95
96
|
Derivative Works a copy of this License; and
|
96
|
-
|
97
|
+
|
97
98
|
(b) You must cause any modified files to carry prominent notices
|
98
99
|
stating that You changed the files; and
|
99
|
-
|
100
|
+
|
100
101
|
(c) You must retain, in the Source form of any Derivative Works
|
101
102
|
that You distribute, all copyright, patent, trademark, and
|
102
103
|
attribution notices from the Source form of the Work,
|
103
104
|
excluding those notices that do not pertain to any part of
|
104
105
|
the Derivative Works; and
|
105
|
-
|
106
|
+
|
106
107
|
(d) If the Work includes a "NOTICE" text file as part of its
|
107
108
|
distribution, then any Derivative Works that You distribute must
|
108
109
|
include a readable copy of the attribution notices contained
|
@@ -119,14 +120,14 @@
|
|
119
120
|
or as an addendum to the NOTICE text from the Work, provided
|
120
121
|
that such additional attribution notices cannot be construed
|
121
122
|
as modifying the License.
|
122
|
-
|
123
|
+
|
123
124
|
You may add Your own copyright statement to Your modifications and
|
124
125
|
may provide additional or different license terms and conditions
|
125
126
|
for use, reproduction, or distribution of Your modifications, or
|
126
127
|
for any such Derivative Works as a whole, provided Your use,
|
127
128
|
reproduction, and distribution of the Work otherwise complies with
|
128
129
|
the conditions stated in this License.
|
129
|
-
|
130
|
+
|
130
131
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
131
132
|
any Contribution intentionally submitted for inclusion in the Work
|
132
133
|
by You to the Licensor shall be under the terms and conditions of
|
@@ -134,12 +135,12 @@
|
|
134
135
|
Notwithstanding the above, nothing herein shall supersede or modify
|
135
136
|
the terms of any separate license agreement you may have executed
|
136
137
|
with Licensor regarding such Contributions.
|
137
|
-
|
138
|
+
|
138
139
|
6. Trademarks. This License does not grant permission to use the trade
|
139
140
|
names, trademarks, service marks, or product names of the Licensor,
|
140
141
|
except as required for reasonable and customary use in describing the
|
141
142
|
origin of the Work and reproducing the content of the NOTICE file.
|
142
|
-
|
143
|
+
|
143
144
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
144
145
|
agreed to in writing, Licensor provides the Work (and each
|
145
146
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
@@ -149,7 +150,7 @@
|
|
149
150
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
150
151
|
appropriateness of using or redistributing the Work and assume any
|
151
152
|
risks associated with Your exercise of permissions under this License.
|
152
|
-
|
153
|
+
|
153
154
|
8. Limitation of Liability. In no event and under no legal theory,
|
154
155
|
whether in tort (including negligence), contract, or otherwise,
|
155
156
|
unless required by applicable law (such as deliberate and grossly
|
@@ -161,7 +162,7 @@
|
|
161
162
|
work stoppage, computer failure or malfunction, or any and all
|
162
163
|
other commercial damages or losses), even if such Contributor
|
163
164
|
has been advised of the possibility of such damages.
|
164
|
-
|
165
|
+
|
165
166
|
9. Accepting Warranty or Additional Liability. While redistributing
|
166
167
|
the Work or Derivative Works thereof, You may choose to offer,
|
167
168
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
@@ -171,31 +172,4 @@
|
|
171
172
|
of any other Contributor, and only if You agree to indemnify,
|
172
173
|
defend, and hold each Contributor harmless for any liability
|
173
174
|
incurred by, or claims asserted against, such Contributor by reason
|
174
|
-
of your accepting any such warranty or additional liability.
|
175
|
-
|
176
|
-
END OF TERMS AND CONDITIONS
|
177
|
-
|
178
|
-
APPENDIX: How to apply the Apache License to your work.
|
179
|
-
|
180
|
-
To apply the Apache License to your work, attach the following
|
181
|
-
boilerplate notice, with the fields enclosed by brackets "[]"
|
182
|
-
replaced with your own identifying information. (Don't include
|
183
|
-
the brackets!) The text should be enclosed in the appropriate
|
184
|
-
comment syntax for the file format. We also recommend that a
|
185
|
-
file or class name and description of purpose be included on the
|
186
|
-
same "printed page" as the copyright notice for easier
|
187
|
-
identification within third-party archives.
|
188
|
-
|
189
|
-
Copyright [yyyy] [name of copyright owner]
|
190
|
-
|
191
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
192
|
-
you may not use this file except in compliance with the License.
|
193
|
-
You may obtain a copy of the License at
|
194
|
-
|
195
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
196
|
-
|
197
|
-
Unless required by applicable law or agreed to in writing, software
|
198
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
199
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
200
|
-
See the License for the specific language governing permissions and
|
201
|
-
limitations under the License.
|
175
|
+
of your accepting any such warranty or additional liability.
|
data/ext/oboe_metal/extconf.rb
CHANGED
@@ -21,54 +21,54 @@ ext_dir = __dir__
|
|
21
21
|
|
22
22
|
# Set the mkmf lib paths so we have no issues linking to
|
23
23
|
# the SolarWindsAPM libs.
|
24
|
-
|
25
|
-
|
24
|
+
swo_lib_dir = File.join(ext_dir, 'lib')
|
25
|
+
swo_include = File.join(ext_dir, 'src')
|
26
26
|
|
27
27
|
# Download the appropriate liboboe from Staging or Production
|
28
|
-
version = File.read(File.join(
|
28
|
+
version = File.read(File.join(swo_include, 'VERSION')).strip
|
29
29
|
if ENV['OBOE_DEV'].to_s.downcase == 'true'
|
30
|
-
|
30
|
+
swo_path = "https://solarwinds-apm-staging.s3.us-west-2.amazonaws.com/apm/c-lib/nightly"
|
31
31
|
puts 'Fetching c-lib from DEVELOPMENT Build'
|
32
32
|
elsif ENV['OBOE_STAGING'].to_s.downcase == 'true'
|
33
|
-
|
33
|
+
swo_path = File.join('https://agent-binaries.global.st-ssp.solarwinds.com/apm/c-lib/', version)
|
34
34
|
puts 'Fetching c-lib from STAGING'
|
35
35
|
else
|
36
|
-
|
36
|
+
swo_path = File.join('https://agent-binaries.cloud.solarwinds.com/apm/c-lib/', version)
|
37
37
|
end
|
38
38
|
|
39
|
-
|
39
|
+
swo_arch = 'x86_64'
|
40
40
|
system_arch = `uname -m` # for mac, the command is `uname` # "Darwin\n"; try `uname -a`
|
41
41
|
case system_arch.gsub("\n","")
|
42
42
|
when 'x86_64'
|
43
|
-
|
43
|
+
swo_arch = 'x86_64'
|
44
44
|
when 'aarch64'
|
45
|
-
|
45
|
+
swo_arch = 'aarch64'
|
46
46
|
end
|
47
47
|
|
48
48
|
if File.exist?('/etc/alpine-release')
|
49
49
|
version = File.read('/etc/alpine-release').strip
|
50
50
|
|
51
|
-
|
52
|
-
|
51
|
+
tmp_swo_arch = swo_arch.clone
|
52
|
+
swo_arch =
|
53
53
|
if Gem::Version.new(version) < Gem::Version.new('3.9')
|
54
|
-
"alpine-libressl-#{
|
54
|
+
"alpine-libressl-#{tmp_swo_arch}"
|
55
55
|
else # openssl
|
56
|
-
"alpine-#{
|
56
|
+
"alpine-#{tmp_swo_arch}"
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
clib = File.join(
|
60
|
+
swo_clib = "liboboe-1.0-#{swo_arch}.so"
|
61
|
+
swo_item = File.join(swo_path, swo_clib)
|
62
|
+
swo_checksum_file = File.join(swo_lib_dir, "#{swo_clib}.sha256")
|
63
|
+
clib = File.join(swo_lib_dir, swo_clib)
|
64
64
|
|
65
65
|
retries = 3
|
66
66
|
success = false
|
67
67
|
while retries > 0
|
68
68
|
begin
|
69
|
-
IO.copy_stream(URI.parse(
|
69
|
+
IO.copy_stream(URI.parse(swo_item).open, clib)
|
70
70
|
clib_checksum = Digest::SHA256.file(clib).hexdigest
|
71
|
-
checksum = File.read(
|
71
|
+
checksum = File.read(swo_checksum_file).strip
|
72
72
|
|
73
73
|
# unfortunately these messages only show if the install command is run
|
74
74
|
# with the `--verbose` flag
|
@@ -93,7 +93,7 @@ while retries > 0
|
|
93
93
|
$stderr.puts 'Download of the c-extension for the solarwinds_apm gem failed.'
|
94
94
|
$stderr.puts 'solarwinds_apm will not instrument the code. No tracing will occur.'
|
95
95
|
$stderr.puts 'Contact technicalsupport@solarwinds.com if the problem persists.'
|
96
|
-
$stderr.puts "error: #{
|
96
|
+
$stderr.puts "error: #{swo_item}\n#{e.message}"
|
97
97
|
$stderr.puts '==================================================================='
|
98
98
|
create_makefile('oboe_noop', 'noop')
|
99
99
|
end
|
@@ -103,9 +103,9 @@ end
|
|
103
103
|
|
104
104
|
if success
|
105
105
|
# Create relative symlinks for the SolarWindsAPM library
|
106
|
-
Dir.chdir(
|
107
|
-
File.symlink(
|
108
|
-
File.symlink(
|
106
|
+
Dir.chdir(swo_lib_dir) do
|
107
|
+
File.symlink(swo_clib, 'liboboe.so')
|
108
|
+
File.symlink(swo_clib, 'liboboe-1.0.so.0')
|
109
109
|
end
|
110
110
|
|
111
111
|
dir_config('oboe', 'src', 'lib')
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
86a0c98301b157fd2ec184e585d70e40753c721c52fbc596ab09aa3d422d5f1f
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
534122daed4a1a81a9e66828f206662ea8f6bf891fb84438cc3daef5f78a7af4
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
89936e04f0b8cddf3fb94c8a4c21d16aa780d6e4fbf4bb66eba42eb33fe15cc6
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
623f5b308759754c8d771567d5346c46e1d9b53739995a9b5594cc08f8bc6e54
|
data/ext/oboe_metal/src/VERSION
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
13.0.0
|
@@ -9,14 +9,8 @@ extern "C" {
|
|
9
9
|
|
10
10
|
void Init_oboe_metal(void);
|
11
11
|
|
12
|
-
void Init_profiling(void);
|
13
|
-
|
14
12
|
void Init_libsolarwinds_apm() {
|
15
13
|
Init_oboe_metal();
|
16
|
-
|
17
|
-
// * create SolarWindsAPM::CProfiler module for enabling SolarWindsAPM::Profiling
|
18
|
-
// * see lib/solarwinds_apm/support.rb
|
19
|
-
// Init_profiling();
|
20
14
|
}
|
21
15
|
|
22
16
|
#ifdef __cplusplus
|
data/ext/oboe_metal/src/oboe.h
CHANGED
@@ -432,16 +432,6 @@ int oboe_init_reporter(const char *protocol, oboe_init_options_t *options);
|
|
432
432
|
*/
|
433
433
|
int oboe_init_options_set_defaults(oboe_init_options_t *options);
|
434
434
|
|
435
|
-
/**
|
436
|
-
* Disconnect or shut down the Oboe reporter, but allow it to be reconnect()ed.
|
437
|
-
*/
|
438
|
-
void oboe_reporter_disconnect(); /* TODO: Need implementation. */
|
439
|
-
|
440
|
-
/**
|
441
|
-
* Reconnect or restart the Oboe reporter.
|
442
|
-
*/
|
443
|
-
void oboe_reporter_reconnect(); /* TODO: Need implementation. */
|
444
|
-
|
445
435
|
/**
|
446
436
|
* tell reporter to flush all messages that are currently buffered
|
447
437
|
*/
|
@@ -712,8 +702,6 @@ void oboe_settings_rate_set(int sample_rate);
|
|
712
702
|
void oboe_settings_mode_set(int tracing_mode);
|
713
703
|
void oboe_settings_trigger_set(int trigger_mode);
|
714
704
|
|
715
|
-
int oboe_rand_get_value();
|
716
|
-
|
717
705
|
/**
|
718
706
|
* Convert a tracing mode to a printable string.
|
719
707
|
*/
|
@@ -1932,7 +1932,7 @@ SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2))
|
|
1932
1932
|
}
|
1933
1933
|
|
1934
1934
|
|
1935
|
-
/*@SWIG:/usr/
|
1935
|
+
/*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
1936
1936
|
SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE arg)
|
1937
1937
|
{
|
1938
1938
|
VALUE *args = (VALUE *)arg;
|
@@ -2120,7 +2120,7 @@ SWIG_From_std_string (const std::string& s)
|
|
2120
2120
|
#define SWIG_From_double rb_float_new
|
2121
2121
|
|
2122
2122
|
|
2123
|
-
/*@SWIG:/usr/
|
2123
|
+
/*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
2124
2124
|
SWIGINTERN VALUE SWIG_AUX_NUM2ULONG(VALUE arg)
|
2125
2125
|
{
|
2126
2126
|
VALUE *args = (VALUE *)arg;
|
@@ -2172,7 +2172,7 @@ SWIG_AsVal_unsigned_SS_int (VALUE obj, unsigned int *val)
|
|
2172
2172
|
|
2173
2173
|
|
2174
2174
|
#ifdef SWIG_LONG_LONG_AVAILABLE
|
2175
|
-
/*@SWIG:/usr/
|
2175
|
+
/*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
2176
2176
|
SWIGINTERN VALUE SWIG_AUX_NUM2LL(VALUE arg)
|
2177
2177
|
{
|
2178
2178
|
VALUE *args = (VALUE *)arg;
|
@@ -2203,7 +2203,7 @@ SWIG_AsVal_long_SS_long (VALUE obj, long long *val)
|
|
2203
2203
|
#endif
|
2204
2204
|
|
2205
2205
|
|
2206
|
-
/*@SWIG:/usr/
|
2206
|
+
/*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
2207
2207
|
SWIGINTERN VALUE SWIG_AUX_NUM2DBL(VALUE arg)
|
2208
2208
|
{
|
2209
2209
|
VALUE *args = (VALUE *)arg;
|
@@ -2234,7 +2234,7 @@ SWIG_AsVal_double (VALUE obj, double *val)
|
|
2234
2234
|
|
2235
2235
|
|
2236
2236
|
#ifdef SWIG_LONG_LONG_AVAILABLE
|
2237
|
-
/*@SWIG:/usr/
|
2237
|
+
/*@SWIG:/usr/share/swig4.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
2238
2238
|
SWIGINTERN VALUE SWIG_AUX_NUM2ULL(VALUE arg)
|
2239
2239
|
{
|
2240
2240
|
VALUE *args = (VALUE *)arg;
|
data/lib/oboe_metal.rb
CHANGED
@@ -97,7 +97,7 @@ module SolarWindsAPM
|
|
97
97
|
end
|
98
98
|
|
99
99
|
private
|
100
|
-
|
100
|
+
|
101
101
|
# Internal: Report that instrumentation for the given layer has been
|
102
102
|
# installed, as well as the version of instrumentation and version of
|
103
103
|
# layer.
|
@@ -105,7 +105,7 @@ module SolarWindsAPM
|
|
105
105
|
def report_init(layer=:rack) # :nodoc:
|
106
106
|
# Don't send __Init in test or if SolarWindsAPM
|
107
107
|
# isn't fully loaded (e.g. missing c-extension)
|
108
|
-
return
|
108
|
+
return unless SolarWindsAPM.loaded
|
109
109
|
|
110
110
|
platform_info = build_swo_init_report
|
111
111
|
log_init(layer, platform_info)
|
@@ -148,7 +148,7 @@ module SolarWindsAPM
|
|
148
148
|
begin
|
149
149
|
platform_info['APM.Version'] = SolarWindsAPM::Version::STRING
|
150
150
|
platform_info['APM.Extension.Version'] = extension_lib_version
|
151
|
-
|
151
|
+
|
152
152
|
# OTel Resource Attributes (Optional)
|
153
153
|
platform_info['process.executable.path'] = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name']).sub(/.*\s.*/m, '"\&"')
|
154
154
|
platform_info['process.executable.name'] = RbConfig::CONFIG['ruby_install_name']
|
@@ -69,15 +69,6 @@ if defined?(SolarWindsAPM::Config)
|
|
69
69
|
# The Ruby logger can afterwards be changed to a different level, e.g:
|
70
70
|
# SolarWindsAPM.logger.level = Logger::INFO
|
71
71
|
|
72
|
-
#
|
73
|
-
# Set SW_APM_GEM_VERBOSE
|
74
|
-
# This setting will be overridden if SW_APM_GEM_VERBOSE is set as an environment variable
|
75
|
-
#
|
76
|
-
# On startup the components that are being instrumented will be reported if this is set to true.
|
77
|
-
# If true and the log level is 4 or higher this may create extra debug log messages
|
78
|
-
#
|
79
|
-
SolarWindsAPM::Config[:verbose] = false
|
80
|
-
|
81
72
|
#
|
82
73
|
# Turn Tracing on or off
|
83
74
|
#
|
@@ -115,12 +106,8 @@ if defined?(SolarWindsAPM::Config)
|
|
115
106
|
# disable/enable metrics and traces for certain transactions.
|
116
107
|
#
|
117
108
|
# Currently allowed array of hash
|
118
|
-
#
|
119
|
-
# and the hashes within the :
|
120
|
-
# :extensions takes an array of strings for filtering (not regular expressions!)
|
121
|
-
# :tracing defaults to :disabled, can be set to :enabled to override
|
122
|
-
# the global :disabled setting
|
123
|
-
# or:
|
109
|
+
#
|
110
|
+
# and the hashes within the :transaction_settings list:
|
124
111
|
# :regexp is a regular expression that is applied to the incoming path
|
125
112
|
# :opts (optional) nil(default) or Regexp::IGNORECASE (options for regexp)
|
126
113
|
# :tracing defaults to :disabled, can be set to :enabled to override
|
@@ -130,10 +117,6 @@ if defined?(SolarWindsAPM::Config)
|
|
130
117
|
# down execution.
|
131
118
|
#
|
132
119
|
SolarWindsAPM::Config[:transaction_settings] = [
|
133
|
-
# {
|
134
|
-
# extensions: %w[long_job],
|
135
|
-
# tracing: :disabled
|
136
|
-
# },
|
137
120
|
# {
|
138
121
|
# regexp: '^.*\/long_job\/.*$',
|
139
122
|
# opts: Regexp::IGNORECASE,
|
@@ -156,8 +139,8 @@ if defined?(SolarWindsAPM::Config)
|
|
156
139
|
|
157
140
|
#
|
158
141
|
# Trigger Trace Mode
|
159
|
-
#
|
160
|
-
# Trace options is a custom HTTP header X-Trace-Options that can be set on a request to carry additional information
|
142
|
+
#
|
143
|
+
# Trace options is a custom HTTP header X-Trace-Options that can be set on a request to carry additional information
|
161
144
|
# to the agents, one such option being trigger-trace which we’ll call a trigger trace request.
|
162
145
|
#
|
163
146
|
SolarWindsAPM::Config[:trigger_tracing_mode] = 'enabled'
|
@@ -178,12 +161,12 @@ if defined?(SolarWindsAPM::Config)
|
|
178
161
|
# Appending trace contenxt (i.e. traceparent) as an sql comment
|
179
162
|
# at the beginning or end of sql. This modified sql will be
|
180
163
|
# sent to sql server for trace correlation.
|
181
|
-
#
|
164
|
+
#
|
182
165
|
# Example:
|
183
166
|
# SELECT `posts`.* FROM `posts` /*traceparent=00-a448f096d441e167d12ebd32a927c1a5-a29655a47e430119-01*/
|
184
|
-
#
|
185
|
-
# This option can add a small overhead for prepared statements since the traceparent value is unique per execution.
|
186
|
-
# This feature uses marginalia, see its caveat and possible workaround
|
167
|
+
#
|
168
|
+
# This option can add a small overhead for prepared statements since the traceparent value is unique per execution.
|
169
|
+
# This feature uses marginalia, see its caveat and possible workaround
|
187
170
|
# https://github.com/basecamp/marginalia/blob/master/README.md#prepared-statements
|
188
171
|
#
|
189
172
|
SolarWindsAPM::Config[:tag_sql] = false
|
@@ -49,7 +49,7 @@ module SolarWindsAPM
|
|
49
49
|
class TraceInfo
|
50
50
|
attr_reader :tracestring, :trace_id, :span_id, :trace_flags, :do_log
|
51
51
|
|
52
|
-
REGEXP = /^(?<tracestring>(?<version>[a-f0-9]{2})-(?<trace_id>[a-f0-9]{32})-(?<span_id>[a-f0-9]{16})-(?<flags>[a-f0-9]{2}))
|
52
|
+
REGEXP = /^(?<tracestring>(?<version>[a-f0-9]{2})-(?<trace_id>[a-f0-9]{32})-(?<span_id>[a-f0-9]{16})-(?<flags>[a-f0-9]{2}))$/
|
53
53
|
private_constant :REGEXP
|
54
54
|
|
55
55
|
def initialize
|
@@ -108,7 +108,6 @@ module SolarWindsAPM
|
|
108
108
|
span_id = span.context.hex_span_id
|
109
109
|
trace_flags = span.context.trace_flags.sampled?? '01' : '00'
|
110
110
|
tracestring = "00-#{trace_id}-#{span_id}-#{trace_flags}"
|
111
|
-
|
112
111
|
[trace_id, span_id, trace_flags, tracestring]
|
113
112
|
end
|
114
113
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module SolarWindsAPM
|
2
|
+
module API
|
3
|
+
module OpenTelemetry
|
4
|
+
# Create custom span based on current last span
|
5
|
+
#
|
6
|
+
# Wrap OpenTelemetry function OpenTelemetry.tracer_provider.tracer.in_span
|
7
|
+
#
|
8
|
+
# === Argument:
|
9
|
+
#
|
10
|
+
# * +name+ - (int, default 3000) the maximum time to wait in milliseconds
|
11
|
+
# * +attributes+ - (hash, default nil)
|
12
|
+
# * +links+ - (string, default nil)
|
13
|
+
# * +start_timestamp+ - (int, default nil)
|
14
|
+
# * +kind+ - (symbol, default nil)
|
15
|
+
#
|
16
|
+
# === Example:
|
17
|
+
#
|
18
|
+
# SolarWindsAPM::API.in_span('custom_span') do |span|
|
19
|
+
# url = URI.parse("http://www.google.ca/")
|
20
|
+
# req = Net::HTTP::Get.new(url.to_s)
|
21
|
+
# res = Net::HTTP.start(url.host, url.port) {|http| http.request(req)}
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# === Returns:
|
25
|
+
# * Objective
|
26
|
+
#
|
27
|
+
def in_span(name, attributes: nil, links: nil, start_timestamp: nil, kind: nil, &block)
|
28
|
+
if block.nil?
|
29
|
+
SolarWindsAPM.logger.warn {"[#{name}/#{__method__}] please provide block when using in_span function"}
|
30
|
+
return
|
31
|
+
end
|
32
|
+
|
33
|
+
SolarWindsAPM.logger.debug {"[#{name}/#{__method__}] solarwinds_apm in_span with OTEL_SERVICE_NAME #{ENV['OTEL_SERVICE_NAME']}"}
|
34
|
+
current_tracer = ::OpenTelemetry.tracer_provider.tracer(ENV['OTEL_SERVICE_NAME'])
|
35
|
+
current_tracer.in_span(name, attributes: attributes, links: links, start_timestamp: start_timestamp, kind: kind, &block)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -31,26 +31,27 @@ module SolarWindsAPM
|
|
31
31
|
#
|
32
32
|
def set_transaction_name(custom_name=nil)
|
33
33
|
|
34
|
-
|
34
|
+
status = true
|
35
|
+
if custom_name.nil? || custom_name.empty?
|
36
|
+
status = false
|
37
|
+
elsif SolarWindsAPM::Context.toString == '99-00000000000000000000000000000000-0000000000000000-00' # noop
|
38
|
+
status = true
|
39
|
+
elsif SolarWindsAPM::OTelConfig.class_variable_get(:@@config)[:span_processor].nil?
|
40
|
+
SolarWindsAPM.logger.warn {"[#{name}/#{__method__}] Solarwinds processor is missing. Set transaction name failed."}
|
41
|
+
status = false
|
42
|
+
else
|
43
|
+
solarwinds_processor = SolarWindsAPM::OTelConfig.class_variable_get(:@@config)[:span_processor]
|
44
|
+
current_span = ::OpenTelemetry::Trace.current_span
|
45
|
+
entry_trace_id = current_span.context.hex_trace_id
|
46
|
+
entry_span_id, trace_flags = solarwinds_processor.txn_manager.get_root_context_h(entry_trace_id)&.split('-')
|
35
47
|
|
36
|
-
|
37
|
-
|
38
|
-
SolarWindsAPM.logger.warn {"[#{self.name}/#{__method__}] Solarwinds processor is missing. Set transaction name failed."}
|
39
|
-
return false
|
40
|
-
end
|
41
|
-
|
42
|
-
entry_trace_id = ::OpenTelemetry::Baggage.value(::SolarWindsAPM::Constants::INTL_SWO_CURRENT_TRACE_ID)
|
43
|
-
entry_span_id = ::OpenTelemetry::Baggage.value(::SolarWindsAPM::Constants::INTL_SWO_CURRENT_SPAN_ID)
|
48
|
+
status = false if entry_trace_id.nil? || entry_span_id.nil? || trace_flags.nil?
|
49
|
+
status = false if entry_trace_id == '0'*32 || entry_span_id == '0'*16 || trace_flags == '00' # not sampled
|
44
50
|
|
45
|
-
|
46
|
-
SolarWindsAPM.logger.
|
47
|
-
return false
|
51
|
+
solarwinds_processor.txn_manager.set("#{entry_trace_id}-#{entry_span_id}",custom_name)
|
52
|
+
SolarWindsAPM.logger.debug {"[#{name}/#{__method__}] Cached custom transaction name for #{entry_trace_id}-#{entry_span_id} as #{custom_name}"}
|
48
53
|
end
|
49
|
-
|
50
|
-
trace_span_id = "#{entry_trace_id}-#{entry_span_id}"
|
51
|
-
solarwinds_processor.txn_manager.set(trace_span_id,custom_name)
|
52
|
-
SolarWindsAPM.logger.debug {"[#{self.name}/#{__method__}] Cached custom transaction name for #{trace_span_id} as #{custom_name}"}
|
53
|
-
true
|
54
|
+
status
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
data/lib/solarwinds_apm/api.rb
CHANGED
@@ -4,11 +4,13 @@
|
|
4
4
|
require_relative './api/transaction_name'
|
5
5
|
require_relative './api/current_trace_info'
|
6
6
|
require_relative './api/tracing'
|
7
|
+
require_relative './api/opentelemetry'
|
7
8
|
|
8
9
|
module SolarWindsAPM
|
9
10
|
module API
|
10
11
|
extend SolarWindsAPM::API::TransactionName
|
11
12
|
extend SolarWindsAPM::API::CurrentTraceInfo
|
12
13
|
extend SolarWindsAPM::API::Tracing
|
14
|
+
extend SolarWindsAPM::API::OpenTelemetry
|
13
15
|
end
|
14
16
|
end
|