yabeda-sidekiq 0.8.1 → 0.9.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: 7ca3b88de76f5fc2ebb1e495445d25ad5b5de0c9f053bb8ca9dcbb5940ef4d41
4
- data.tar.gz: 7be84caa2d3463a41d59606493e7739377ebfa908476b15b60bb16330067b99b
3
+ metadata.gz: f287f1d10d316b33e5d56ea36a9d8dbcc9b1f520b0d3d21d72f11dd5bc40e90f
4
+ data.tar.gz: a3809269e4d6011f7dab4ce89391fd2d14fc0775c1dac768a8105f1949a0205b
5
5
  SHA512:
6
- metadata.gz: 1f7fc13c744da0aa66ffabd9882b24a43c60038e4b966cc557412c80687ed92848d508e179221e93b15e610f9021415e8a7494dc7cfade3f851d617f304ef4ee
7
- data.tar.gz: e026f095d1ba62dd75da0c29d0069c89223bc3cf357ea912c0d1d137cb9b1e7ae7e5223ee7967c2dcd68dd706212553f2840718f52af05240846e965d0be239d
6
+ metadata.gz: 3cb86100524d1b8457caad978f1fcaaf299f27e27c74f787f8b9059b02682f6c4fd04017ad60f9e2b22c46d7d64d18b18cac935fea2586a38f886bd47a31e40c
7
+ data.tar.gz: e536ccdca8b3a9e66eb6ebf3e3795e8083aa46295f9587f5d80e23bf3ab7634851719410d28518d843d44a9c68904e7b162258da1f94737892a6f38c5f69b5e3
@@ -0,0 +1,25 @@
1
+ name: Lint
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - '**'
8
+ tags-ignore:
9
+ - 'v*'
10
+
11
+ jobs:
12
+ rubocop:
13
+ # Skip running tests for local pull requests (use push event instead), run only for foreign ones
14
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.owner.login != github.event.pull_request.base.repo.owner.login
15
+ name: RuboCop
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+ - uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: "3.0"
22
+ bundler-cache: true
23
+ - name: Lint Ruby code with RuboCop
24
+ run: |
25
+ bundle exec rubocop
@@ -1,4 +1,4 @@
1
- name: Run tests
1
+ name: Tests
2
2
 
3
3
  on:
4
4
  pull_request:
@@ -10,17 +10,19 @@ on:
10
10
 
11
11
  jobs:
12
12
  test:
13
- name: "Run tests"
14
- if: "!contains(github.event.head_commit.message, '[ci skip]')"
13
+ name: 'Ruby ${{ matrix.ruby }}'
14
+ # Skip running tests for local pull requests (use push event instead), run only for foreign ones
15
+ if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.owner.login != github.event.pull_request.base.repo.owner.login
15
16
  runs-on: ubuntu-latest
16
17
  strategy:
17
18
  fail-fast: false
18
19
  matrix:
19
20
  include:
20
- - ruby: 3.0
21
- - ruby: 2.7
22
- - ruby: 2.6
23
- - ruby: 2.5
21
+ - ruby: '3.1'
22
+ - ruby: '3.0'
23
+ - ruby: '2.7'
24
+ - ruby: '2.6'
25
+ - ruby: '2.5'
24
26
  container:
25
27
  image: ruby:${{ matrix.ruby }}
26
28
  env:
@@ -41,7 +43,5 @@ jobs:
41
43
  bundle config path vendor/bundle
42
44
  bundle install
43
45
  bundle update
44
- - name: Run Rubocop
45
- run: bundle exec rubocop
46
46
  - name: Run RSpec
47
47
  run: bundle exec rspec
data/CHANGELOG.md CHANGED
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 0.9.0 - 2022-09-26
11
+
12
+ ### Added
13
+
14
+ - Configuration setting to declare worker in-process metrics outside workers.
15
+
16
+ It can be needed for official Prometheus client in multi-process mode where separate process expose metrics from Sidekiq worker processes.
17
+
18
+ - `most_recent` aggregation for all cluster-wide gauges.
19
+
20
+ It is also needed for official Prometheus client in multi-process mode to reduce number of time series.
21
+
22
+ ## 0.8.2 - 2022-09-14
23
+
24
+ ### Added
25
+
26
+ - Ability to programmatically change gem settings by calling writer methods on `Yabeda::Sidekiq.config`. [@Envek]
27
+
28
+ Usage is quite limited though as you need to do it before `Yabeda.configure!` is called.
29
+
10
30
  ## 0.8.1 - 2021-08-24
11
31
 
12
32
  ### Fixed
@@ -13,6 +13,9 @@ module Yabeda
13
13
  # - force disable if you don't want multiple Sidekiq workers to report the same numbers (that causes excess load to both Redis and monitoring)
14
14
  # - force enable if you want non-Sidekiq process to collect them (like dedicated metric exporter process)
15
15
  attr_config collect_cluster_metrics: ::Sidekiq.server?
16
+
17
+ # Declare metrics that are only tracked inside worker process even outside them
18
+ attr_config declare_process_metrics: ::Sidekiq.server?
16
19
  end
17
20
  end
18
21
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Yabeda
4
4
  module Sidekiq
5
- VERSION = "0.8.1"
5
+ VERSION = "0.9.0"
6
6
  end
7
7
  end
@@ -16,14 +16,18 @@ module Yabeda
16
16
  30, 60, 120, 300, 1800, 3600, 21_600, # Sidekiq tasks may be very long-running
17
17
  ].freeze
18
18
 
19
+ def self.config
20
+ @config ||= Config.new
21
+ end
22
+
19
23
  Yabeda.configure do
20
- config = Config.new
24
+ config = ::Yabeda::Sidekiq.config
21
25
 
22
26
  group :sidekiq
23
27
 
24
28
  counter :jobs_enqueued_total, tags: %i[queue worker], comment: "A counter of the total number of jobs sidekiq enqueued."
25
29
 
26
- if ::Sidekiq.server?
30
+ if config.declare_process_metrics # defaults to +::Sidekiq.server?+
27
31
  counter :jobs_executed_total, tags: %i[queue worker], comment: "A counter of the total number of jobs sidekiq executed."
28
32
  counter :jobs_success_total, tags: %i[queue worker], comment: "A counter of the total number of jobs successfully processed by sidekiq."
29
33
  counter :jobs_failed_total, tags: %i[queue worker], comment: "A counter of the total number of jobs failed in sidekiq."
@@ -44,13 +48,13 @@ module Yabeda
44
48
  # Metrics not specific for current Sidekiq process, but representing state of the whole Sidekiq installation (queues, processes, etc)
45
49
  # You can opt-out from collecting these by setting YABEDA_SIDEKIQ_COLLECT_CLUSTER_METRICS to falsy value (+no+ or +false+)
46
50
  if config.collect_cluster_metrics # defaults to +::Sidekiq.server?+
47
- gauge :jobs_waiting_count, tags: %i[queue], comment: "The number of jobs waiting to process in sidekiq."
48
- gauge :active_workers_count, tags: [], comment: "The number of currently running machines with sidekiq workers."
49
- gauge :jobs_scheduled_count, tags: [], comment: "The number of jobs scheduled for later execution."
50
- gauge :jobs_retry_count, tags: [], comment: "The number of failed jobs waiting to be retried"
51
- gauge :jobs_dead_count, tags: [], comment: "The number of jobs exceeded their retry count."
52
- gauge :active_processes, tags: [], comment: "The number of active Sidekiq worker processes."
53
- gauge :queue_latency, tags: %i[queue], comment: "The queue latency, the difference in seconds since the oldest job in the queue was enqueued"
51
+ gauge :jobs_waiting_count, tags: %i[queue], aggregation: :most_recent, comment: "The number of jobs waiting to process in sidekiq."
52
+ gauge :active_workers_count, tags: [], aggregation: :most_recent, comment: "The number of currently running machines with sidekiq workers."
53
+ gauge :jobs_scheduled_count, tags: [], aggregation: :most_recent, comment: "The number of jobs scheduled for later execution."
54
+ gauge :jobs_retry_count, tags: [], aggregation: :most_recent, comment: "The number of failed jobs waiting to be retried"
55
+ gauge :jobs_dead_count, tags: [], aggregation: :most_recent, comment: "The number of jobs exceeded their retry count."
56
+ gauge :active_processes, tags: [], aggregation: :most_recent, comment: "The number of active Sidekiq worker processes."
57
+ gauge :queue_latency, tags: %i[queue], aggregation: :most_recent, comment: "The queue latency, the difference in seconds since the oldest job in the queue was enqueued"
54
58
  end
55
59
 
56
60
  collect do
@@ -135,6 +139,6 @@ module Yabeda
135
139
  end
136
140
  end
137
141
 
138
- self.jobs_started_at = Concurrent::Hash.new { |hash, key| hash[key] = Concurrent::Hash.new }
142
+ self.jobs_started_at = Concurrent::Map.new { |hash, key| hash[key] = Concurrent::Map.new }
139
143
  end
140
144
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yabeda-sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Novikov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-24 00:00:00.000000000 Z
11
+ date: 2022-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: anyway_config
@@ -123,6 +123,7 @@ extensions: []
123
123
  extra_rdoc_files: []
124
124
  files:
125
125
  - ".github/workflows/build-release.yml"
126
+ - ".github/workflows/lint.yml"
126
127
  - ".github/workflows/test.yml"
127
128
  - ".gitignore"
128
129
  - ".rspec"