opentelemetry-instrumentation-mysql2 0.22.0 → 0.24.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: 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