opentelemetry-instrumentation-graphql 0.21.0 → 0.22.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5015100d46cc0f99c590360df33781cc842d904c34bac8bb03775bcb92034211
|
4
|
+
data.tar.gz: 16dae74e81ea06bc994c0f974a963be0daed52a209b4db2dc6c2388f6e8f88be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4afdb500fe0423832111b88a75554bb271ba5c478a4dbd7786c054e8110b69cb2f0903f1198a0fc90cf76c9d5b51a5a2bb24054ce0d54069b51a61f299acaa52
|
7
|
+
data.tar.gz: bdd7284be3c68c61791735fe2ab695dccc74a926a4bc2d91ca322330cb96716056093cf7b27f3037df45cfac7660bf8e19f6e94aec5e2c65cc7eef48550ef939
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Release History: opentelemetry-instrumentation-graphql
|
2
2
|
|
3
|
+
### v0.22.0 / 2023-01-27
|
4
|
+
|
5
|
+
* ADDED: Normalize GraphQL span names for easier aggregation analysis
|
6
|
+
|
7
|
+
### v0.21.1 / 2023-01-14
|
8
|
+
|
9
|
+
* DOCS: Fix gem homepage
|
10
|
+
* DOCS: More gem documentation fixes
|
11
|
+
|
3
12
|
### v0.21.0 / 2022-07-12
|
4
13
|
|
5
14
|
* FIXED: Use semantic graphql attribute names
|
data/README.md
CHANGED
@@ -40,7 +40,12 @@ OpenTelemetry::SDK.configure do |c|
|
|
40
40
|
# enable_platform_authorized maps to the authorized and authorized_lazy keys
|
41
41
|
enable_platform_authorized: false,
|
42
42
|
# enable_platform_resolve_type maps to the resolve_type and resolve_type_lazy keys
|
43
|
-
enable_platform_resolve_type: false
|
43
|
+
enable_platform_resolve_type: false,
|
44
|
+
|
45
|
+
# Controls if platform tracing (field/authorized/resolve_type)
|
46
|
+
# should use the legacy span names (e.g. "MyType.myField") or the
|
47
|
+
# new normalized span names (e.g. "graphql.execute_field").
|
48
|
+
legacy_platform_span_names: false
|
44
49
|
}
|
45
50
|
end
|
46
51
|
```
|
@@ -11,6 +11,10 @@ module OpenTelemetry
|
|
11
11
|
module GraphQL
|
12
12
|
# The Instrumentation class contains logic to detect and install the GraphQL instrumentation
|
13
13
|
class Instrumentation < OpenTelemetry::Instrumentation::Base
|
14
|
+
compatible do
|
15
|
+
gem_version < Gem::Version.new('3.0.0')
|
16
|
+
end
|
17
|
+
|
14
18
|
install do |config|
|
15
19
|
require_dependencies
|
16
20
|
install_tracer(config)
|
@@ -31,6 +35,11 @@ module OpenTelemetry
|
|
31
35
|
# The enable_platform_resolve_type key expects a boolean value,
|
32
36
|
# and enables the tracing of "resolve_type" and "resolve_type_lazy".
|
33
37
|
#
|
38
|
+
# The legacy_platform_span_names key expects a boolean value,
|
39
|
+
# and controls if platform tracing (field/authorized/resolve_type)
|
40
|
+
# should use the legacy span names (e.g. "MyType.myField") or the
|
41
|
+
# new normalized span names (e.g. "graphql.execute_field").
|
42
|
+
#
|
34
43
|
# The schemas key expects an array of Schemas, and is used to specify
|
35
44
|
# which schemas are to be instrumented. If this value is not supplied
|
36
45
|
# the default behaviour is to instrument all schemas.
|
@@ -38,9 +47,14 @@ module OpenTelemetry
|
|
38
47
|
option :enable_platform_field, default: false, validate: :boolean
|
39
48
|
option :enable_platform_authorized, default: false, validate: :boolean
|
40
49
|
option :enable_platform_resolve_type, default: false, validate: :boolean
|
50
|
+
option :legacy_platform_span_names, default: false, validate: :boolean
|
41
51
|
|
42
52
|
private
|
43
53
|
|
54
|
+
def gem_version
|
55
|
+
Gem::Version.new(::GraphQL::VERSION)
|
56
|
+
end
|
57
|
+
|
44
58
|
def require_dependencies
|
45
59
|
require_relative 'tracers/graphql_tracer'
|
46
60
|
end
|
@@ -24,12 +24,12 @@ module OpenTelemetry
|
|
24
24
|
'execute_multiplex' => 'graphql.execute_multiplex'
|
25
25
|
}
|
26
26
|
|
27
|
-
def platform_trace(platform_key, key, data)
|
27
|
+
def platform_trace(platform_key, key, data) # rubocop:disable Metrics/CyclomaticComplexity
|
28
28
|
return yield if platform_key.nil?
|
29
29
|
|
30
30
|
tracer.in_span(platform_key, attributes: attributes_for(key, data)) do |span|
|
31
31
|
yield.tap do |response|
|
32
|
-
errors = response[:errors]&.compact&.map
|
32
|
+
errors = response[:errors]&.compact&.map(&:to_h)&.to_json if key == 'validate'
|
33
33
|
unless errors.nil?
|
34
34
|
span.add_event(
|
35
35
|
'graphql.validation.error',
|
@@ -45,19 +45,31 @@ module OpenTelemetry
|
|
45
45
|
def platform_field_key(type, field)
|
46
46
|
return unless config[:enable_platform_field]
|
47
47
|
|
48
|
-
|
48
|
+
if config[:legacy_platform_span_names]
|
49
|
+
"#{type.graphql_name}.#{field.graphql_name}"
|
50
|
+
else
|
51
|
+
'graphql.execute_field'
|
52
|
+
end
|
49
53
|
end
|
50
54
|
|
51
55
|
def platform_authorized_key(type)
|
52
56
|
return unless config[:enable_platform_authorized]
|
53
57
|
|
54
|
-
|
58
|
+
if config[:legacy_platform_span_names]
|
59
|
+
"#{type.graphql_name}.authorized"
|
60
|
+
else
|
61
|
+
'graphql.authorized'
|
62
|
+
end
|
55
63
|
end
|
56
64
|
|
57
65
|
def platform_resolve_type_key(type)
|
58
66
|
return unless config[:enable_platform_resolve_type]
|
59
67
|
|
60
|
-
|
68
|
+
if config[:legacy_platform_span_names]
|
69
|
+
"#{type.graphql_name}.resolve_type"
|
70
|
+
else
|
71
|
+
'graphql.resolve_type'
|
72
|
+
end
|
61
73
|
end
|
62
74
|
|
63
75
|
private
|
@@ -70,9 +82,19 @@ module OpenTelemetry
|
|
70
82
|
GraphQL::Instrumentation.instance.config
|
71
83
|
end
|
72
84
|
|
73
|
-
def attributes_for(key, data)
|
85
|
+
def attributes_for(key, data) # rubocop:disable Metrics/CyclomaticComplexity
|
74
86
|
attributes = {}
|
75
87
|
case key
|
88
|
+
when 'execute_field', 'execute_field_lazy'
|
89
|
+
attributes['graphql.field.parent'] = data[:owner]&.graphql_name # owner is the concrete type, not interface
|
90
|
+
attributes['graphql.field.name'] = data[:field]&.graphql_name
|
91
|
+
attributes['graphql.lazy'] = key == 'execute_field_lazy'
|
92
|
+
when 'authorized', 'authorized_lazy'
|
93
|
+
attributes['graphql.type.name'] = data[:type]&.graphql_name
|
94
|
+
attributes['graphql.lazy'] = key == 'authorized_lazy'
|
95
|
+
when 'resolve_type', 'resolve_type_lazy'
|
96
|
+
attributes['graphql.type.name'] = data[:type]&.graphql_name
|
97
|
+
attributes['graphql.lazy'] = key == 'resolve_type_lazy'
|
76
98
|
when 'execute_query'
|
77
99
|
attributes['graphql.operation.name'] = data[:query].selected_operation_name if data[:query].selected_operation_name
|
78
100
|
attributes['graphql.operation.type'] = data[:query].selected_operation.operation_type
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opentelemetry-instrumentation-graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenTelemetry Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opentelemetry-api
|
@@ -56,30 +56,36 @@ dependencies:
|
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '2.4'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '2.4'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: graphql
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.9.0
|
76
|
+
- - "<"
|
74
77
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
78
|
+
version: 3.0.0
|
76
79
|
type: :development
|
77
80
|
prerelease: false
|
78
81
|
version_requirements: !ruby/object:Gem::Requirement
|
79
82
|
requirements:
|
80
|
-
- - "
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.9.0
|
86
|
+
- - "<"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
88
|
+
version: 3.0.0
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: minitest
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,28 +134,28 @@ dependencies:
|
|
128
134
|
requirements:
|
129
135
|
- - "~>"
|
130
136
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
137
|
+
version: '13.0'
|
132
138
|
type: :development
|
133
139
|
prerelease: false
|
134
140
|
version_requirements: !ruby/object:Gem::Requirement
|
135
141
|
requirements:
|
136
142
|
- - "~>"
|
137
143
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
144
|
+
version: '13.0'
|
139
145
|
- !ruby/object:Gem::Dependency
|
140
146
|
name: rubocop
|
141
147
|
requirement: !ruby/object:Gem::Requirement
|
142
148
|
requirements:
|
143
149
|
- - "~>"
|
144
150
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
151
|
+
version: 1.41.1
|
146
152
|
type: :development
|
147
153
|
prerelease: false
|
148
154
|
version_requirements: !ruby/object:Gem::Requirement
|
149
155
|
requirements:
|
150
156
|
- - "~>"
|
151
157
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
158
|
+
version: 1.41.1
|
153
159
|
- !ruby/object:Gem::Dependency
|
154
160
|
name: simplecov
|
155
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -223,14 +229,14 @@ files:
|
|
223
229
|
- lib/opentelemetry/instrumentation/graphql/instrumentation.rb
|
224
230
|
- lib/opentelemetry/instrumentation/graphql/tracers/graphql_tracer.rb
|
225
231
|
- lib/opentelemetry/instrumentation/graphql/version.rb
|
226
|
-
homepage: https://github.com/open-telemetry/opentelemetry-contrib
|
232
|
+
homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
|
227
233
|
licenses:
|
228
234
|
- Apache-2.0
|
229
235
|
metadata:
|
230
|
-
changelog_uri: https://
|
236
|
+
changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-graphql/0.22.0/file/CHANGELOG.md
|
231
237
|
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/graphql
|
232
238
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
|
233
|
-
documentation_uri: https://
|
239
|
+
documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-graphql/0.22.0
|
234
240
|
post_install_message:
|
235
241
|
rdoc_options: []
|
236
242
|
require_paths:
|