gruf-prometheus 2.3.1 → 2.5.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 +10 -0
- data/README.md +1 -1
- data/gruf-prometheus.gemspec +4 -16
- data/lib/gruf/prometheus/client/collector.rb +4 -4
- data/lib/gruf/prometheus/client/interceptor.rb +7 -7
- data/lib/gruf/prometheus/collector.rb +1 -0
- data/lib/gruf/prometheus/configuration.rb +3 -3
- data/lib/gruf/prometheus/hook.rb +1 -3
- data/lib/gruf/prometheus/server/collector.rb +4 -4
- data/lib/gruf/prometheus/server/interceptor.rb +6 -6
- data/lib/gruf/prometheus/version.rb +1 -1
- metadata +4 -147
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b1831369701b8f7b4c858654f06497d928f29f34701f3f9bdb8292b3e07510b
|
4
|
+
data.tar.gz: c0c63008b040f8fa029f9a51f3dcdf840d3cf53ac2f0f1133c88edfea49dd99e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21036c865a738cca214200eb1a0eff9d8e7ce12c6e3d0311e35c9c8e299bacec9503447773f2516b20bba22852ab7c4ec44d0405de6d70c87cb60575f7897136
|
7
|
+
data.tar.gz: 0540c1f7b69d2387abeb2d2122885ef78ab56a01893633fd0ea559e3d7c9e5f390b0f3a5d46337fe781bc0f81081ee36b3777b29c1eed146466b50fa2acc6979
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,16 @@ Changelog for the gruf-prometheus gem.
|
|
2
2
|
|
3
3
|
### Pending Release
|
4
4
|
|
5
|
+
### 2.5.0
|
6
|
+
|
7
|
+
- Add support for Ruby 3.4, 3.3
|
8
|
+
- Drop support for Ruby 3.0, 3.1
|
9
|
+
|
10
|
+
### 2.4.0
|
11
|
+
|
12
|
+
- Add support for Ruby 3.2
|
13
|
+
- Drop support for Ruby 2.7 (EOL March 2023)
|
14
|
+
|
5
15
|
### 2.3.1
|
6
16
|
|
7
17
|
- Ensure ActiveRecord collector is started on gruf hook
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://circleci.com/gh/bigcommerce/gruf-prometheus/tree/main) [](https://badge.fury.io/rb/gruf-prometheus) [](https://inch-ci.org/github/bigcommerce/gruf-prometheus?branch=main)
|
4
4
|
|
5
|
-
Adds Prometheus support for [gruf](https://github.com/bigcommerce/gruf) 2.7.0+. Supports Ruby
|
5
|
+
Adds Prometheus support for [gruf](https://github.com/bigcommerce/gruf) 2.7.0+. Supports Ruby 3.x.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
data/gruf-prometheus.gemspec
CHANGED
@@ -31,22 +31,10 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.metadata['rubygems_mfa_required'] = 'true'
|
32
32
|
|
33
33
|
spec.files = Dir['README.md', 'CHANGELOG.md', 'CODE_OF_CONDUCT.md', 'lib/**/*', 'gruf-prometheus.gemspec']
|
34
|
-
spec.require_paths = [
|
35
|
-
spec.required_ruby_version = '>= 2
|
34
|
+
spec.require_paths = %w[lib]
|
35
|
+
spec.required_ruby_version = '>= 3.2', '< 4'
|
36
36
|
|
37
37
|
# Runtime dependencies
|
38
|
-
spec.
|
39
|
-
spec.
|
40
|
-
|
41
|
-
# Development dependencies
|
42
|
-
spec.add_development_dependency 'bundler-audit', '>= 0.6'
|
43
|
-
spec.add_development_dependency 'pry', '>= 0.13'
|
44
|
-
spec.add_development_dependency 'rake', '>= 13.0'
|
45
|
-
spec.add_development_dependency 'rspec', '>= 3.10'
|
46
|
-
spec.add_development_dependency 'rspec_junit_formatter', '>= 0.4'
|
47
|
-
spec.add_development_dependency 'rubocop', '>= 1.1'
|
48
|
-
spec.add_development_dependency 'rubocop-packaging', '~> 0.5'
|
49
|
-
spec.add_development_dependency 'rubocop-performance', '~> 1.8'
|
50
|
-
spec.add_development_dependency 'rubocop-thread_safety', '~> 0.3'
|
51
|
-
spec.add_development_dependency 'simplecov', '>= 0.19'
|
38
|
+
spec.add_dependency 'bc-prometheus-ruby', '>= 0.5.1'
|
39
|
+
spec.add_dependency 'gruf', '>= 2.7'
|
52
40
|
end
|
@@ -39,7 +39,7 @@ module Gruf
|
|
39
39
|
def started_total(request_context:)
|
40
40
|
push(
|
41
41
|
grpc_client_started_total: 1,
|
42
|
-
custom_labels: custom_labels(request_context:
|
42
|
+
custom_labels: custom_labels(request_context:)
|
43
43
|
)
|
44
44
|
end
|
45
45
|
|
@@ -52,7 +52,7 @@ module Gruf
|
|
52
52
|
|
53
53
|
push(
|
54
54
|
grpc_client_failed_total: 1,
|
55
|
-
custom_labels: custom_labels(request_context:
|
55
|
+
custom_labels: custom_labels(request_context:)
|
56
56
|
)
|
57
57
|
end
|
58
58
|
|
@@ -63,7 +63,7 @@ module Gruf
|
|
63
63
|
def completed(request_context:, result:)
|
64
64
|
push(
|
65
65
|
grpc_client_completed: 1,
|
66
|
-
custom_labels: custom_labels(request_context
|
66
|
+
custom_labels: custom_labels(request_context:, result:)
|
67
67
|
)
|
68
68
|
end
|
69
69
|
|
@@ -74,7 +74,7 @@ module Gruf
|
|
74
74
|
def completed_latency_seconds(request_context:, result:)
|
75
75
|
push(
|
76
76
|
grpc_client_completed_latency_seconds: result.elapsed.to_f,
|
77
|
-
custom_labels: custom_labels(request_context
|
77
|
+
custom_labels: custom_labels(request_context:, result:)
|
78
78
|
)
|
79
79
|
end
|
80
80
|
|
@@ -25,10 +25,10 @@ module Gruf
|
|
25
25
|
##
|
26
26
|
# Intercept the call and send metrics
|
27
27
|
#
|
28
|
-
def call(request_context:, &
|
29
|
-
result = ::Gruf::Interceptors::Timer.time(&
|
28
|
+
def call(request_context:, &)
|
29
|
+
result = ::Gruf::Interceptors::Timer.time(&)
|
30
30
|
|
31
|
-
send_metrics(request_context
|
31
|
+
send_metrics(request_context:, result:)
|
32
32
|
|
33
33
|
raise result.message unless result.successful?
|
34
34
|
|
@@ -42,10 +42,10 @@ module Gruf
|
|
42
42
|
# @param [Gruf::Interceptors::Timer::Result] result
|
43
43
|
#
|
44
44
|
def send_metrics(request_context:, result:)
|
45
|
-
prometheus_collector.started_total(request_context:
|
46
|
-
prometheus_collector.failed_total(request_context
|
47
|
-
prometheus_collector.completed(request_context
|
48
|
-
prometheus_collector.completed_latency_seconds(request_context
|
45
|
+
prometheus_collector.started_total(request_context:)
|
46
|
+
prometheus_collector.failed_total(request_context:, result:) unless result.successful?
|
47
|
+
prometheus_collector.completed(request_context:, result:)
|
48
|
+
prometheus_collector.completed_latency_seconds(request_context:, result:) if measure_latency?
|
49
49
|
rescue StandardError => e
|
50
50
|
# we don't want this to affect actual RPC execution, so just log an error and move on
|
51
51
|
Gruf.logger.error "Failed registering metric to prometheus type collector: #{e.message} - #{e.class.name}"
|
@@ -71,7 +71,7 @@ module Gruf
|
|
71
71
|
#
|
72
72
|
def reset
|
73
73
|
VALID_CONFIG_KEYS.each do |k, v|
|
74
|
-
send("#{k}="
|
74
|
+
send(:"#{k}=", v)
|
75
75
|
end
|
76
76
|
self.process_label = ENV.fetch('PROMETHEUS_PROCESS_LABEL', 'grpc').to_s
|
77
77
|
self.process_name = ENV.fetch('PROMETHEUS_PROCESS_NAME', 'grpc').to_s
|
@@ -86,8 +86,8 @@ module Gruf
|
|
86
86
|
# @return [String] The current Ruby environment
|
87
87
|
#
|
88
88
|
def environment
|
89
|
-
if defined?(Rails)
|
90
|
-
Rails.env.to_s
|
89
|
+
if defined?(::Rails)
|
90
|
+
::Rails.env.to_s
|
91
91
|
else
|
92
92
|
(ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development').to_s
|
93
93
|
end
|
data/lib/gruf/prometheus/hook.rb
CHANGED
@@ -39,7 +39,7 @@ module Gruf
|
|
39
39
|
def started_total(request:)
|
40
40
|
push(
|
41
41
|
grpc_server_started_total: 1,
|
42
|
-
custom_labels: custom_labels(request:
|
42
|
+
custom_labels: custom_labels(request:)
|
43
43
|
)
|
44
44
|
end
|
45
45
|
|
@@ -52,7 +52,7 @@ module Gruf
|
|
52
52
|
|
53
53
|
push(
|
54
54
|
grpc_server_failed_total: 1,
|
55
|
-
custom_labels: custom_labels(request:
|
55
|
+
custom_labels: custom_labels(request:)
|
56
56
|
)
|
57
57
|
end
|
58
58
|
|
@@ -63,7 +63,7 @@ module Gruf
|
|
63
63
|
def handled_total(request:, result:)
|
64
64
|
push(
|
65
65
|
grpc_server_handled_total: 1,
|
66
|
-
custom_labels: custom_labels(request
|
66
|
+
custom_labels: custom_labels(request:, result:)
|
67
67
|
)
|
68
68
|
end
|
69
69
|
|
@@ -74,7 +74,7 @@ module Gruf
|
|
74
74
|
def handled_latency_seconds(request:, result:)
|
75
75
|
push(
|
76
76
|
grpc_server_handled_latency_seconds: result.elapsed.to_f,
|
77
|
-
custom_labels: custom_labels(request
|
77
|
+
custom_labels: custom_labels(request:, result:)
|
78
78
|
)
|
79
79
|
end
|
80
80
|
|
@@ -25,8 +25,8 @@ module Gruf
|
|
25
25
|
##
|
26
26
|
# Intercept the call and send metrics
|
27
27
|
#
|
28
|
-
def call(&
|
29
|
-
result = ::Gruf::Interceptors::Timer.time(&
|
28
|
+
def call(&)
|
29
|
+
result = ::Gruf::Interceptors::Timer.time(&)
|
30
30
|
|
31
31
|
send_metrics(result)
|
32
32
|
|
@@ -41,10 +41,10 @@ module Gruf
|
|
41
41
|
# @param [Gruf::Interceptors::Timer::Result] result
|
42
42
|
#
|
43
43
|
def send_metrics(result)
|
44
|
-
prometheus_collector.started_total(request:
|
45
|
-
prometheus_collector.failed_total(request
|
46
|
-
prometheus_collector.handled_total(request
|
47
|
-
prometheus_collector.handled_latency_seconds(request
|
44
|
+
prometheus_collector.started_total(request:)
|
45
|
+
prometheus_collector.failed_total(request:, result:) unless result.successful?
|
46
|
+
prometheus_collector.handled_total(request:, result:)
|
47
|
+
prometheus_collector.handled_latency_seconds(request:, result:) if measure_latency?
|
48
48
|
rescue StandardError => e
|
49
49
|
# we don't want this to affect actual RPC execution, so just log an error and move on
|
50
50
|
Gruf.logger.error "Failed registering metric to prometheus type collector: #{e.message} - #{e.class.name}"
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gruf-prometheus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shaun McCormick
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-06-23 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: bc-prometheus-ruby
|
@@ -38,146 +37,6 @@ dependencies:
|
|
38
37
|
- - ">="
|
39
38
|
- !ruby/object:Gem::Version
|
40
39
|
version: '2.7'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: bundler-audit
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.6'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.6'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: pry
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.13'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0.13'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rake
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '13.0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '13.0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rspec
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '3.10'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '3.10'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rspec_junit_formatter
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0.4'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0.4'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rubocop
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '1.1'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '1.1'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop-packaging
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0.5'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0.5'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop-performance
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '1.8'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '1.8'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: rubocop-thread_safety
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - "~>"
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0.3'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - "~>"
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0.3'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: simplecov
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0.19'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0.19'
|
181
40
|
description: Prometheus support for gruf
|
182
41
|
email:
|
183
42
|
- shaun.mccormick@bigcommerce.com
|
@@ -207,7 +66,6 @@ licenses:
|
|
207
66
|
- MIT
|
208
67
|
metadata:
|
209
68
|
rubygems_mfa_required: 'true'
|
210
|
-
post_install_message:
|
211
69
|
rdoc_options: []
|
212
70
|
require_paths:
|
213
71
|
- lib
|
@@ -215,7 +73,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
215
73
|
requirements:
|
216
74
|
- - ">="
|
217
75
|
- !ruby/object:Gem::Version
|
218
|
-
version: '2
|
76
|
+
version: '3.2'
|
219
77
|
- - "<"
|
220
78
|
- !ruby/object:Gem::Version
|
221
79
|
version: '4'
|
@@ -225,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
83
|
- !ruby/object:Gem::Version
|
226
84
|
version: '0'
|
227
85
|
requirements: []
|
228
|
-
rubygems_version: 3.
|
229
|
-
signing_key:
|
86
|
+
rubygems_version: 3.6.2
|
230
87
|
specification_version: 4
|
231
88
|
summary: Prometheus support for gruf
|
232
89
|
test_files: []
|