prometheus_aggregator 0.1.1 → 0.2.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 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