sqreen 1.21.0.beta3 → 1.21.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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -15
  3. data/lib/sqreen/condition_evaluator.rb +5 -6
  4. data/lib/sqreen/conditionable.rb +6 -24
  5. data/lib/sqreen/ecosystem.rb +29 -2
  6. data/lib/sqreen/ecosystem/databases/database_connection_data.rb +23 -0
  7. data/lib/sqreen/ecosystem/databases/mongo.rb +39 -0
  8. data/lib/sqreen/ecosystem/databases/mysql.rb +54 -0
  9. data/lib/sqreen/ecosystem/databases/postgres.rb +51 -0
  10. data/lib/sqreen/ecosystem/databases/redis.rb +36 -0
  11. data/lib/sqreen/ecosystem/exception_reporting.rb +4 -2
  12. data/lib/sqreen/ecosystem/messaging/bunny.rb +61 -0
  13. data/lib/sqreen/ecosystem/messaging/kafka.rb +70 -0
  14. data/lib/sqreen/ecosystem/messaging/kinesis.rb +66 -0
  15. data/lib/sqreen/ecosystem/messaging/sqs.rb +68 -0
  16. data/lib/sqreen/ecosystem/module_api/message_producer.rb +9 -3
  17. data/lib/sqreen/ecosystem/module_api/tracing/consumer_data.rb +13 -0
  18. data/lib/sqreen/ecosystem/module_api/tracing/messaging_data.rb +35 -0
  19. data/lib/sqreen/ecosystem/module_api/tracing/producer_data.rb +13 -0
  20. data/lib/sqreen/ecosystem/module_registry.rb +5 -1
  21. data/lib/sqreen/ecosystem/tracing/modules/client.rb +7 -3
  22. data/lib/sqreen/ecosystem/tracing/modules/consumer.rb +35 -0
  23. data/lib/sqreen/ecosystem/tracing/modules/determine_ip.rb +28 -0
  24. data/lib/sqreen/ecosystem/tracing/modules/producer.rb +35 -0
  25. data/lib/sqreen/ecosystem/tracing/signals/tracing_consumer.rb +56 -0
  26. data/lib/sqreen/ecosystem/tracing/signals/tracing_producer.rb +56 -0
  27. data/lib/sqreen/ecosystem_integration.rb +1 -7
  28. data/lib/sqreen/ecosystem_integration/around_callbacks.rb +10 -20
  29. data/lib/sqreen/ecosystem_integration/instrumentation_service.rb +4 -8
  30. data/lib/sqreen/graft/call.rb +1 -21
  31. data/lib/sqreen/graft/hook.rb +75 -83
  32. data/lib/sqreen/kit/signals/specialized/sqreen_exception.rb +2 -0
  33. data/lib/sqreen/metrics.rb +0 -1
  34. data/lib/sqreen/rules/custom_error_cb.rb +1 -1
  35. data/lib/sqreen/rules/rule_cb.rb +2 -2
  36. data/lib/sqreen/runner.rb +12 -27
  37. data/lib/sqreen/version.rb +1 -1
  38. data/lib/sqreen/weave/budget.rb +14 -3
  39. data/lib/sqreen/weave/legacy/instrumentation.rb +94 -145
  40. metadata +22 -23
  41. data/lib/sqreen/ecosystem/redis/redis_connection.rb +0 -43
  42. data/lib/sqreen/metrics/req_detailed.rb +0 -41
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqreen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.21.0.beta3
4
+ version: 1.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sqreen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-14 00:00:00.000000000 Z
11
+ date: 2020-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqreen-backport
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.6.1.0.0
69
- - !ruby/object:Gem::Dependency
70
- name: sq_detailed_metrics
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.1.0
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.1.0
83
69
  description: Sqreen is a SaaS based Application protection and monitoring platform
84
70
  that integrates directly into your Ruby applications. Learn more at https://sqreen.com.
85
71
  email: contact@sqreen.com
@@ -138,11 +124,20 @@ files:
138
124
  - lib/sqreen/dependency/sinatra.rb
139
125
  - lib/sqreen/deprecation.rb
140
126
  - lib/sqreen/ecosystem.rb
127
+ - lib/sqreen/ecosystem/databases/database_connection_data.rb
128
+ - lib/sqreen/ecosystem/databases/mongo.rb
129
+ - lib/sqreen/ecosystem/databases/mysql.rb
130
+ - lib/sqreen/ecosystem/databases/postgres.rb
131
+ - lib/sqreen/ecosystem/databases/redis.rb
141
132
  - lib/sqreen/ecosystem/dispatch_table.rb
142
133
  - lib/sqreen/ecosystem/exception_reporting.rb
143
134
  - lib/sqreen/ecosystem/http/net_http.rb
144
135
  - lib/sqreen/ecosystem/http/rack_request.rb
145
136
  - lib/sqreen/ecosystem/loggable.rb
137
+ - lib/sqreen/ecosystem/messaging/bunny.rb
138
+ - lib/sqreen/ecosystem/messaging/kafka.rb
139
+ - lib/sqreen/ecosystem/messaging/kinesis.rb
140
+ - lib/sqreen/ecosystem/messaging/sqs.rb
146
141
  - lib/sqreen/ecosystem/module_api.rb
147
142
  - lib/sqreen/ecosystem/module_api/event_listener.rb
148
143
  - lib/sqreen/ecosystem/module_api/instrumentation.rb
@@ -150,16 +145,23 @@ files:
150
145
  - lib/sqreen/ecosystem/module_api/signal_producer.rb
151
146
  - lib/sqreen/ecosystem/module_api/tracing.rb
152
147
  - lib/sqreen/ecosystem/module_api/tracing/client_data.rb
