sbmt-outbox 6.3.1 → 6.4.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: 952db6c0164054fe8a19297680900749dacf124e2987d2a49a02304f4a02f0db
4
- data.tar.gz: b765f1c66e936431070f61e946ac9a50b7b2b2966af01f124923c8cb5f70cdab
3
+ metadata.gz: aed7afb062770ab592517d363d16fa57428a29b9e67ec83eb65c5ceacbfba714
4
+ data.tar.gz: eafe1f3ea486c9913a82508a7e20a423e6eb6789651d7cb0642e706fa233a609
5
5
  SHA512:
6
- metadata.gz: 2c6e1a536dc8ece25ceb807db39e1f4f52fa70f79d6eadfd834707da8d7f4593575cc0563e638133f973fa4205c8e9fe14f1e28ffbbe44bf1f5f35ec1748fb9a
7
- data.tar.gz: f5b8196a367b1c38ed65fdaa95cecdd7dd245524c17e317088f73387ea114262d81ed1062b4f1486cf084f55e0a31b64b08999a0d42b30117e41c841bbb15012
6
+ metadata.gz: e58e6a80a6bd1a2ec1f9f41816d2b70532ae2e58b29f8588d5c326d22617fdbeb8e321fa70d2d02773ac6d0ff07403047351eb7ea89ff1597b9708ff66b69909
7
+ data.tar.gz: fe734a0361f7a749b23f63074faa5c3c1d3b9c92fad1e997ca4603a64a2efb30550f7a62c22a96f2830c0ef8fb1be0650fb6cd7a3a62100a63245d3631834580
data/README.md CHANGED
@@ -224,7 +224,11 @@ The `outbox.yml` configuration file is the main configuration for the gem, where
224
224
  default: &default
225
225
  owner: foo-team # optional, used in Yabeda metrics
226
226
  bucket_size: 16 # optional, default 16, see into about the buckets at the #Concurrency section
227
+ metrics:
228
+ enabled: true # default false, yabeda server autostart with port: 9090 and path: /metrics
229
+ port: 9090 # optional, default, used in Yabeda metrics
227
230
  probes:
231
+ enabled: false # optional, default true
228
232
  port: 5555 # default, used for Kubernetes probes
229
233
 
230
234
  outbox_items: # outbox items section
@@ -1,6 +1,8 @@
1
1
  default: &default
2
2
  owner: owner-team
3
3
  bucket_size: 16
4
+ metrics:
5
+ enabled: true
4
6
 
5
7
  probes:
6
8
  port: SET-UP-YOUR-HEALTHCHECK-PORT-HERE
@@ -69,8 +69,8 @@ module Sbmt
69
69
  $stdout.puts AsciiArt.logo
70
70
  $stdout.puts "Outbox/Inbox worker has been started"
71
71
  $stdout.puts "Version: #{VERSION}"
72
- $stdout.puts "Starting probes..."
73
72
  Sbmt::Outbox::Probes::Probe.run_probes
73
+ Sbmt::Outbox::Probes::Metrics.run_metrics
74
74
 
75
75
  worker.start
76
76
  end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sbmt
4
+ module Outbox
5
+ module Probes
6
+ class Metrics
7
+ DEFAULT_YABEDA_PORT = 9090
8
+ DEFAULT_YABEDA_PATH = "/metrics"
9
+ class << self
10
+ def run_metrics
11
+ return unless autostart_yabeda_server?
12
+
13
+ if defined?(Yabeda)
14
+ $stdout.puts "Starting metrics http-server..."
15
+
16
+ start_webrick(
17
+ Yabeda::Prometheus::Mmap::Exporter::NOT_FOUND_HANDLER,
18
+ middlewares: {::Yabeda::Prometheus::Exporter => {path: DEFAULT_YABEDA_PATH}},
19
+ port: yabeda_port
20
+ )
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def yabeda_port
27
+ Sbmt::Outbox.yaml_config.dig(:metrics, :port) || DEFAULT_YABEDA_PORT
28
+ end
29
+
30
+ def start_webrick(app, middlewares:, port:)
31
+ Thread.new do
32
+ ::Rack::Handler::WEBrick.run(
33
+ ::Rack::Builder.new do
34
+ middlewares.each do |middleware, options|
35
+ use middleware, **options
36
+ end
37
+ run app
38
+ end,
39
+ Host: "0.0.0.0",
40
+ Port: port
41
+ )
42
+ end
43
+ end
44
+
45
+ def autostart_yabeda_server?
46
+ Sbmt::Outbox.yaml_config.dig(:metrics, :enabled) || false
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -7,6 +7,10 @@ module Sbmt
7
7
  DEFAULT_PROBE_PORT = 5555
8
8
  class << self
9
9
  def run_probes
10
+ return unless autostart_probe?
11
+
12
+ $stdout.puts "Starting probes..."
13
+
10
14
  ::HttpHealthCheck.run_server_async(
11
15
  port: probe_port,
12
16
  rack_app: HttpHealthCheck::RackApp.configure do |c|
@@ -31,6 +35,12 @@ module Sbmt
31
35
 
32
36
  Sbmt::Outbox.yaml_config.fetch(:probes).fetch(:port)
33
37
  end
38
+
39
+ def autostart_probe?
40
+ value = Sbmt::Outbox.yaml_config.dig(:probes, :enabled)
41
+ value = true if value.nil?
42
+ value
43
+ end
34
44
  end
35
45
  end
36
46
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sbmt
4
4
  module Outbox
5
- VERSION = "6.3.1"
5
+ VERSION = "6.4.0"
6
6
  end
7
7
  end
data/lib/sbmt/outbox.rb CHANGED
@@ -38,6 +38,7 @@ require_relative "outbox/engine"
38
38
  require_relative "outbox/middleware/builder"
39
39
  require_relative "outbox/middleware/runner"
40
40
  require_relative "outbox/probes/probe"
41
+ require_relative "outbox/probes/metrics"
41
42
  require_relative "outbox/redis_client_factory"
42
43
 
43
44
  module Sbmt
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sbmt-outbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.3.1
4
+ version: 6.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sbermarket Ruby-Platform Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-02 00:00:00.000000000 Z
11
+ date: 2024-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool
@@ -586,6 +586,7 @@ files:
586
586
  - lib/sbmt/outbox/middleware/sentry/tracing_batch_process_middleware.rb
587
587
  - lib/sbmt/outbox/middleware/sentry/tracing_item_process_middleware.rb
588
588
  - lib/sbmt/outbox/middleware/sentry/transaction.rb
589
+ - lib/sbmt/outbox/probes/metrics.rb
589
590
  - lib/sbmt/outbox/probes/probe.rb
590
591
  - lib/sbmt/outbox/redis_client_factory.rb
591
592
  - lib/sbmt/outbox/tasks/delete_failed_items.rake