opentelemetry-instrumentation-mysql2 0.26.0 → 0.27.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: 8dd5337ce5e46679d577e51b807122cb037299d844ab8405d46c2043d2484931
4
- data.tar.gz: c5df05b92be367a4c4397cfcb9eb76c5b5ca0f4fd0b6ee21d61a7bfafa1f1611
3
+ metadata.gz: 0ad3ae6b6610cf9d0556d5bf4dceef82d4b3707806a61fb0216042e4aa00d255
4
+ data.tar.gz: 5091b545504f3d953650f5a84d0ff2397852e4b578f3019d7e329c998c4d97b7
5
5
  SHA512:
6
- metadata.gz: 8f183aee9dd0938d0c59928cafa9dd146fafaddb10a246b8486e333139abef478decd4fa1cea0c493012ab300c508302446102b15653092ead1e91d6a739e275
7
- data.tar.gz: 4fc278b6756d5f744bf532999da01d95328eca700594e572039c2e51d81df668fc7674b040dbc2d8f350232a3fc267566974d40f393aef35428f1e308dc364be
6
+ metadata.gz: 16da6501db3c0b84afc847fc42f7280211c6716a63912a9dff00febb18c75c854348713ceb7fae4a1579ee28f6a02b880e0e2255716c8a3d2297a49a663e686c
7
+ data.tar.gz: f59648d2163a0867a7726ad05bedf61b6dccd47493cdf8bcdafec6ccb85b3e61aaa2c45656281763a7b3787a93787d34490ed05809641ee4668a133615dad83a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Release History: opentelemetry-instrumentation-mysql2
2
2
 
3
+ ### v0.27.0 / 2024-02-15
4
+
5
+ * ADDED: Instrument mysql2 prepare statement
6
+
7
+ ### v0.26.1 / 2024-02-08
8
+
9
+ * FIXED: Add missing requires for sql-helpers to mysql, pg, and trilogy instrumentation
10
+
3
11
  ### v0.26.0 / 2024-02-08
4
12
 
5
13
  * BREAKING CHANGE: Move shared sql behavior to helper gems
@@ -4,6 +4,9 @@
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
+ require 'opentelemetry-helpers-mysql'
8
+ require 'opentelemetry-helpers-sql-obfuscation'
9
+
7
10
  module OpenTelemetry
8
11
  module Instrumentation
9
12
  module Mysql2
@@ -11,7 +14,40 @@ module OpenTelemetry
11
14
  # Module to prepend to Mysql2::Client for instrumentation
12
15
  module Client
13
16
  def query(sql, options = {})
14
- attributes = client_attributes
17
+ tracer.in_span(
18
+ _otel_span_name(sql),
19
+ attributes: _otel_span_attributes(sql),
20
+ kind: :client
21
+ ) do
22
+ super(sql, options)
23
+ end
24
+ end
25
+
26
+ def prepare(sql)
27
+ tracer.in_span(
28
+ _otel_span_name(sql),
29
+ attributes: _otel_span_attributes(sql),
30
+ kind: :client
31
+ ) do
32
+ super(sql)
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def _otel_span_name(sql)
39
+ OpenTelemetry::Helpers::MySQL.database_span_name(
40
+ sql,
41
+ OpenTelemetry::Instrumentation::Mysql2.attributes[
42
+ SemanticConventions::Trace::DB_OPERATION
43
+ ],
44
+ _otel_database_name,
45
+ config
46
+ )
47
+ end
48
+
49
+ def _otel_span_attributes(sql)
50
+ attributes = _otel_client_attributes
15
51
  case config[:db_statement]
16
52
  when :include
17
53
  attributes[SemanticConventions::Trace::DB_STATEMENT] = sql
@@ -21,30 +57,18 @@ module OpenTelemetry
21
57
  sql, obfuscation_limit: config[:obfuscation_limit], adapter: :mysql
22
58
  )
23
59
  end
24
- tracer.in_span(
25
- OpenTelemetry::Helpers::MySQL.database_span_name(
26
- sql,
27
- OpenTelemetry::Instrumentation::Mysql2.attributes[
28
- SemanticConventions::Trace::DB_OPERATION
29
- ],
30
- database_name,
31
- config
32
- ),
33
- attributes: attributes.merge!(OpenTelemetry::Instrumentation::Mysql2.attributes),
34
- kind: :client
35
- ) do
36
- super(sql, options)
37
- end
38
- end
39
60
 
40
- private
61
+ attributes.merge!(OpenTelemetry::Instrumentation::Mysql2.attributes)
62
+ attributes.compact!
63
+ attributes
64
+ end
41
65
 
42
- def database_name
66
+ def _otel_database_name
43
67
  # https://github.com/brianmario/mysql2/blob/ca08712c6c8ea672df658bb25b931fea22555f27/lib/mysql2/client.rb#L78
44
68
  (query_options[:database] || query_options[:dbname] || query_options[:db])&.to_s
45
69
  end
46
70
 
47
- def client_attributes
71
+ def _otel_client_attributes
48
72
  # The client specific attributes can be found via the query_options instance variable
49
73
  # exposed on the mysql2 Client
50
74
  # https://github.com/brianmario/mysql2/blob/ca08712c6c8ea672df658bb25b931fea22555f27/lib/mysql2/client.rb#L25-L26
@@ -56,8 +80,9 @@ module OpenTelemetry
56
80
  SemanticConventions::Trace::NET_PEER_NAME => host,
57
81
  SemanticConventions::Trace::NET_PEER_PORT => port
58
82
  }
59
- attributes[SemanticConventions::Trace::DB_NAME] = database_name if database_name
60
- attributes[SemanticConventions::Trace::PEER_SERVICE] = config[:peer_service] if config[:peer_service]
83
+
84
+ attributes[SemanticConventions::Trace::DB_NAME] = _otel_database_name
85
+ attributes[SemanticConventions::Trace::PEER_SERVICE] = config[:peer_service]
61
86
  attributes
62
87
  end
63
88
 
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Mysql2
10
- VERSION = '0.26.0'
10
+ VERSION = '0.27.0'
11
11
  end
12
12
  end
13
13
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-instrumentation-mysql2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.0
4
+ version: 0.27.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: 2024-02-08 00:00:00.000000000 Z
11
+ date: 2024-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -255,10 +255,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
255
255
  licenses:
256
256
  - Apache-2.0
257
257
  metadata:
258
- changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-mysql2/0.26.0/file/CHANGELOG.md
258
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-mysql2/0.27.0/file/CHANGELOG.md
259
259
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/mysql2
260
260
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
261
- documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-mysql2/0.26.0
261
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-mysql2/0.27.0
262
262
  post_install_message:
263
263
  rdoc_options: []
264
264
  require_paths: