sentry-opentelemetry 5.7.0 → 5.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|