opentelemetry-instrumentation-pg 0.21.0 → 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c17d678538a40a8e89380dfd35e69c42ca123214469f2b9f1d0acfff40b56053
4
- data.tar.gz: 2cb6540eee8ce5308f2403a22f84e11262f4db768face759a1459960795822e0
3
+ metadata.gz: d58f12ed858f82af3aa55e4c2962706477dcfcb72bfc4d16daab6366dc1abeee
4
+ data.tar.gz: d00d8d3ada02014905b0c91621f69734e859d27ad01f8d7b097ce4ce89eb70dc
5
5
  SHA512:
6
- metadata.gz: 2aff8b3172336c6835fe619fc008ec9eaa3ec1a8d80adec949b199fc8dd21364a6ffd97d4410f3bc4dfa009820c519b9ce0e5ba69ffe5a267bc4bfa203046017
7
- data.tar.gz: 5dcef18383237d99a30f6769cf9f49b34794eb7acca720fbb5fc56b8164b22506c3d1891e09b584554b5a5414ca2788e0568d7b8c05f6cafee76a985a4c7c08e
6
+ metadata.gz: f2478f862fa99d49340c803410bca43091a26dd02bb522090eb405be01ae5855b2cbe8c57836d6c244e8aa198b4ece17e60dc6bf12116c10abde250d91e4fb2e
7
+ data.tar.gz: 83494bdc37be6ae03813c323946b56ad5f007759d0db96971a3813f013403edd4535f80f7c2f610329b5c4b119bdbf5e9cc038323ff2ef4c13763bfc0d0947ba
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Release History: opentelemetry-instrumentation-pg
2
2
 
3
+ ### v0.22.0 / 2022-10-04
4
+
5
+ * ADDED: Add `with_attributes` context propagation for PG instrumentation
6
+
3
7
  ### v0.21.0 / 2022-06-09
4
8
 
5
9
  * Upgrading Base dependency version
data/README.md CHANGED
@@ -30,6 +30,17 @@ OpenTelemetry::SDK.configure do |c|
30
30
  end
31
31
  ```
32
32
 
33
+ The `PG` instrumentation allows the user to supply additional attributes via the `with_attributes` method. This makes it possible to supply additional attributes on PG spans. Attributes supplied in `with_attributes` supersede those automatically generated within `PG`'s automatic instrumentation. If you supply a `db.statement` attribute in `with_attributes`, this library's `:db_statement` configuration will not be applied.
34
+
35
+ ```ruby
36
+ require 'opentelemetry/instrumentation/pg'
37
+
38
+ conn = PG::Connection.open(host: "localhost", user: "root", dbname: "postgres")
39
+ OpenTelemetry::Instrumentation::PG.with_attributes('pizzatoppings' => 'mushrooms') do
40
+ conn.exec("SELECT 1")
41
+ end
42
+ ```
43
+
33
44
  ### Configuration options
34
45
 
35
46
  ```ruby
@@ -49,7 +60,7 @@ end
49
60
 
50
61
  ## Examples
51
62
 
