opentelemetry-instrumentation-mysql2 0.22.0 → 0.24.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: 139dddefaff180304528b83c6fe468bc16334d8d79b9f3ce3008a341aec4c7fc
4
- data.tar.gz: 22b7924ecb2b9e33404865a13bb755ecfda62ee2e90a5a62fc24df0530a971ac
3
+ metadata.gz: e5556a962e40c18ff1e4c02618b9772bb6a9708bbcfa4867c62924118bfdf1de
4
+ data.tar.gz: 856f5881c0c843902bf79b38969f9dc20e9286719ebccde33c4155a2f4b06e54
5
5
  SHA512:
6
- metadata.gz: b632dd330fd5846e6d500990a8e38629e62b91040ab2f39f1d52d10a145af92076ee4ef6d2e8d10fb5decace8858d02cc070b256212f70cbb6d858bfa062b50a
7
- data.tar.gz: b71616e71765cc3d1fcdb8a987db447e6f58511ef53a491fe7b377746d62880a8e178b93d01d10a6b01c3d7c4d1d955d48fb6e8cdec1b0371ed7b02348c4a47a
6
+ metadata.gz: 36a64234a88f39e07e957721e434633db8636c86467a457fe298492100c9c36f465b37aa36ee4f6a7b37d3747bb1df7c338077514b27e41f867697e19f1dda78
7
+ data.tar.gz: 6c8f6ffa8a510838c2c559da473b57edd7024d21696bcc143a8bfad6eb6ccba86e021a11cb6b8e9a6deee56ee4dab711274685a3e6bd3792ac6b7fa7e861e44c
data/CHANGELOG.md CHANGED
@@ -1,22 +1,33 @@
1
1
  # Release History: opentelemetry-instrumentation-mysql2
2
2
 
3
+ ### v0.24.0 / 2023-05-25
4
+
5
+ * ADDED: Add config[:obfuscation_limit] to pg and mysql2
6
+
7
+ ### v0.23.0 / 2023-04-17
8
+
9
+ * BREAKING CHANGE: Drop support for EoL Ruby 2.7
10
+
11
+ * ADDED: Drop support for EoL Ruby 2.7
12
+ * FIXED: Ensure encoding errors handled during SQL obfuscation for Trilogy
13
+
3
14
  ### v0.22.0 / 2023-01-14
4
15
 
5
- * BREAKING CHANGE: Removed deprecated instrumentation options
16
+ * BREAKING CHANGE: Removed deprecated instrumentation options
6
17
 
7
- * ADDED: Add option to configure span name
8
- * ADDED: Removed deprecated instrumentation options
9
- * DOCS: Fix gem homepage
10
- * DOCS: More gem documentation fixes
18
+ * ADDED: Add option to configure span name
19
+ * ADDED: Removed deprecated instrumentation options
20
+ * DOCS: Fix gem homepage
21
+ * DOCS: More gem documentation fixes
11
22
 
12
23
  ### v0.21.1 / 2022-10-26
13
24
 
14
- * FIXED: Handle encoding errors in mysql obfuscation
25
+ * FIXED: Handle encoding errors in mysql obfuscation
15
26
 
16
27
  ### v0.21.0 / 2022-06-09
17
28
 
18
29
  * Upgrading Base dependency version
19
- * FIXED: Broken test file requirements
30
+ * FIXED: Broken test file requirements
20
31
 
21
32
  ### v0.20.1 / 2022-05-03
22
33
 
@@ -24,7 +35,7 @@
24
35
 
25
36
  ### v0.20.0 / 2021-12-01
26
37
 
27
- * ADDED: Add default options config helper + env var config option support
38
+ * ADDED: Add default options config helper + env var config option support
28
39
 
29
40
  ### v0.19.1 / 2021-09-29
30
41
 
@@ -32,11 +43,11 @@
32
43
 
33
44
  ### v0.19.0 / 2021-08-12
34
45
 
35
- * BREAKING CHANGE: Add option for db.statement
46
+ * BREAKING CHANGE: Add option for db.statement
36
47
 
37
- * ADDED: Add option for db.statement
38
- * DOCS: Update docs to rely more on environment variable configuration
39
- * DOCS: Move to using new db_statement
48
+ * ADDED: Add option for db.statement
49
+ * DOCS: Update docs to rely more on environment variable configuration
50
+ * DOCS: Move to using new db_statement
40
51
 
41
52
  ### v0.18.1 / 2021-06-23
42
53
 
@@ -22,6 +22,7 @@ module OpenTelemetry
22
22
  option :peer_service, default: nil, validate: :string
23
23
  option :db_statement, default: :include, validate: %I[omit include obfuscate]
24
24
  option :span_name, default: :statement_type, validate: %I[statement_type db_name db_operation_and_name]
25
+ option :obfuscation_limit, default: 2000, validate: :integer
25
26
 
26
27
  private
27
28
 
@@ -30,6 +30,7 @@ module OpenTelemetry
30
30
 
31
31
  QUERY_NAME_RE = Regexp.new("^(#{QUERY_NAMES.join('|')})", Regexp::IGNORECASE)
32
32
 
