opentelemetry-instrumentation-mysql2 0.26.1 → 0.27.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: 8bb52d41370dd6f755503f63f131a747bb9790f7fb680f863dc4864932c7b5c1
4
- data.tar.gz: f1779dde36425c213453c779d3ffe3cf3cd4f2bc71f2e6f83cce3c143567e505
3
+ metadata.gz: 0ad3ae6b6610cf9d0556d5bf4dceef82d4b3707806a61fb0216042e4aa00d255
4
+ data.tar.gz: 5091b545504f3d953650f5a84d0ff2397852e4b578f3019d7e329c998c4d97b7
5
5
  SHA512:
6
- metadata.gz: 6c880aabf7e508fec4e11b83663319dfb620c890da0e1860d567e548427ad11bdef3811ccdc72d42cca0a056388a1ed87c0620057447492299ca6654c6d8731b
7
- data.tar.gz: ab203d87c0d2d12afa8ba9596ae01ceba00c33802079d87a02f067d22b935795b9516764ff17bf58829ea42c6a0f0eaf54adf2a64ed535051ed9fe88b86903a8
6
+ metadata.gz: 16da6501db3c0b84afc847fc42f7280211c6716a63912a9dff00febb18c75c854348713ceb7fae4a1579ee28f6a02b880e0e2255716c8a3d2297a49a663e686c
7
+ data.tar.gz: f59648d2163a0867a7726ad05bedf61b6dccd47493cdf8bcdafec6ccb85b3e61aaa2c45656281763a7b3787a93787d34490ed05809641ee4668a133615dad83a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Release History: opentelemetry-instrumentation-mysql2
2
2
 
3
+ ### v0.27.0 / 2024-02-15
4
+
5
+ * ADDED: Instrument mysql2 prepare statement
6
+
3
7
  ### v0.26.1 / 2024-02-08
4
8
 
5
9
  * FIXED: Add missing requires for sql-helpers to mysql, pg, and trilogy instrumentation
@@ -14,7 +14,40 @@ module OpenTelemetry
14
14
  # Module to prepend to Mysql2::Client for instrumentation
15
15
  module Client
16
16
  def query(sql, options = {})
17
- 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
18
51
  case config[:db_statement]
19
52
  when :include
20
53
  attributes[SemanticConventions::Trace::DB_STATEMENT] = sql
@@ -24,30 +57,18 @@ module OpenTelemetry
24
57
  sql, obfuscation_limit: config[:obfuscation_limit], adapter: :mysql
25
58
  )
26
59
  end
27
- tracer.in_span(
28
- OpenTelemetry::Helpers::MySQL.database_span_name(
29
- sql,
30
- OpenTelemetry::Instrumentation::Mysql2.attributes[
31
- SemanticConventions::Trace::DB_OPERATION
32
- ],
33
- database_name,
34
- config
35
- ),
36
- attributes: attributes.merge!(OpenTelemetry::Instrumentation::Mysql2.attributes),
37
- kind: :client
38
- ) do
39
- super(sql, options)
40
- end
41
- end
42
60
 
43
- private
61
+ attributes.merge!(OpenTelemetry::Instrumentation::Mysql2.attributes)
62
+ attributes.compact!
63
+ attributes
64
+ end
44
65
 
45
- def database_name
66
+ def _otel_database_name
46
67
  # https://github.com/brianmario/mysql2/blob/ca08712c6c8ea672df658bb25b931fea22555f27/lib/mysql2/client.rb#L78
47
68
  (query_options[:database] || query_options[:dbname] || query_options[:db])&.to_s
48
69
  end
49
70
 
50
- def client_attributes
71
+ def _otel_client_attributes
51
72
  # The client specific attributes can be found via the query_options instance variable
52
73
  # exposed on the mysql2 Client
53
74
  # https://github.com/brianmario/mysql2/blob/ca08712c6c8ea672df658bb25b931fea22555f27/lib/mysql2/client.rb#L25-L26
@@ -59,8 +80,9 @@ module OpenTelemetry
59
80
  SemanticConventions::Trace::NET_PEER_NAME => host,
60
81
  SemanticConventions::Trace::NET_PEER_PORT => port
61
82
  }
62
- attributes[SemanticConventions::Trace::DB_NAME] = database_name if database_name
63
- 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]
64
86
  attributes
65
87
  end
66
88
 
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Mysql2
10
- VERSION = '0.26.1'
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.1
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.1/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.1
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: