sidekiq-prometheus-exporter 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +15 -0
- data/.rubocop.yml +385 -0
- data/Gemfile +2 -2
- data/README.md +1 -1
- data/Rakefile +3 -3
- data/bin/console +3 -3
- data/examples/sidekiq/sidekiq.rb +1 -1
- data/gemfiles/sidekiq_3.3.1.gemfile +7 -7
- data/gemfiles/sidekiq_3.3.1.gemfile.lock +14 -9
- data/gemfiles/sidekiq_3.x.gemfile +7 -7
- data/gemfiles/sidekiq_3.x.gemfile.lock +14 -9
- data/gemfiles/sidekiq_4.x.gemfile +4 -4
- data/gemfiles/sidekiq_4.x.gemfile.lock +14 -9
- data/gemfiles/sidekiq_5.x.gemfile +4 -4
- data/gemfiles/sidekiq_5.x.gemfile.lock +14 -9
- data/lib/sidekiq/prometheus/exporter.rb +9 -56
- data/lib/sidekiq/prometheus/exporter/metrics.rb +20 -0
- data/lib/sidekiq/prometheus/exporter/templates/metrics.erb +36 -0
- data/lib/sidekiq/prometheus/exporter/version.rb +1 -1
- data/sidekiq-prometheus-exporter.gemspec +5 -4
- metadata +22 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8934958c55fc915594c3166725c7c2f82426e1f
|
4
|
+
data.tar.gz: 1635e5c78c3976bd31dda6c51172ca32278cce41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62f6cb30144fbe784b9fc42127820e8a939637099874c564a857212f4388804c248e44447fa8f757aa5171dbe719e942902b0fb6bd4b06702c4c55e74abbc722
|
7
|
+
data.tar.gz: 8050c3dc8053df40c7428b9d7bf44fa25829934ddc83620e64335658c4ad30fb0292ba2e22490c94ce0e3bee807d7c9a29da5f8014ebbd50e74bbf4c5874049e
|
data/.codeclimate.yml
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,385 @@
|
|
1
|
+
---
|
2
|
+
require: rubocop-rspec
|
3
|
+
|
4
|
+
AllCops:
|
5
|
+
TargetRubyVersion: 2.2
|
6
|
+
|
7
|
+
Style/Alias:
|
8
|
+
EnforcedStyle: prefer_alias_method
|
9
|
+
|
10
|
+
Style/AndOr:
|
11
|
+
# Whether `and` and `or` are banned only in conditionals (conditionals)
|
12
|
+
# or completely (always).
|
13
|
+
EnforcedStyle: conditionals
|
14
|
+
|
15
|
+
# Use ` or %x around command literals.
|
16
|
+
Style/CommandLiteral:
|
17
|
+
EnforcedStyle: mixed
|
18
|
+
# backticks: Always use backticks.
|
19
|
+
# percent_x: Always use %x.
|
20
|
+
# mixed: Use backticks on single-line commands, and %x on multi-line commands.
|
21
|
+
SupportedStyles:
|
22
|
+
- backticks
|
23
|
+
- percent_x
|
24
|
+
- mixed
|
25
|
+
# If false, the cop will always recommend using %x if one or more backticks
|
26
|
+
# are found in the command string.
|
27
|
+
AllowInnerBackticks: false
|
28
|
+
|
29
|
+
Style/Documentation:
|
30
|
+
Enabled: false
|
31
|
+
|
32
|
+
Style/FrozenStringLiteralComment:
|
33
|
+
EnforcedStyle: when_needed
|
34
|
+
SupportedStyles:
|
35
|
+
# `when_needed` will add the frozen string literal comment to files
|
36
|
+
# only when the `TargetRubyVersion` is set to 2.3+.
|
37
|
+
- when_needed
|
38
|
+
# `always` will always add the frozen string literal comment to a file
|
39
|
+
# regardless of the Ruby version or if `freeze` or `<<` are called on a
|
40
|
+
# string literal. If you run code against multiple versions of Ruby, it is
|
41
|
+
# possible that this will create errors in Ruby 2.3.0+.
|
42
|
+
- always
|
43
|
+
Exclude:
|
44
|
+
- "Gemfile"
|
45
|
+
- "Rakefile"
|
46
|
+
- "bin/*"
|
47
|
+
- "spec/spec_helper.rb"
|
48
|
+
- "spec/**/*_spec.rb"
|
49
|
+
- "**/*.gemspec"
|
50
|
+
- "**/*.rake"
|
51
|
+
|
52
|
+
# Enable when it will respect line length rules
|
53
|
+
Style/IfUnlessModifier:
|
54
|
+
Enabled: false
|
55
|
+
|
56
|
+
Style/Lambda:
|
57
|
+
EnforcedStyle: literal
|
58
|
+
SupportedStyles:
|
59
|
+
- line_count_dependent
|
60
|
+
- lambda
|
61
|
+
- literal
|
62
|
+
|
63
|
+
Style/Next:
|
64
|
+
# With `always` all conditions at the end of an iteration needs to be
|
65
|
+
# replaced by next - with `skip_modifier_ifs` the modifier if like this one
|
66
|
+
# are ignored: [1, 2].each { |a| return 'yes' if a == 1 }
|
67
|
+
EnforcedStyle: skip_modifier_ifs
|
68
|
+
# `MinBodyLength` defines the number of lines of the a body of an if / unless
|
69
|
+
# needs to have to trigger this cop
|
70
|
+
MinBodyLength: 3
|
71
|
+
SupportedStyles:
|
72
|
+
- skip_modifier_ifs
|
73
|
+
- always
|
74
|
+
|
75
|
+
Style/NonNilCheck:
|
76
|
+
# With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
|
77
|
+
# `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
|
78
|
+
# **usually** OK, but might change behavior.
|
79
|
+
#
|
80
|
+
# With `IncludeSemanticChanges` set to `false`, this cop does not report
|
81
|
+
# offenses for `!x.nil?` and does no changes that might change behavior.
|
82
|
+
IncludeSemanticChanges: false
|
83
|
+
|
84
|
+
Style/NumericPredicate:
|
85
|
+
EnforcedStyle: predicate
|
86
|
+
SupportedStyles:
|
87
|
+
- predicate
|
88
|
+
- comparison
|
89
|
+
# Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
|
90
|
+
# false positives.
|
91
|
+
Exclude:
|
92
|
+
- 'spec/**/*'
|
93
|
+
|
94
|
+
Style/MethodCalledOnDoEndBlock:
|
95
|
+
Description: 'Avoid chaining a method call on a do...end block.'
|
96
|
+
StyleGuide: '#single-line-blocks'
|
97
|
+
Enabled: true
|
98
|
+
|
99
|
+
Style/PercentLiteralDelimiters:
|
100
|
+
PreferredDelimiters:
|
101
|
+
'%': ()
|
102
|
+
'%i': ()
|
103
|
+
'%I': ()
|
104
|
+
'%q': ()
|
105
|
+
'%Q': ()
|
106
|
+
'%r': '{}'
|
107
|
+
'%s': ()
|
108
|
+
'%w': ()
|
109
|
+
'%W': ()
|
110
|
+
'%x': '{}'
|
111
|
+
|
112
|
+
Style/SpecialGlobalVars:
|
113
|
+
EnforcedStyle: use_english_names
|
114
|
+
SupportedStyles:
|
115
|
+
- use_perl_names
|
116
|
+
- use_english_names
|
117
|
+
|
118
|
+
Style/StabbyLambdaParentheses:
|
119
|
+
EnforcedStyle: require_parentheses
|
120
|
+
SupportedStyles:
|
121
|
+
- require_parentheses
|
122
|
+
- require_no_parentheses
|
123
|
+
|
124
|
+
Style/StringLiterals:
|
125
|
+
EnforcedStyle: single_quotes
|
126
|
+
SupportedStyles:
|
127
|
+
- single_quotes
|
128
|
+
- double_quotes
|
129
|
+
# If true, strings which span multiple lines using \ for continuation must
|
130
|
+
# use the same type of quotes on each line.
|
131
|
+
ConsistentQuotesInMultiline: false
|
132
|
+
|
133
|
+
Style/StringLiteralsInInterpolation:
|
134
|
+
EnforcedStyle: single_quotes
|
135
|
+
SupportedStyles:
|
136
|
+
- single_quotes
|
137
|
+
- double_quotes
|
138
|
+
|
139
|
+
Style/StringMethods:
|
140
|
+
# Mapping from undesired method to desired_method
|
141
|
+
# e.g. to use `to_sym` over `intern`:
|
142
|
+
#
|
143
|
+
# StringMethods:
|
144
|
+
# PreferredMethods:
|
145
|
+
# intern: to_sym
|
146
|
+
PreferredMethods:
|
147
|
+
intern: to_sym
|
148
|
+
|
149
|
+
Style/TernaryParentheses:
|
150
|
+
EnforcedStyle: require_parentheses_when_complex
|
151
|
+
SupportedStyles:
|
152
|
+
- require_parentheses
|
153
|
+
- require_no_parentheses
|
154
|
+
- require_parentheses_when_complex
|
155
|
+
AllowSafeAssignment: true
|
156
|
+
|
157
|
+
#################### Naming ####################################
|
158
|
+
|
159
|
+
Naming/AccessorMethodName:
|
160
|
+
Description: Check the naming of accessor methods for get_/set_.
|
161
|
+
StyleGuide: '#accessor_mutator_method_names'
|
162
|
+
|
163
|
+
# https://rubocop.readthedocs.io/en/latest/cops_naming/#naminguncommunicativemethodparamname
|
164
|
+
Naming/UncommunicativeMethodParamName:
|
165
|
+
AllowedNames:
|
166
|
+
- _
|
167
|
+
- io
|
168
|
+
- id
|
169
|
+
- to
|
170
|
+
- by
|
171
|
+
- on
|
172
|
+
- in
|
173
|
+
- at
|
174
|
+
|
175
|
+
#################### Layout ####################################
|
176
|
+
|
177
|
+
Layout/AlignParameters:
|
178
|
+
# Alignment of parameters in multi-line method calls.
|
179
|
+
#
|
180
|
+
# The `with_first_parameter` style aligns the following lines along the same
|
181
|
+
# column as the first parameter.
|
182
|
+
#
|
183
|
+
# method_call(a,
|
184
|
+
# b)
|
185
|
+
#
|
186
|
+
# The `with_fixed_indentation` style aligns the following lines with one
|
187
|
+
# level of indentation relative to the start of the line with the method call.
|
188
|
+
#
|
189
|
+
# method_call(a,
|
190
|
+
# b)
|
191
|
+
EnforcedStyle: with_fixed_indentation
|
192
|
+
SupportedStyles:
|
193
|
+
- with_first_parameter
|
194
|
+
- with_fixed_indentation
|
195
|
+
|
196
|
+
# Checks the indentation of the first element in an array literal.
|
197
|
+
Layout/IndentArray:
|
198
|
+
# The value `special_inside_parentheses` means that array literals with
|
199
|
+
# brackets that have their opening bracket on the same line as a surrounding
|
200
|
+
# opening round parenthesis, shall have their first element indented relative
|
201
|
+
# to the first position inside the parenthesis.
|
202
|
+
#
|
203
|
+
# The value `consistent` means that the indentation of the first element shall
|
204
|
+
# always be relative to the first position of the line where the opening
|
205
|
+
# bracket is.
|
206
|
+
#
|
207
|
+
# The value `align_brackets` means that the indentation of the first element
|
208
|
+
# shall always be relative to the position of the opening bracket.
|
209
|
+
EnforcedStyle: consistent
|
210
|
+
SupportedStyles:
|
211
|
+
- special_inside_parentheses
|
212
|
+
- consistent
|
213
|
+
- align_brackets
|
214
|
+
# By default, the indentation width from Style/IndentationWidth is used
|
215
|
+
# But it can be overridden by setting this parameter
|
216
|
+
IndentationWidth: ~
|
217
|
+
|
218
|
+
# Checks the indentation of the first key in a hash literal.
|
219
|
+
Layout/IndentHash:
|
220
|
+
# The value `special_inside_parentheses` means that hash literals with braces
|
221
|
+
# that have their opening brace on the same line as a surrounding opening
|
222
|
+
# round parenthesis, shall have their first key indented relative to the
|
223
|
+
# first position inside the parenthesis.
|
224
|
+
#
|
225
|
+
# The value `consistent` means that the indentation of the first key shall
|
226
|
+
# always be relative to the first position of the line where the opening
|
227
|
+
# brace is.
|
228
|
+
#
|
229
|
+
# The value `align_braces` means that the indentation of the first key shall
|
230
|
+
# always be relative to the position of the opening brace.
|
231
|
+
EnforcedStyle: consistent
|
232
|
+
SupportedStyles:
|
233
|
+
- special_inside_parentheses
|
234
|
+
- consistent
|
235
|
+
- align_braces
|
236
|
+
# By default, the indentation width from Style/IndentationWidth is used
|
237
|
+
# But it can be overridden by setting this parameter
|
238
|
+
IndentationWidth: ~
|
239
|
+
|
240
|
+
Layout/SpaceBeforeFirstArg:
|
241
|
+
# When true, allows most uses of extra spacing if the intent is to align
|
242
|
+
# things with the previous or next line, not counting empty lines or comment
|
243
|
+
# lines.
|
244
|
+
AllowForAlignment: false
|
245
|
+
|
246
|
+
Layout/SpaceAroundBlockParameters:
|
247
|
+
EnforcedStyleInsidePipes: no_space
|
248
|
+
|
249
|
+
Layout/SpaceInsideHashLiteralBraces:
|
250
|
+
EnforcedStyle: no_space
|
251
|
+
EnforcedStyleForEmptyBraces: no_space
|
252
|
+
SupportedStyles:
|
253
|
+
- space
|
254
|
+
- no_space
|
255
|
+
# 'compact' normally requires a space inside hash braces, with the exception
|
256
|
+
# that successive left braces or right braces are collapsed together
|
257
|
+
- compact
|
258
|
+
|
259
|
+
Layout/MultilineMethodCallIndentation:
|
260
|
+
EnforcedStyle: indented
|
261
|
+
SupportedStyles:
|
262
|
+
- aligned
|
263
|
+
- indented
|
264
|
+
- indented_relative_to_receiver
|
265
|
+
# By default, the indentation width from Layout/IndentationWidth is used
|
266
|
+
# But it can be overridden by setting this parameter
|
267
|
+
IndentationWidth: ~
|
268
|
+
|
269
|
+
Layout/MultilineOperationIndentation:
|
270
|
+
EnforcedStyle: indented
|
271
|
+
SupportedStyles:
|
272
|
+
- aligned
|
273
|
+
- indented
|
274
|
+
# By default, the indentation width from Style/IndentationWidth is used
|
275
|
+
# But it can be overridden by setting this parameter
|
276
|
+
IndentationWidth: ~
|
277
|
+
|
278
|
+
##################### Metrics ##################################
|
279
|
+
|
280
|
+
Metrics/LineLength:
|
281
|
+
# Default: 80
|
282
|
+
Max: 120
|
283
|
+
|
284
|
+
Metrics/MethodLength:
|
285
|
+
# Default: 10
|
286
|
+
Max: 15
|
287
|
+
|
288
|
+
Metrics/BlockLength:
|
289
|
+
Exclude:
|
290
|
+
- 'Rakefile'
|
291
|
+
- '**/*.gemspec'
|
292
|
+
- '**/*.rake'
|
293
|
+
- 'spec/**/*.rb'
|
294
|
+
|
295
|
+
##################### Lint ##################################
|
296
|
+
|
297
|
+
# https://rubocop.readthedocs.io/en/latest/cops_lint/#lintambiguousblockassociation
|
298
|
+
Lint/AmbiguousBlockAssociation:
|
299
|
+
Enabled: false
|
300
|
+
|
301
|
+
Lint/InheritException:
|
302
|
+
# The default base class in favour of `Exception`.
|
303
|
+
EnforcedStyle: standard_error
|
304
|
+
SupportedStyles:
|
305
|
+
- runtime_error
|
306
|
+
- standard_error
|
307
|
+
|
308
|
+
##################### Rails ##################################
|
309
|
+
|
310
|
+
# NOT IMPLEMENTED YET
|
311
|
+
# Rails/EnumUniqueness:
|
312
|
+
# Include:
|
313
|
+
# - app/models/**/*.rb
|
314
|
+
|
315
|
+
##################### RSpec ##################################
|
316
|
+
|
317
|
+
# Disabled because we want to adjust it and allow to use it
|
318
|
+
RSpec/AnyInstance:
|
319
|
+
Enabled: false
|
320
|
+
|
321
|
+
# Allow only `when` prefix
|
322
|
+
# https://github.com/rubocop-hq/rubocop-rspec/blob/c1fd129a59e650b8af518ae2e62848aa7eb8498e/config/default.yml#L51
|
323
|
+
RSpec/ContextWording:
|
324
|
+
Prefixes:
|
325
|
+
- when
|
326
|
+
|
327
|
+
Layout/DefEndAlignment:
|
328
|
+
# The value `def` means that `end` should be aligned with the def keyword.
|
329
|
+
# The value `start_of_line` means that `end` should be aligned with method
|
330
|
+
# calls like `private`, `public`, etc, if present in front of the `def`
|
331
|
+
# keyword on the same line.
|
332
|
+
EnforcedStyleAlignWith: start_of_line
|
333
|
+
AutoCorrect: false
|
334
|
+
|
335
|
+
# Disabled because we want to adjust it and allow to use it
|
336
|
+
# and allow just to write a normal description
|
337
|
+
RSpec/DescribeMethod:
|
338
|
+
Enabled: false
|
339
|
+
|
340
|
+
# Allow only for inline test cases
|
341
|
+
# https://github.com/rubocop-hq/rubocop-rspec/blob/c1fd129a59e650b8af518ae2e62848aa7eb8498e/config/default.yml#L122
|
342
|
+
RSpec/ExampleWithoutDescription:
|
343
|
+
EnforcedStyle: single_line_only
|
344
|
+
|
345
|
+
# Disabled because we want to adjust it and allow to use it with
|
346
|
+
# better names, not everything is squashed
|
347
|
+
# https://github.com/rubocop-hq/rubocop-rspec/blob/c1fd129a59e650b8af518ae2e62848aa7eb8498e/config/default.yml#L169
|
348
|
+
RSpec/FilePath:
|
349
|
+
Enabled: false
|
350
|
+
|
351
|
+
# Don't run check because no implicit expectations are allowed
|
352
|
+
# https://github.com/rubocop-hq/rubocop-rspec/blob/c1fd129a59e650b8af518ae2e62848aa7eb8498e/config/default.yml#L193
|
353
|
+
RSpec/ImplicitExpect:
|
354
|
+
Enabled: false
|
355
|
+
|
356
|
+
# Disabled because we want to adjust it and allow to use it with the
|
357
|
+
# option to check that it's the latest item in the context `let`s
|
358
|
+
# https://github.com/rubocop-hq/rubocop-rspec/blob/c1fd129a59e650b8af518ae2e62848aa7eb8498e/config/default.yml#L227
|
359
|
+
RSpec/LeadingSubject:
|
360
|
+
Enabled: false
|
361
|
+
|
362
|
+
# https://github.com/rubocop-hq/rubocop-rspec/blob/c1fd129a59e650b8af518ae2e62848aa7eb8498e/config/default.yml#L247
|
363
|
+
RSpec/MessageExpectation:
|
364
|
+
Enabled: true
|
365
|
+
|
366
|
+
# https://github.com/rubocop-hq/rubocop-rspec/blob/c1fd129a59e650b8af518ae2e62848aa7eb8498e/config/default.yml#L275
|
367
|
+
RSpec/MultipleExpectations:
|
368
|
+
Enabled: true
|
369
|
+
# Default: 1
|
370
|
+
Max: 5
|
371
|
+
|
372
|
+
# https://github.com/rubocop-hq/rubocop-rspec/blob/c1fd129a59e650b8af518ae2e62848aa7eb8498e/config/default.yml#L292
|
373
|
+
RSpec/NestedGroups:
|
374
|
+
Description: Checks for nested example groups.
|
375
|
+
Enabled: true
|
376
|
+
# Default: 3
|
377
|
+
Max: 4
|
378
|
+
|
379
|
+
# https://github.com/rubocop-hq/rubocop-rspec/blob/c1fd129a59e650b8af518ae2e62848aa7eb8498e/config/default.yml#L366
|
380
|
+
RSpec/ScatteredSetup:
|
381
|
+
Enabled: true
|
382
|
+
|
383
|
+
# Enable in future
|
384
|
+
FactoryBot/AttributeDefinedStatically:
|
385
|
+
Enabled: false
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
3
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in sidekiq-prometheus-exporter.gemspec
|
6
6
|
gemspec
|
data/README.md
CHANGED
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'sidekiq/prometheus/exporter'
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +10,5 @@ require "sidekiq/prometheus/exporter"
|
|
10
10
|
# require "pry"
|
11
11
|
# Pry.start
|
12
12
|
|
13
|
-
require
|
13
|
+
require 'irb'
|
14
14
|
IRB.start(__FILE__)
|
data/examples/sidekiq/sidekiq.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# This file was generated by Appraisal
|
2
2
|
|
3
|
-
source
|
3
|
+
source 'https://rubygems.org'
|
4
4
|
|
5
|
-
gem
|
6
|
-
gem
|
7
|
-
gem
|
8
|
-
gem
|
9
|
-
gem
|
5
|
+
gem 'concurrent-ruby'
|
6
|
+
gem 'redis', '>= 3.3.5'
|
7
|
+
gem 'sidekiq', '= 3.3.1'
|
8
|
+
gem 'sinatra'
|
9
|
+
gem 'slim'
|
10
10
|
|
11
|
-
gemspec path:
|
11
|
+
gemspec path: '../'
|
@@ -38,13 +38,14 @@ GEM
|
|
38
38
|
diff-lcs (1.3)
|
39
39
|
docile (1.1.5)
|
40
40
|
hitimes (1.2.6)
|
41
|
+
jaro_winkler (1.5.1)
|
41
42
|
json (2.1.0)
|
42
43
|
method_source (0.9.0)
|
43
44
|
mustermann (1.0.1)
|
44
45
|
parallel (1.12.1)
|
45
|
-
parser (2.
|
46
|
-
ast (~> 2.
|
47
|
-
powerpack (0.1.
|
46
|
+
parser (2.5.1.2)
|
47
|
+
ast (~> 2.4.0)
|
48
|
+
powerpack (0.1.2)
|
48
49
|
pry (0.11.3)
|
49
50
|
coderay (~> 1.1.0)
|
50
51
|
method_source (~> 0.9.0)
|
@@ -74,14 +75,17 @@ GEM
|
|
74
75
|
diff-lcs (>= 1.2.0, < 2.0)
|
75
76
|
rspec-support (~> 3.7.0)
|
76
77
|
rspec-support (3.7.1)
|
77
|
-
rubocop (0.
|
78
|
+
rubocop (0.58.2)
|
79
|
+
jaro_winkler (~> 1.5.1)
|
78
80
|
parallel (~> 1.10)
|
79
|
-
parser (>= 2.
|
81
|
+
parser (>= 2.5, != 2.5.1.1)
|
80
82
|
powerpack (~> 0.1)
|
81
83
|
rainbow (>= 2.2.2, < 4.0)
|
82
84
|
ruby-progressbar (~> 1.7)
|
83
85
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
84
|
-
|
86
|
+
rubocop-rspec (1.28.0)
|
87
|
+
rubocop (>= 0.58.0)
|
88
|
+
ruby-progressbar (1.10.0)
|
85
89
|
sidekiq (3.3.1)
|
86
90
|
celluloid (>= 0.16.0)
|
87
91
|
connection_pool (>= 2.1.1)
|
@@ -106,7 +110,7 @@ GEM
|
|
106
110
|
tilt (2.0.8)
|
107
111
|
timers (4.1.2)
|
108
112
|
hitimes
|
109
|
-
unicode-display_width (1.
|
113
|
+
unicode-display_width (1.4.0)
|
110
114
|
|
111
115
|
PLATFORMS
|
112
116
|
ruby
|
@@ -121,11 +125,12 @@ DEPENDENCIES
|
|
121
125
|
rake (~> 10.0)
|
122
126
|
redis (>= 3.3.5)
|
123
127
|
rspec (~> 3.0)
|
124
|
-
rubocop (~> 0.
|
128
|
+
rubocop (~> 0.58)
|
129
|
+
rubocop-rspec (~> 1.28.0)
|
125
130
|
sidekiq (= 3.3.1)
|
126
131
|
sidekiq-prometheus-exporter!
|
127
132
|
sinatra
|
128
133
|
slim
|
129
134
|
|
130
135
|
BUNDLED WITH
|
131
|
-
1.16.
|
136
|
+
1.16.2
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# This file was generated by Appraisal
|
2
2
|
|
3
|
-
source
|
3
|
+
source 'https://rubygems.org'
|
4
4
|
|
5
|
-
gem
|
6
|
-
gem
|
7
|
-
gem
|
8
|
-
gem
|
9
|
-
gem
|
5
|
+
gem 'concurrent-ruby'
|
6
|
+
gem 'redis', '>= 3.3.5'
|
7
|
+
gem 'sidekiq', '~> 3.0'
|
8
|
+
gem 'sinatra'
|
9
|
+
gem 'slim'
|
10
10
|
|
11
|
-
gemspec path:
|
11
|
+
gemspec path: '../'
|
@@ -38,13 +38,14 @@ GEM
|
|
38
38
|
diff-lcs (1.3)
|
39
39
|
docile (1.1.5)
|
40
40
|
hitimes (1.2.6)
|
41
|
+
jaro_winkler (1.5.1)
|
41
42
|
json (2.1.0)
|
42
43
|
method_source (0.9.0)
|
43
44
|
mustermann (1.0.1)
|
44
45
|
parallel (1.12.1)
|
45
|
-
parser (2.
|
46
|
-
ast (~> 2.
|
47
|
-
powerpack (0.1.
|
46
|
+
parser (2.5.1.2)
|
47
|
+
ast (~> 2.4.0)
|
48
|
+
powerpack (0.1.2)
|
48
49
|
pry (0.11.3)
|
49
50
|
coderay (~> 1.1.0)
|
50
51
|
method_source (~> 0.9.0)
|
@@ -74,14 +75,17 @@ GEM
|
|
74
75
|
diff-lcs (>= 1.2.0, < 2.0)
|
75
76
|
rspec-support (~> 3.7.0)
|
76
77
|
rspec-support (3.7.1)
|
77
|
-
rubocop (0.
|
78
|
+
rubocop (0.58.2)
|
79
|
+
jaro_winkler (~> 1.5.1)
|
78
80
|
parallel (~> 1.10)
|
79
|
-
parser (>= 2.
|
81
|
+
parser (>= 2.5, != 2.5.1.1)
|
80
82
|
powerpack (~> 0.1)
|
81
83
|
rainbow (>= 2.2.2, < 4.0)
|
82
84
|
ruby-progressbar (~> 1.7)
|
83
85
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
84
|
-
|
86
|
+
rubocop-rspec (1.28.0)
|
87
|
+
rubocop (>= 0.58.0)
|
88
|
+
ruby-progressbar (1.10.0)
|
85
89
|
sidekiq (3.3.1)
|
86
90
|
celluloid (>= 0.16.0)
|
87
91
|
connection_pool (>= 2.1.1)
|
@@ -106,7 +110,7 @@ GEM
|
|
106
110
|
tilt (2.0.8)
|
107
111
|
timers (4.1.2)
|
108
112
|
hitimes
|
109
|
-
unicode-display_width (1.
|
113
|
+
unicode-display_width (1.4.0)
|
110
114
|
|
111
115
|
PLATFORMS
|
112
116
|
ruby
|
@@ -121,11 +125,12 @@ DEPENDENCIES
|
|
121
125
|
rake (~> 10.0)
|
122
126
|
redis (>= 3.3.5)
|
123
127
|
rspec (~> 3.0)
|
124
|
-
rubocop (~> 0.
|
128
|
+
rubocop (~> 0.58)
|
129
|
+
rubocop-rspec (~> 1.28.0)
|
125
130
|
sidekiq (~> 3.0)
|
126
131
|
sidekiq-prometheus-exporter!
|
127
132
|
sinatra
|
128
133
|
slim
|
129
134
|
|
130
135
|
BUNDLED WITH
|
131
|
-
1.16.
|
136
|
+
1.16.2
|
@@ -20,12 +20,13 @@ GEM
|
|
20
20
|
connection_pool (2.2.1)
|
21
21
|
diff-lcs (1.3)
|
22
22
|
docile (1.1.5)
|
23
|
+
jaro_winkler (1.5.1)
|
23
24
|
json (2.1.0)
|
24
25
|
method_source (0.9.0)
|
25
26
|
parallel (1.12.1)
|
26
|
-
parser (2.
|
27
|
-
ast (~> 2.
|
28
|
-
powerpack (0.1.
|
27
|
+
parser (2.5.1.2)
|
28
|
+
ast (~> 2.4.0)
|
29
|
+
powerpack (0.1.2)
|
29
30
|
pry (0.11.3)
|
30
31
|
coderay (~> 1.1.0)
|
31
32
|
method_source (~> 0.9.0)
|
@@ -53,14 +54,17 @@ GEM
|
|
53
54
|
diff-lcs (>= 1.2.0, < 2.0)
|
54
55
|
rspec-support (~> 3.7.0)
|
55
56
|
rspec-support (3.7.1)
|
56
|
-
rubocop (0.
|
57
|
+
rubocop (0.58.2)
|
58
|
+
jaro_winkler (~> 1.5.1)
|
57
59
|
parallel (~> 1.10)
|
58
|
-
parser (>= 2.
|
60
|
+
parser (>= 2.5, != 2.5.1.1)
|
59
61
|
powerpack (~> 0.1)
|
60
62
|
rainbow (>= 2.2.2, < 4.0)
|
61
63
|
ruby-progressbar (~> 1.7)
|
62
64
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
63
|
-
|
65
|
+
rubocop-rspec (1.28.0)
|
66
|
+
rubocop (>= 0.58.0)
|
67
|
+
ruby-progressbar (1.10.0)
|
64
68
|
sidekiq (4.2.10)
|
65
69
|
concurrent-ruby (~> 1.0)
|
66
70
|
connection_pool (~> 2.2, >= 2.2.0)
|
@@ -72,7 +76,7 @@ GEM
|
|
72
76
|
simplecov-html (~> 0.10.0)
|
73
77
|
simplecov-html (0.10.2)
|
74
78
|
thor (0.20.0)
|
75
|
-
unicode-display_width (1.
|
79
|
+
unicode-display_width (1.4.0)
|
76
80
|
|
77
81
|
PLATFORMS
|
78
82
|
ruby
|
@@ -86,9 +90,10 @@ DEPENDENCIES
|
|
86
90
|
rake (~> 10.0)
|
87
91
|
redis (>= 3.3.5)
|
88
92
|
rspec (~> 3.0)
|
89
|
-
rubocop (~> 0.
|
93
|
+
rubocop (~> 0.58)
|
94
|
+
rubocop-rspec (~> 1.28.0)
|
90
95
|
sidekiq (~> 4.0)
|
91
96
|
sidekiq-prometheus-exporter!
|
92
97
|
|
93
98
|
BUNDLED WITH
|
94
|
-
1.16.
|
99
|
+
1.16.2
|
@@ -20,12 +20,13 @@ GEM
|
|
20
20
|
connection_pool (2.2.1)
|
21
21
|
diff-lcs (1.3)
|
22
22
|
docile (1.1.5)
|
23
|
+
jaro_winkler (1.5.1)
|
23
24
|
json (2.1.0)
|
24
25
|
method_source (0.9.0)
|
25
26
|
parallel (1.12.1)
|
26
|
-
parser (2.
|
27
|
-
ast (~> 2.
|
28
|
-
powerpack (0.1.
|
27
|
+
parser (2.5.1.2)
|
28
|
+
ast (~> 2.4.0)
|
29
|
+
powerpack (0.1.2)
|
29
30
|
pry (0.11.3)
|
30
31
|
coderay (~> 1.1.0)
|
31
32
|
method_source (~> 0.9.0)
|
@@ -53,14 +54,17 @@ GEM
|
|
53
54
|
diff-lcs (>= 1.2.0, < 2.0)
|
54
55
|
rspec-support (~> 3.7.0)
|
55
56
|
rspec-support (3.7.1)
|
56
|
-
rubocop (0.
|
57
|
+
rubocop (0.58.2)
|
58
|
+
jaro_winkler (~> 1.5.1)
|
57
59
|
parallel (~> 1.10)
|
58
|
-
parser (>= 2.
|
60
|
+
parser (>= 2.5, != 2.5.1.1)
|
59
61
|
powerpack (~> 0.1)
|
60
62
|
rainbow (>= 2.2.2, < 4.0)
|
61
63
|
ruby-progressbar (~> 1.7)
|
62
64
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
63
|
-
|
65
|
+
rubocop-rspec (1.28.0)
|
66
|
+
rubocop (>= 0.58.0)
|
67
|
+
ruby-progressbar (1.10.0)
|
64
68
|
sidekiq (5.1.1)
|
65
69
|
concurrent-ruby (~> 1.0)
|
66
70
|
connection_pool (~> 2.2, >= 2.2.0)
|
@@ -72,7 +76,7 @@ GEM
|
|
72
76
|
simplecov-html (~> 0.10.0)
|
73
77
|
simplecov-html (0.10.2)
|
74
78
|
thor (0.20.0)
|
75
|
-
unicode-display_width (1.
|
79
|
+
unicode-display_width (1.4.0)
|
76
80
|
|
77
81
|
PLATFORMS
|
78
82
|
ruby
|
@@ -86,9 +90,10 @@ DEPENDENCIES
|
|
86
90
|
rake (~> 10.0)
|
87
91
|
redis (>= 3.3.5)
|
88
92
|
rspec (~> 3.0)
|
89
|
-
rubocop (~> 0.
|
93
|
+
rubocop (~> 0.58)
|
94
|
+
rubocop-rspec (~> 1.28.0)
|
90
95
|
sidekiq (~> 5.0)
|
91
96
|
sidekiq-prometheus-exporter!
|
92
97
|
|
93
98
|
BUNDLED WITH
|
94
|
-
1.16.
|
99
|
+
1.16.2
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'erb'
|
3
4
|
require 'sidekiq/prometheus/exporter/version'
|
4
|
-
require 'sidekiq/
|
5
|
+
require 'sidekiq/prometheus/exporter/metrics'
|
5
6
|
|
6
7
|
module Sidekiq
|
7
8
|
module Prometheus
|
@@ -14,40 +15,13 @@ module Sidekiq
|
|
14
15
|
'Content-Type' => 'text/plain; version=0.0.4',
|
15
16
|
'Cache-Control' => 'no-cache'
|
16
17
|
}.freeze
|
17
|
-
|
18
|
-
METRICS_TEMPLATE = <<-TEXT.gsub(/^[^\r\n][[:space:]]{2,}/, '').freeze
|
19
|
-
# HELP sidekiq_processed_jobs_total The total number of processed jobs.
|
20
|
-
# TYPE sidekiq_processed_jobs_total counter
|
21
|
-
sidekiq_processed_jobs_total %<processed_jobs>d
|
18
|
+
TEMPLATE = ERB.new(File.read(File.expand_path('exporter/templates/metrics.erb', __dir__)))
|
22
19
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
# TYPE sidekiq_busy_workers gauge
|
29
|
-
sidekiq_busy_workers %<busy_workers>d
|
30
|
-
|
31
|
-
# HELP sidekiq_enqueued_jobs The number of enqueued jobs.
|
32
|
-
# TYPE sidekiq_enqueued_jobs gauge
|
33
|
-
sidekiq_enqueued_jobs %<enqueued_jobs>d
|
34
|
-
|
35
|
-
# HELP sidekiq_scheduled_jobs The number of jobs scheduled for a future execution.
|
36
|
-
# TYPE sidekiq_scheduled_jobs gauge
|
37
|
-
sidekiq_scheduled_jobs %<scheduled_jobs>d
|
38
|
-
|
39
|
-
# HELP sidekiq_retry_jobs The number of jobs scheduled for the next try.
|
40
|
-
# TYPE sidekiq_retry_jobs gauge
|
41
|
-
sidekiq_retry_jobs %<retry_jobs>d
|
42
|
-
|
43
|
-
# HELP sidekiq_dead_jobs The number of jobs being dead.
|
44
|
-
# TYPE sidekiq_dead_jobs gauge
|
45
|
-
sidekiq_dead_jobs %<dead_jobs>d
|
46
|
-
|
47
|
-
# HELP sidekiq_queue_latency_seconds The amount of seconds between oldest job being pushed to the queue and current time.
|
48
|
-
# TYPE sidekiq_queue_latency_seconds gauge
|
49
|
-
%<queues_latency>s
|
50
|
-
TEXT
|
20
|
+
def self.registered(app)
|
21
|
+
app.get('/metrics') do
|
22
|
+
Sidekiq::Prometheus::Exporter.call(REQUEST_METHOD => HTTP_GET)
|
23
|
+
end
|
24
|
+
end
|
51
25
|
|
52
26
|
def self.to_app
|
53
27
|
Rack::Builder.app do
|
@@ -60,30 +34,9 @@ module Sidekiq
|
|
60
34
|
def self.call(env)
|
61
35
|
return [404, HEADERS, [NOT_FOUND_TEXT]] if env[REQUEST_METHOD] != HTTP_GET
|
62
36
|
|
63
|
-
|
64
|
-
queues_latency = Sidekiq::Queue.all.map do |queue|
|
65
|
-
format(LATENCY_TEMPLATE, name: queue.name, latency: queue.latency)
|
66
|
-
end
|
67
|
-
body = format(
|
68
|
-
METRICS_TEMPLATE,
|
69
|
-
processed_jobs: stats.processed,
|
70
|
-
scheduled_jobs: stats.scheduled_size,
|
71
|
-
enqueued_jobs: stats.enqueued,
|
72
|
-
failed_jobs: stats.failed,
|
73
|
-
retry_jobs: stats.retry_size,
|
74
|
-
dead_jobs: stats.dead_size,
|
75
|
-
busy_workers: stats.workers_size,
|
76
|
-
queues_latency: queues_latency * "\n"
|
77
|
-
)
|
78
|
-
|
37
|
+
body = TEMPLATE.result(Metrics.new.__binding__).chomp!
|
79
38
|
[200, HEADERS, [body]]
|
80
39
|
end
|
81
|
-
|
82
|
-
def self.registered(app)
|
83
|
-
app.get('/metrics') do
|
84
|
-
Sidekiq::Prometheus::Exporter.call(REQUEST_METHOD => HTTP_GET)
|
85
|
-
end
|
86
|
-
end
|
87
40
|
end
|
88
41
|
end
|
89
42
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'sidekiq/api'
|
4
|
+
|
5
|
+
class Metrics
|
6
|
+
QueueStats = Struct.new(:name, :size, :latency)
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@overview_stats = Sidekiq::Stats.new
|
10
|
+
@queues_stats = queues_stats
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def queues_stats
|
16
|
+
Sidekiq::Queue.all.map do |queue|
|
17
|
+
QueueStats.new(queue.name, queue.size, queue.latency)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# HELP sidekiq_processed_jobs_total The total number of processed jobs.
|
2
|
+
# TYPE sidekiq_processed_jobs_total counter
|
3
|
+
sidekiq_processed_jobs_total <%= format('%d', @overview_stats.processed) %>
|
4
|
+
|
5
|
+
# HELP sidekiq_failed_jobs_total The total number of failed jobs.
|
6
|
+
# TYPE sidekiq_failed_jobs_total counter
|
7
|
+
sidekiq_failed_jobs_total <%= format('%d', @overview_stats.failed) %>
|
8
|
+
|
9
|
+
# HELP sidekiq_busy_workers The number of workers performing the job.
|
10
|
+
# TYPE sidekiq_busy_workers gauge
|
11
|
+
sidekiq_busy_workers <%= format('%d', @overview_stats.workers_size) %>
|
12
|
+
|
13
|
+
# HELP sidekiq_enqueued_jobs The number of enqueued jobs.
|
14
|
+
# TYPE sidekiq_enqueued_jobs gauge
|
15
|
+
sidekiq_enqueued_jobs <%= format('%d', @overview_stats.enqueued) %>
|
16
|
+
|
17
|
+
# HELP sidekiq_scheduled_jobs The number of jobs scheduled for a future execution.
|
18
|
+
# TYPE sidekiq_scheduled_jobs gauge
|
19
|
+
sidekiq_scheduled_jobs <%= format('%d', @overview_stats.scheduled_size) %>
|
20
|
+
|
21
|
+
# HELP sidekiq_retry_jobs The number of jobs scheduled for the next try.
|
22
|
+
# TYPE sidekiq_retry_jobs gauge
|
23
|
+
sidekiq_retry_jobs <%= format('%d', @overview_stats.retry_size) %>
|
24
|
+
|
25
|
+
# HELP sidekiq_dead_jobs The number of jobs being dead.
|
26
|
+
# TYPE sidekiq_dead_jobs gauge
|
27
|
+
sidekiq_dead_jobs <%= format('%d', @overview_stats.dead_size) %>
|
28
|
+
|
29
|
+
# HELP sidekiq_queue_latency_seconds The amount of seconds between oldest job being pushed to the queue and current time.
|
30
|
+
# TYPE sidekiq_queue_latency_seconds gauge
|
31
|
+
<% @queues_stats.each do |queue| %>sidekiq_queue_latency_seconds{name="<%= queue.name %>"} <%= format('%.3f', queue.latency) %>
|
32
|
+
<% end %>
|
33
|
+
# HELP sidekiq_queue_size The amount of jobs pushed to the queue.
|
34
|
+
# TYPE sidekiq_queue_size gauge
|
35
|
+
<% @queues_stats.each do |queue| %>sidekiq_queue_size{name="<%= queue.name %>"} <%= format('%d', queue.size) %>
|
36
|
+
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path('
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require 'sidekiq/prometheus/exporter/version'
|
6
6
|
|
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.name = 'sidekiq-prometheus-exporter'
|
9
9
|
spec.version = Sidekiq::Prometheus::Exporter::VERSION
|
10
10
|
spec.authors = ['Sergey Fedorov']
|
11
|
-
spec.email = %w
|
11
|
+
spec.email = %w(oni.strech@gmail.com)
|
12
12
|
|
13
13
|
spec.summary = 'Prometheus exporter for the Sidekiq'
|
14
14
|
spec.description = 'All the basic metrics prepared for Prometheus'
|
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
end
|
27
27
|
spec.bindir = 'exe'
|
28
28
|
spec.executables = spec.files.grep(%r{^exe/}) { |file| File.basename(file) }
|
29
|
-
spec.require_paths = %w
|
29
|
+
spec.require_paths = %w(lib)
|
30
30
|
|
31
31
|
spec.add_dependency 'sidekiq', '>= 3.3.1'
|
32
32
|
|
@@ -37,5 +37,6 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.add_development_dependency 'rack-test', '~> 0.8'
|
38
38
|
spec.add_development_dependency 'rake', '~> 10.0'
|
39
39
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
40
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
40
|
+
spec.add_development_dependency 'rubocop', '~> 0.58'
|
41
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.28.0'
|
41
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-prometheus-exporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Fedorov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sidekiq
|
@@ -128,14 +128,28 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0.
|
131
|
+
version: '0.58'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0.
|
138
|
+
version: '0.58'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubocop-rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 1.28.0
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 1.28.0
|
139
153
|
description: All the basic metrics prepared for Prometheus
|
140
154
|
email:
|
141
155
|
- oni.strech@gmail.com
|
@@ -143,8 +157,10 @@ executables: []
|
|
143
157
|
extensions: []
|
144
158
|
extra_rdoc_files: []
|
145
159
|
files:
|
160
|
+
- ".codeclimate.yml"
|
146
161
|
- ".gitignore"
|
147
162
|
- ".rspec"
|
163
|
+
- ".rubocop.yml"
|
148
164
|
- ".travis.yml"
|
149
165
|
- Appraisals
|
150
166
|
- Gemfile
|
@@ -171,6 +187,8 @@ files:
|
|
171
187
|
- gemfiles/sidekiq_5.x.gemfile
|
172
188
|
- gemfiles/sidekiq_5.x.gemfile.lock
|
173
189
|
- lib/sidekiq/prometheus/exporter.rb
|
190
|
+
- lib/sidekiq/prometheus/exporter/metrics.rb
|
191
|
+
- lib/sidekiq/prometheus/exporter/templates/metrics.erb
|
174
192
|
- lib/sidekiq/prometheus/exporter/version.rb
|
175
193
|
- sidekiq-prometheus-exporter.gemspec
|
176
194
|
homepage: https://github.com/Strech/sidekiq-prometheus-exporter
|