33
+ # From: https://github.com/newrelic/newrelic-ruby-agent/blob/0235b288d85b8bc795bdc1a24621dd9f84cfef45/lib/new_relic/agent/database/obfuscation_helpers.rb#L9-L34
33
34
  COMPONENTS_REGEX_MAP = {
34
35
  single_quotes: /'(?:[^']|'')*?(?:\\'.*|'(?!'))/,
35
36
  double_quotes: /"(?:[^"]|"")*?(?:\\".*|"(?!"))/,
@@ -54,9 +55,9 @@ module OpenTelemetry
54
55
  attributes = client_attributes
55
56
  case config[:db_statement]
56
57
  when :include
57
- attributes['db.statement'] = sql
58
+ attributes[SemanticConventions::Trace::DB_STATEMENT] = sql
58
59
  when :obfuscate
59
- attributes['db.statement'] = obfuscate_sql(sql)
60
+ attributes[SemanticConventions::Trace::DB_STATEMENT] = obfuscate_sql(sql)
60
61
  end
61
62
  tracer.in_span(
62
63
  database_span_name(sql),
@@ -70,15 +71,17 @@ module OpenTelemetry
70
71
  private
71
72
 
72
73
  def obfuscate_sql(sql)
73
- if sql.size > 2000
74
- 'SQL query too large to remove sensitive data ...'
74
+ if sql.size > config[:obfuscation_limit]
75
+ truncated_sql = sql[..sql.index(generated_mysql_regex) - 1]
76
+ truncated_sql + "...\nSQL truncated (> #{config[:obfuscation_limit]} characters)"
75
77
  else
76
78
  obfuscated = OpenTelemetry::Common::Utilities.utf8_encode(sql, binary: true)
77
79
  obfuscated = obfuscated.gsub(generated_mysql_regex, '?')
78
80
  obfuscated = 'Failed to obfuscate SQL query - quote characters remained after obfuscation' if detect_unmatched_pairs(obfuscated)
79
81
  obfuscated
80
82
  end
81
- rescue StandardError
83
+ rescue StandardError => e
84
+ OpenTelemetry.handle_error(message: 'Failed to obfuscate SQL', exception: e)
82
85
  'OpenTelemetry error: failed to obfuscate sql'
83
86
  end
84
87
 
@@ -102,7 +105,7 @@ module OpenTelemetry
102
105
  when :db_name
103
106
  database_name
104
107
  when :db_operation_and_name
105
- op = OpenTelemetry::Instrumentation::Mysql2.attributes['db.operation']
108
+ op = OpenTelemetry::Instrumentation::Mysql2.attributes[SemanticConventions::Trace::DB_OPERATION]
106
109
  name = database_name
107
110
  if op && name
108
111
  "#{op} #{name}"
@@ -127,12 +130,12 @@ module OpenTelemetry
127
130
  port = query_options[:port].to_s
128
131
 
129
132
  attributes = {
130
- 'db.system' => 'mysql',
131
- 'net.peer.name' => host,
132
- 'net.peer.port' => port
133
+ SemanticConventions::Trace::DB_SYSTEM => 'mysql',
134
+ SemanticConventions::Trace::NET_PEER_NAME => host,
135
+ SemanticConventions::Trace::NET_PEER_PORT => port
133
136
  }
134
- attributes['db.name'] = database_name if database_name
135
- attributes['peer.service'] = config[:peer_service] if config[:peer_service]
137
+ attributes[SemanticConventions::Trace::DB_NAME] = database_name if database_name
138
+ attributes[SemanticConventions::Trace::PEER_SERVICE] = config[:peer_service] if config[:peer_service]
136
139
  attributes
137
140
  end
138
141
 
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Instrumentation
9
9
  module Mysql2
10
- VERSION = '0.22.0'
10
+ VERSION = '0.24.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.22.0
4
+ version: 0.24.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: 2023-01-14 00:00:00.000000000 Z
11
+ date: 2023-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.21.0
33
+ version: 0.22.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.21.0
40
+ version: 0.22.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: appraisal
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -112,16 +112,16 @@ dependencies:
112
112
  name: opentelemetry-test-helpers
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: '0.3'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: '0.3'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: pry
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.41.1
159
+ version: 1.50.2
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 1.41.1
166
+ version: 1.50.2
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: simplecov
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -227,10 +227,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
227
227
  licenses:
228
228
  - Apache-2.0
229
229
  metadata:
230
- changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-mysql2/0.22.0/file/CHANGELOG.md
230
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-mysql2/0.24.0/file/CHANGELOG.md
231
231
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/mysql2
232
232
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
233
- documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-mysql2/0.22.0
233
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-instrumentation-mysql2/0.24.0
234
234
  post_install_message:
235
235
  rdoc_options: []
236
236
  require_paths:
@@ -239,14 +239,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
239
239
  requirements:
240
240
  - - ">="
241
241
  - !ruby/object:Gem::Version
242
- version: 2.6.0
242
+ version: '3.0'
243
243
  required_rubygems_version: !ruby/object:Gem::Requirement
244
244
  requirements:
245
245
  - - ">="
246
246
  - !ruby/object:Gem::Version
247
247
  version: '0'
248
248
  requirements: []
249
- rubygems_version: 3.1.6
249
+ rubygems_version: 3.2.33
250
250
  signing_key:
251
251
  specification_version: 4
252
252
  summary: Mysql2 instrumentation for the OpenTelemetry framework