sentry-opentelemetry 5.7.0 → 5.8.0
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/lib/sentry/opentelemetry/span_processor.rb +43 -11
- data/lib/sentry/opentelemetry/version.rb +1 -1
- data/sentry-opentelemetry.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37320f3a7032a8665fcbcf74cfc47b8cf5e9a52583827f682df55acb11f51411
|
4
|
+
data.tar.gz: 56975c8e8db60b5d942f0cf3ee61bc737e2b6749914586b0d76d9f5c1253102e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd069ea72e3c4cb0fd52374f15fdb484b9afb6acee7b92790ccdbdc469e3660f08e495ac7020c7aefef29090594cc69c49c8400504c7b2a720e32d11e9a0b147
|
7
|
+
data.tar.gz: 777ce885fa8019b6ce1817b87d243d24400e925f2b455628fcb3563711860701fc2dfae86996a4aa7786e672fcc0c8d1b7b2fdb5048734f6c95b3f0aca0d3ba4
|
@@ -18,6 +18,7 @@ module Sentry
|
|
18
18
|
|
19
19
|
def initialize
|
20
20
|
@span_map = {}
|
21
|
+
setup_event_processor
|
21
22
|
end
|
22
23
|
|
23
24
|
def on_start(otel_span, parent_context)
|
@@ -60,11 +61,8 @@ module Sentry
|
|
60
61
|
sentry_span = @span_map.delete(otel_span.context.hex_span_id)
|
61
62
|
return unless sentry_span
|
62
63
|
|
63
|
-
sentry_span.set_op(otel_span.name)
|
64
|
-
|
65
64
|
if sentry_span.is_a?(Sentry::Transaction)
|
66
|
-
sentry_span
|
67
|
-
sentry_span.set_context(:otel, otel_context_hash(otel_span))
|
65
|
+
update_transaction_with_otel_data(sentry_span, otel_span)
|
68
66
|
else
|
69
67
|
update_span_with_otel_data(sentry_span, otel_span)
|
70
68
|
end
|
@@ -123,10 +121,7 @@ module Sentry
|
|
123
121
|
otel_context
|
124
122
|
end
|
125
123
|
|
126
|
-
def
|
127
|
-
sentry_span.set_data('otel.kind', otel_span.kind)
|
128
|
-
otel_span.attributes&.each { |k, v| sentry_span.set_data(k, v) }
|
129
|
-
|
124
|
+
def parse_span_description(otel_span)
|
130
125
|
op = otel_span.name
|
131
126
|
description = otel_span.name
|
132
127
|
|
@@ -139,9 +134,6 @@ module Sentry
|
|
139
134
|
|
140
135
|
target = otel_span.attributes[SEMANTIC_CONVENTIONS::HTTP_TARGET]
|
141
136
|
description += target if target
|
142
|
-
|
143
|
-
status_code = otel_span.attributes[SEMANTIC_CONVENTIONS::HTTP_STATUS_CODE]
|
144
|
-
sentry_span.set_http_status(status_code) if status_code
|
145
137
|
elsif otel_span.attributes[SEMANTIC_CONVENTIONS::DB_SYSTEM]
|
146
138
|
op = "db"
|
147
139
|
|
@@ -149,9 +141,49 @@ module Sentry
|
|
149
141
|
description = statement if statement
|
150
142
|
end
|
151
143
|
|
144
|
+
[op, description]
|
145
|
+
end
|
146
|
+
|
147
|
+
def update_span_status(sentry_span, otel_span)
|
148
|
+
if (http_status_code = otel_span.attributes[SEMANTIC_CONVENTIONS::HTTP_STATUS_CODE])
|
149
|
+
sentry_span.set_http_status(http_status_code)
|
150
|
+
elsif (status_code = otel_span.status.code)
|
151
|
+
status = [0, 1].include?(status_code) ? 'ok' : 'unknown_error'
|
152
|
+
sentry_span.set_status(status)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
def update_span_with_otel_data(sentry_span, otel_span)
|
157
|
+
update_span_status(sentry_span, otel_span)
|
158
|
+
sentry_span.set_data('otel.kind', otel_span.kind)
|
159
|
+
otel_span.attributes&.each { |k, v| sentry_span.set_data(k, v) }
|
160
|
+
|
161
|
+
op, description = parse_span_description(otel_span)
|
152
162
|
sentry_span.set_op(op)
|
153
163
|
sentry_span.set_description(description)
|
154
164
|
end
|
165
|
+
|
166
|
+
def update_transaction_with_otel_data(transaction, otel_span)
|
167
|
+
update_span_status(transaction, otel_span)
|
168
|
+
transaction.set_context(:otel, otel_context_hash(otel_span))
|
169
|
+
|
170
|
+
op, _ = parse_span_description(otel_span)
|
171
|
+
transaction.set_op(op)
|
172
|
+
transaction.set_name(otel_span.name)
|
173
|
+
end
|
174
|
+
|
175
|
+
def setup_event_processor
|
176
|
+
Sentry.add_global_event_processor do |event, _hint|
|
177
|
+
span_context = ::OpenTelemetry::Trace.current_span.context
|
178
|
+
next event unless span_context.valid?
|
179
|
+
|
180
|
+
sentry_span = @span_map[span_context.hex_span_id]
|
181
|
+
next event unless sentry_span
|
182
|
+
|
183
|
+
event.contexts[:trace] ||= sentry_span.get_trace_context
|
184
|
+
event
|
185
|
+
end
|
186
|
+
end
|
155
187
|
end
|
156
188
|
end
|
157
189
|
end
|
@@ -24,6 +24,6 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
25
|
spec.require_paths = ["lib"]
|
26
26
|
|
27
|
-
spec.add_dependency "sentry-ruby", "~> 5.
|
27
|
+
spec.add_dependency "sentry-ruby", "~> 5.8.0"
|
28
28
|
spec.add_dependency "opentelemetry-sdk", "~> 1.0"
|
29
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sentry-opentelemetry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sentry Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sentry-ruby
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 5.
|
19
|
+
version: 5.8.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 5.
|
26
|
+
version: 5.8.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: opentelemetry-sdk
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|