prometheus_aggregator 0.1.1 → 0.2.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: d45c8c6cd6b0fd188c9ada186d4aeda1d92496d2504ce0b27c677d62581df340
4
- data.tar.gz: c67b4d21f26d469a2e986b8a7590ffe6bd0e79b5150b1a2307d440610cdb6b6d
3
+ metadata.gz: 34c0fa478beefc96a06b23dfd05adfbeac3f85081ac7db0e17e1e3bdda125d98
4
+ data.tar.gz: 180f8f8a059b84f53e0eb748ebd7dd318fc0f5981153da9dd5ceda004344a588
5
5
  SHA512:
6
- metadata.gz: 8588e367ab0bb50b04826540bc39fa0c5b3523d3eb704f702c23534d65123541f717fff0ae83240666e00e188e22a66d99c37ccb132954d406372eab0199b38a
7
- data.tar.gz: af1406ef3dee2db265e493a17df40211459144a928abfccd4731eb987d8977ad6fe77ecad6322b610c69488b61a7e839f07aecf63ceef7f23379475d22c01763
6
+ metadata.gz: 0aa3493611b035d70bc6dbe78871cae22a17539670a29ca71cefcf46b8111d248305b0fb915389a6c6bb588998f1c548751c8bf7ebfd03f77af9e05bfa9ec8ec
7
+ data.tar.gz: 44d8832fea6a20e4339b4cebd854e7b39ecb6afb69dd4d90745b98b6dd9d21c852c60c0fad3e4791ac8b93749ca07cc8e17809fb7861c6486ee8f666469d5a34
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /Gemfile.lock
10
+ /*.gem
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ ## 0.2.0 - 2018-11-07
2
+ - Add Faraday middleware
3
+
4
+ ## 0.1.1 - 2018-11-01
5
+ - Make queue capacity configurable
6
+
7
+ ## 0.1.0 - 2018-11-01
8
+ - Initial release, including thread/fork-safe client and Rack middleware
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "faraday"
4
+ require "prometheus_aggregator"
5
+
6
+ module PrometheusAggregator
7
+ class FaradayMiddleware < Faraday::Middleware
8
+ def initialize(app, options = {})
9
+ super(app)
10
+ @client = options[:client]
11
+ raise ArgumentError, ":client option is required" unless @client
12
+ end
13
+
14
+ def call(request_env)
15
+ start_time = Time.now
16
+ @app.call(request_env).on_complete do |response_env|
17
+ duration = Time.now - start_time
18
+ status_code = response_env[:status].to_s
19
+
20
+ begin
21
+ @client.counter(
22
+ name: "http_client_requests_total",
23
+ help: "The total number of HTTP requests sent by the client",
24
+ value: 1,
25
+ labels: labels(response_env).merge(code: status_code)
26
+ )
27
+
28
+ @client.histogram(
29
+ name: "http_client_request_duration_seconds",
30
+ help: "The HTTP response duration",
31
+ value: duration,
32
+ labels: labels(response_env)
33
+ )
34
+ rescue => err # rubocop:disable Style/RescueStandardError
35
+ # Let's be ultra defensive. Metrics should never break the app.
36
+ PrometheusAggregator.logger.error("FaradayMiddleware: #{err}")
37
+ end
38
+ end
39
+ end
40
+
41
+ private
42
+
43
+ def labels(response_env)
44
+ {
45
+ method: response_env[:method].to_s,
46
+ host: response_env[:url].host
47
+ }
48
+ end
49
+ end
50
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PrometheusAggregator
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 1.16"
28
28
  spec.add_development_dependency "excon", "~> 0.62"
29
+ spec.add_development_dependency "faraday", "~> 0.15"
29
30
  spec.add_development_dependency "minitest", "~> 5.0"
30
31
  spec.add_development_dependency "rack", "~> 2.0"
31
32
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus_aggregator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Marr
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-01 00:00:00.000000000 Z
11
+ date: 2018-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net_tcp_client
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.62'
55
+ - !ruby/object:Gem::Dependency
56
+ name: faraday
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.15'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.15'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: minitest
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -103,6 +117,7 @@ extra_rdoc_files: []
103
117
  files:
104
118
  - ".gitignore"
105
119
  - ".rubocop.yml"
120
+ - CHANGELOG.md
106
121
  - Gemfile
107
122
  - LICENSE.txt
108
123
  - README.md
@@ -110,6 +125,7 @@ files:
110
125
  - lib/prometheus_aggregator.rb
111
126
  - lib/prometheus_aggregator/client.rb
112
127
  - lib/prometheus_aggregator/exporter.rb
128
+ - lib/prometheus_aggregator/faraday_middleware.rb
113
129
  - lib/prometheus_aggregator/rack_middleware.rb
114
130
  - lib/prometheus_aggregator/version.rb
115
131
  - prometheus_aggregator.gemspec