52
- An example of usage can be seen in [`example/pg.rb`](https://github.com/open-telemetry/opentelemetry-ruby/blob/main/instrumentation/pg/example/pg.rb).
63
+ An example of usage can be seen in [`example/pg.rb`](https://github.com/open-telemetry/opentelemetry-ruby-contrib/blob/main/instrumentation/pg/example/pg.rb).
53
64
 
54
65
  ## How can I get involved?
55
66
 
@@ -64,7 +75,7 @@ The `opentelemetry-instrumentation-pg` gem is distributed under the Apache 2.0 l
64
75
  [pg-home]: https://github.com/ged/ruby-pg
65
76
  [bundler-home]: https://bundler.io
66
77
  [repo-github]: https://github.com/open-telemetry/opentelemetry-ruby
67
- [license-github]: https://github.com/open-telemetry/opentelemetry-ruby/blob/main/LICENSE
78
+ [license-github]: https://github.com/open-telemetry/opentelemetry-ruby-contrib/blob/main/LICENSE
68
79
  [ruby-sig]: https://github.com/open-telemetry/community#ruby-sig
69
80
  [community-meetings]: https://github.com/open-telemetry/community#community-meetings
70
81
  [ruby-gitter]: https://gitter.im/open-telemetry/opentelemetry-ruby
@@ -66,7 +66,7 @@ module OpenTelemetry
66
66
  # But, getting that metric in line would force us over the
67
67
  # module size limit! We can't win here unless we want to start
68
68
  # abstracting things into a million pieces.
69
- def span_attrs(kind, *args) # rubocop:disable Metrics/AbcSize
69
+ def span_attrs(kind, *args)
70
70
  if kind == :query
71
71
  operation = extract_operation(args[0])
72
72
  sql = obfuscate_sql(args[0]).to_s
@@ -85,6 +85,7 @@ module OpenTelemetry
85
85
 
86
86
  attrs = { 'db.operation' => validated_operation(operation), 'db.postgresql.prepared_statement_name' => statement_name }
87
87
  attrs['db.statement'] = sql unless config[:db_statement] == :omit
88
+ attrs.merge!(OpenTelemetry::Instrumentation::PG.attributes)
88
89
  attrs.reject! { |_, v| v.nil? }
89
90
 
90
91
  [span_name(operation), client_attributes.merge(attrs)]
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module PG
10
- VERSION = '0.21.0'
10
+ VERSION = '0.22.0'
11
11
  end
12
12
  end
13
13
  end
@@ -11,6 +11,35 @@ module OpenTelemetry
11
11
  module Instrumentation
12
12
  # Contains the OpenTelemetry instrumentation for the Pg gem
13
13
  module PG
14
+ extend self
15
+
16
+ CURRENT_ATTRIBUTES_KEY = Context.create_key('pg-attributes-hash')
17
+
18
+ private_constant :CURRENT_ATTRIBUTES_KEY
19
+
20
+ # Returns the attributes hash representing the postgres client context found
21
+ # in the optional context or the current context if none is provided.
22
+ #
23
+ # @param [optional Context] context The context to lookup the current
24
+ # attributes hash. Defaults to Context.current
25
+ def attributes(context = nil)
26
+ context ||= Context.current
27
+ context.value(CURRENT_ATTRIBUTES_KEY) || {}
28
+ end
29
+
30
+ # Activates/deactivates the merged attributes hash within the current Context,
31
+ # which makes the "current attributes hash" available implicitly.
32
+ #
33
+ # On exit, the attributes hash that was active before calling this method
34
+ # will be reactivated.
35
+ #
36
+ # @param [Span] span the span to activate
37
+ # @yield [Hash, Context] yields attributes hash and a context containing the
38
+ # attributes hash to the block.
39
+ def with_attributes(attributes_hash)
40
+ attributes_hash = attributes.merge(attributes_hash)
41
+ Context.with_value(CURRENT_ATTRIBUTES_KEY, attributes_hash) { |c, h| yield h, c }
42
+ end
14
43
  end
15
44
  end
16
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-instrumentation-pg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.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: 2022-06-09 00:00:00.000000000 Z
11
+ date: 2022-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 0.73.0
173
+ version: 1.3.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 0.73.0
180
+ version: 1.3.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: simplecov
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -239,14 +239,14 @@ files:
239
239
  - lib/opentelemetry/instrumentation/pg/lru_cache.rb
240
240
  - lib/opentelemetry/instrumentation/pg/patches/connection.rb
241
241
  - lib/opentelemetry/instrumentation/pg/version.rb
242
- homepage: https://github.com/open-telemetry/opentelemetry-ruby
242
+ homepage: https://github.com/open-telemetry/opentelemetry-contrib
243
243
  licenses:
244
244
  - Apache-2.0
245
245
  metadata:
246
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-pg/v0.21.0/file.CHANGELOG.html
247
- source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/instrumentation/pg
248
- bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
249
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-instrumentation-pg/v0.21.0
246
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby-contrib/opentelemetry-instrumentation-pg/v0.22.0/file.CHANGELOG.html
247
+ source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/pg
248
+ bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
249
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby-contrib/opentelemetry-instrumentation-pg/v0.22.0
250
250
  post_install_message:
251
251
  rdoc_options: []
252
252
  require_paths: