sidekiq_prometheus 1.8.3 → 1.9.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 +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +7 -2
- data/lib/sidekiq_prometheus/job_metrics.rb +1 -1
- data/lib/sidekiq_prometheus/metrics.rb +6 -1
- data/lib/sidekiq_prometheus/version.rb +1 -1
- data/lib/sidekiq_prometheus.rb +9 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 654002b3b3138eef5307c4e4c3cab5a6d8ca45cc283c49341d3c1760f4d3ef67
|
4
|
+
data.tar.gz: 5abf477f0a4a8baa64e82d22527477614d57f48c8bf26c4d637a7c24bbb5cc70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0544dc888a169886f532b2aa08ef8ab3c8c34ec1dea5a72bb9a75618aecfaaf4d1de81f6ae44cd61cc2621189ad69489a082f4af877cf63e7139ca3eb124a8dc
|
7
|
+
data.tar.gz: 7eb8689d5514e3585a6ee722a5f21d6f964a56146750d922fa578164a72ffbb36415c47befb10f7f7c61cc82ada60c7a4200b55370cf74ceae72270f4b423d98
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
|
3
|
+
<a name="v1.8.3"></a>
|
4
|
+
## [v1.8.3](https://github.com/fastly/sidekiq-prometheus/compare/v1.8.2...v1.8.3) (2023-01-30)
|
5
|
+
|
6
|
+
## What's Changed
|
7
|
+
* Track leader state so that can unregister when demoted by @leklund in https://github.com/fastly/sidekiq-prometheus/pull/36
|
8
|
+
|
9
|
+
**Full Changelog**: https://github.com/fastly/sidekiq-prometheus/compare/v1.8.2...v1.8.3
|
10
|
+
|
3
11
|
<a name="v1.8.2"></a>
|
4
12
|
## [v1.8.2](https://github.com/fastly/sidekiq-prometheus/compare/v1.8.1...v1.8.2) (2022-11-29)
|
5
13
|
|
data/README.md
CHANGED
@@ -79,6 +79,7 @@ end
|
|
79
79
|
* `custom_labels`: Hash of metrics and labels that can be applied to specific metrics. The metric name must be a registered metric. `Hash{Symbol (metric name) => Array<Symbol> (label names)}`
|
80
80
|
* `gc_metrics_enabled`: Boolean that determines whether to record object allocation metrics per job. The default is `true`. Setting this to `false` if you don't need this metric.
|
81
81
|
* `global_metrics_enabled`: Boolean that determines whether to report global metrics from the PeriodicMetrics reporter. When `true` this will report on a number of stats from the Sidekiq API for the cluster. This requires Sidekiq::Enterprise as the reporter uses the leader election functionality to ensure that only one worker per cluster is reporting metrics.
|
82
|
+
* `init_label_sets`: Hash of metrics and label sets that are initialized by calling `metric.init_label_set` after the metric is registered. See[ prometheus-client docs](https://github.com/prometheus/client_ruby/tree/e144d6225d3c346e9a4dd0a11f41f8acde386dd8#init_label_set) for details. `Hash{Symbol (metric name) => Array<Hash> (label sets)}`.
|
82
83
|
* `periodic_metrics_enabled`: Boolean that determines whether to run the periodic metrics reporter. `PeriodicMetrics` runs a separate thread that reports on global metrics (if enabled) as well worker GC stats (if enabled). It reports metrics on the interval defined by `periodic_reporting_interval`. Defaults to `true`.
|
83
84
|
* `periodic_reporting_interval`: interval in seconds for reporting periodic metrics. Default: `30`
|
84
85
|
* `metrics_server_enabled`: Boolean that determines whether to run the rack server. Defaults to `true`
|
@@ -94,6 +95,7 @@ SidekiqPrometheus.configure do |config|
|
|
94
95
|
config.custom_labels = { sidekiq_job_count: [:worker_class, :job_type, :any_other_label] }
|
95
96
|
config.gc_metrics_enabled = false
|
96
97
|
config.global_metrics_enabled = true
|
98
|
+
config.init_label_sets = { sidekiq_job_count: [{worker_class: "class", job_type: "single", any_other_label: "value"}, {worker_class: "class", job_type: "batch", any_other_label: "other-value"}] }
|
97
99
|
config.periodic_metrics_enabled = true
|
98
100
|
config.periodic_reporting_interval = 20
|
99
101
|
config.metrics_server_enabled = true
|
@@ -101,7 +103,7 @@ SidekiqPrometheus.configure do |config|
|
|
101
103
|
end
|
102
104
|
```
|
103
105
|
|
104
|
-
Custom labels may be added by defining the `prometheus_labels` method in the worker class,
|
106
|
+
Custom labels may be added by defining the `prometheus_labels` method in the worker class,
|
105
107
|
prior you need to register the custom labels as of the above example:
|
106
108
|
|
107
109
|
```ruby
|
@@ -130,10 +132,13 @@ All Sidekiq job metrics are reported with these labels:
|
|
130
132
|
| sidekiq_job_success | counter | Count of successful Sidekiq jobs |
|
131
133
|
| sidekiq_job_allocated_objects | histogram | Count of ruby objects allocated by a Sidekiq job |
|
132
134
|
| sidekiq_job_failed | counter | Count of failed Sidekiq jobs |
|
135
|
+
| sidekiq_job_over_limit | counter | Count of over limit Sidekiq jobs |
|
136
|
+
|
133
137
|
|
134
138
|
Notes:
|
135
139
|
|
136
140
|
* when a job fails only `sidekiq_job_count` and `sidekiq_job_failed` will be reported.
|
141
|
+
* when a job fails due to Sidekiq::Limiter::OverLimit error, only `sidekiq_job_count` and `sidekiq_job_over_limit` will be reported.
|
137
142
|
* `sidekiq_job_allocated_objects` will only be reported if `SidekiqPrometheus.gc_metrics_enabled? == true`
|
138
143
|
|
139
144
|
### Periodic GC Metrics
|
@@ -217,7 +222,7 @@ There is also a method to register more than one metric at a time:
|
|
217
222
|
customer_worker_metrics = [
|
218
223
|
{
|
219
224
|
name: :file_count, type: :counter, docstring: 'Number of active files',
|
220
|
-
name: :file_size, type: :gauge, docstring: 'Size of files in bytes',
|
225
|
+
name: :file_size, type: :gauge, docstring: 'Size of files in bytes',
|
221
226
|
}
|
222
227
|
]
|
223
228
|
|
@@ -30,7 +30,7 @@ class SidekiqPrometheus::JobMetrics
|
|
30
30
|
|
31
31
|
result
|
32
32
|
rescue => e
|
33
|
-
if e.
|
33
|
+
if e.instance_of?(::Sidekiq::Limiter::OverLimit)
|
34
34
|
registry[:sidekiq_job_over_limit].increment(labels: labels)
|
35
35
|
else
|
36
36
|
err_label = {error_class: e.class.to_s}
|
@@ -176,7 +176,12 @@ module SidekiqPrometheus::Metrics
|
|
176
176
|
|
177
177
|
options[:buckets] = buckets if buckets
|
178
178
|
|
179
|
-
registry.send(type, name.to_sym, **options)
|
179
|
+
metric = registry.send(type, name.to_sym, **options)
|
180
|
+
|
181
|
+
init_label_sets = SidekiqPrometheus.init_label_sets.fetch(name, [])
|
182
|
+
init_label_sets.each { |label_set| metric.init_label_set(label_set) }
|
183
|
+
|
184
|
+
metric
|
180
185
|
end
|
181
186
|
|
182
187
|
def unregister(name:)
|
data/lib/sidekiq_prometheus.rb
CHANGED
@@ -42,6 +42,14 @@ module SidekiqPrometheus
|
|
42
42
|
# @return [Boolean] Setting to control enabling/disabling global metrics. Default: true
|
43
43
|
attr_accessor :global_metrics_enabled
|
44
44
|
|
45
|
+
# @return [Hash{Symbol => Array(Hash)}] Label sets that will be initiliazed when a metric is registered.
|
46
|
+
# @example
|
47
|
+
# {
|
48
|
+
# metric_name: [{label: 'value1', other_label: 'value1'}, {label: 'value1', other_label: 'value2'}],
|
49
|
+
# another_metric_name: [{label: 'value1', other_label: 'value1'}]
|
50
|
+
# }
|
51
|
+
attr_accessor :init_label_sets
|
52
|
+
|
45
53
|
# @return [Boolean] Setting to control enabling/disabling periodic metrics. Default: true
|
46
54
|
attr_accessor :periodic_metrics_enabled
|
47
55
|
|
@@ -82,6 +90,7 @@ module SidekiqPrometheus
|
|
82
90
|
self.metrics_server_logger_enabled = true
|
83
91
|
self.custom_labels = {}
|
84
92
|
self.custom_metrics = []
|
93
|
+
self.init_label_sets = {}
|
85
94
|
|
86
95
|
module_function
|
87
96
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq_prometheus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lukas Eklund
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-08-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -188,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
188
|
- !ruby/object:Gem::Version
|
189
189
|
version: '0'
|
190
190
|
requirements: []
|
191
|
-
rubygems_version: 3.
|
191
|
+
rubygems_version: 3.3.7
|
192
192
|
signing_key:
|
193
193
|
specification_version: 4
|
194
194
|
summary: Prometheus Instrumentation for Sidekiq
|