148
+ - lib/sqreen/ecosystem/module_api/tracing/consumer_data.rb
149
+ - lib/sqreen/ecosystem/module_api/tracing/messaging_data.rb
150
+ - lib/sqreen/ecosystem/module_api/tracing/producer_data.rb
153
151
  - lib/sqreen/ecosystem/module_api/tracing/server_data.rb
154
152
  - lib/sqreen/ecosystem/module_api/tracing_id_generation.rb
155
153
  - lib/sqreen/ecosystem/module_api/transaction_storage.rb
156
154
  - lib/sqreen/ecosystem/module_registry.rb
157
- - lib/sqreen/ecosystem/redis/redis_connection.rb
158
155
  - lib/sqreen/ecosystem/tracing/modules/client.rb
156
+ - lib/sqreen/ecosystem/tracing/modules/consumer.rb
157
+ - lib/sqreen/ecosystem/tracing/modules/determine_ip.rb
158
+ - lib/sqreen/ecosystem/tracing/modules/producer.rb
159
159
  - lib/sqreen/ecosystem/tracing/modules/server.rb
160
160
  - lib/sqreen/ecosystem/tracing/sampler.rb
161
161
  - lib/sqreen/ecosystem/tracing/sampling_configuration.rb
162
162
  - lib/sqreen/ecosystem/tracing/signals/tracing_client.rb
163
+ - lib/sqreen/ecosystem/tracing/signals/tracing_consumer.rb
164
+ - lib/sqreen/ecosystem/tracing/signals/tracing_producer.rb
163
165
  - lib/sqreen/ecosystem/tracing/signals/tracing_server.rb
164
166
  - lib/sqreen/ecosystem/tracing_broker.rb
165
167
  - lib/sqreen/ecosystem/tracing_id_setup.rb
@@ -222,7 +224,6 @@ files:
222
224
  - lib/sqreen/metrics/base.rb
223
225
  - lib/sqreen/metrics/binning.rb
224
226
  - lib/sqreen/metrics/collect.rb
225
- - lib/sqreen/metrics/req_detailed.rb
226
227
  - lib/sqreen/metrics/sum.rb
227
228
  - lib/sqreen/metrics_store.rb
228
229
  - lib/sqreen/metrics_store/already_registered_metric.rb
@@ -326,9 +327,7 @@ metadata:
326
327
  changelog_uri: https://docs.sqreen.com/ruby/release-notes/
327
328
  source_code_uri: https://github.com/sqreen/ruby-agent
328
329
  bug_tracker_uri: https://github.com/sqreen/ruby-agent/issues
329
- post_install_message: |2
330
- This is a Sqreen beta release and may not work in all situations.
331
- Make sure to review CHANGELOG.md for important details.
330
+ post_install_message:
332
331
  rdoc_options: []
333
332
  require_paths:
334
333
  - lib
@@ -339,9 +338,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
339
338
  version: 1.9.3
340
339
  required_rubygems_version: !ruby/object:Gem::Requirement
341
340
  requirements:
342
- - - ">"
341
+ - - ">="
343
342
  - !ruby/object:Gem::Version
344
- version: 1.3.1
343
+ version: '0'
345
344
  requirements: []
346
345
  rubygems_version: 3.1.4
347
346
  signing_key:
@@ -1,43 +0,0 @@
1
- require 'sqreen/ecosystem/module_api'
2
- require 'sqreen/ecosystem/module_api/instrumentation'
3
- require 'sqreen/ecosystem/module_api/message_producer'
4
- require 'sqreen/ecosystem/module_api/tracing_id_generation'
5
- require 'sqreen/ecosystem/module_api/tracing/client_data'
6
-
7
- module Sqreen
8
- module Ecosystem
9
- module Redis
10
- class RedisConnection
11
- class RedisConnectionData
12
- include ModuleApi::Tracing::ClientData
13
-
14
- attr_accessor :port
15
- end
16
-
17
- include ModuleApi::Instrumentation
18
- include ModuleApi::MessageProducer
19
- include ModuleApi::TracingIdGeneration
20
-
21
- def setup
22
- advice = wrap_for_interest(ModuleApi::Tracing::ClientData, &method(:before_advice))
23
- instrument 'Redis::Connection::TCPSocket#connect',
24
- before: advice
25
- end
26
-
27
- private
28
-
29
- def before_advice
30
- host = call.args[0]
31
- port = call.args[1]
32
-
33
- RedisConnectionData.new(
34
- transport: 'redis',
35
- host: host,
36
- port: port,
37
- tracing_identifier: create_tracing_id
38
- )
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,41 +0,0 @@
1
- require 'base64'
2
- require 'sqreen/mono_time'
3
- require 'sqreen/metrics/base'
4
- begin
5
- require 'sq_detailed_metrics'
6
- rescue LoadError => _e # rubocop:disable Lint/HandleExceptions
7
- end
8
-
9
- module Sqreen
10
- module Metric
11
- class ReqDetailed < Base
12
- attr_reader :num_requests
13
-
14
- def initialize(opts = {})
15
- raise 'SqDetailedMetrics unavailable' unless defined?(SqDetailedMetrics)
16
- super(opts)
17
- @coll = SqDetailedMetrics::RequestCollection.new
18
- @start_time = Sqreen.time
19
- @num_requests = 0
20
- end
21
-
22
- # @param [SqDetailedMetrics::Request] value
23
- def update(_key, value)
24
- @coll << value
25
- @num_requests += 1
26
- end
27
-
28
- def next_sample(time)
29
- data = @coll.serialize
30
- @num_requests = 0
31
- return nil unless data
32
-
33
- {
34
- OBSERVATION_KEY => { 'v1' => Base64.strict_encode64(data) },
35
- START_KEY => @start_time,
36
- FINISH_KEY => (@start_time = time),
37
- }
38
- end
39
- end
40
- end
41
- end