yabeda-prometheus 0.1.2 → 0.1.3

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: 3853e35a99555c0cba4020b448c677d49209b0dfde07d7852a075ef032c844bb
4
- data.tar.gz: 7fd7ba53e5d5c3d5c59ffaa371819867bbe09bd363cfc5adcc747584bc21a721
3
+ metadata.gz: 99160ecfcc0c1d30b0ce7c02444eb245958cbf05a09ebbed89f016ab5b1e2118
4
+ data.tar.gz: 85918fdb24afad2f8d3bd3d64fea86be86e97b5f740cb8affce9f5cf0fdf336c
5
5
  SHA512:
6
- metadata.gz: e50aeccdde88032fa4347fe79dc94f276b4d1681288d02ed90ac2246dceab796ae24c9a3201b287eba8fed157c7a11d379aac79c30dd268b8df78f57a18a9b44
7
- data.tar.gz: b20bc4cd6cee5fc905e2bd8597cb046e778064b4cbc2f0c0802a7a8777a5d003bdbd5cfe2ff7622f6ef6d6d91c2289c5c5ed26cd6ab4e3aef38024bedfcc9763
6
+ metadata.gz: 7c73f0756cba70bd4b6da0532108aec67013532f0fbb96907677956db0aeede567fb3f2d32bec1b922ea3eebb0a8c48643de2ccdf798c8a3a77f389b37ad5b46
7
+ data.tar.gz: 8704ba138071f06b6dc8eecdd6fbbb9349a4d1585a647f5d0ec0050d37dae69225f06e0fbbd7b802591b16d54687d9c079b111658a0a6fbec525f983783fd693
data/CHANGELOG.md ADDED
@@ -0,0 +1,37 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
+
8
+
9
+ ## 0.1.3 - 2018-10-31
10
+
11
+ ### Added
12
+
13
+ - Ability to mount exporter to Rails application routes as standalone Rack app. @Envek
14
+
15
+ ```ruby
16
+ Rails.application.routes.draw do
17
+ mount Yabeda::Prometheus::Exporter => "/metrics"
18
+ end
19
+ ```
20
+
21
+ ## 0.1.2 - 2018-10-17
22
+
23
+ ### Changed
24
+
25
+ - Renamed evil-metrics-prometheus gem to yabeda-prometheus. @Envek
26
+
27
+ ## 0.1.1 - 2018-10-05
28
+
29
+ ### Changed
30
+
31
+ - Eliminate data duplication in counters and gauges. @Envek
32
+
33
+ Use values stored in core gem metric objects and just let Prometheus to read them.
34
+
35
+ ## 0.1.0 - 2018-10-03
36
+
37
+ - Initial release of evil-metrics-prometheus gem. @Envek
data/README.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Yabeda::[Prometheus]
2
2
 
3
- Adapter for easy exporting your collected evil metrics from your application to the [Prometheus]!
3
+ [![Gem Version](https://badge.fury.io/rb/yabeda-prometheus.svg)](https://rubygems.org/gems/yabeda-prometheus)
4
+
5
+ Adapter for easy exporting your collected metrics from your application to the [Prometheus]!
6
+
7
+ <a href="https://evilmartians.com/?utm_source=yabeda-prometheus&utm_campaign=project_page">
8
+ <img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54">
9
+ </a>
10
+
4
11
 
5
12
  ## One more? Why not X?
6
13
 
@@ -12,9 +19,7 @@ Adapter for easy exporting your collected evil metrics from your application to
12
19
  Add this line to your application's Gemfile:
13
20
 
14
21
  ```ruby
15
- gem 'yabeda'
16
- # Then add monitoring system adapter, e.g.:
17
- # gem 'yabeda-prometheus'
22
+ gem 'yabeda-prometheus'
18
23
  ```
19
24
 
20
25
  And then execute:
@@ -31,7 +36,9 @@ And then execute:
31
36
  use Yabeda::Prometheus::Exporter
32
37
  ```
33
38
 
34
- Metrics will be available on `/metrics` path.
39
+ Metrics will be available on `/metrics` path (configured by `:path` option).
40
+
41
+ Also you can mount it in Rails application routes as standalone Rack application.
35
42
 
36
43
  2. Run web-server from long-running processes (delayed jobs, …):
37
44
 
@@ -4,11 +4,22 @@ require "prometheus/middleware/exporter"
4
4
 
5
5
  module Yabeda
6
6
  module Prometheus
7
+ # Rack application or middleware that provides metrics exposition endpoint
7
8
  class Exporter < ::Prometheus::Middleware::Exporter
9
+ NOT_FOUND_HANDLER = lambda do |_env|
10
+ [404, { "Content-Type" => "text/plain" }, ["Not Found\n"]]
11
+ end.freeze
12
+
8
13
  class << self
14
+ # Allows to use middleware as standalone rack application
15
+ def call(env)
16
+ @app ||= new(NOT_FOUND_HANDLER, path: "/")
17
+ @app.call(env)
18
+ end
19
+
9
20
  def start_metrics_server!
10
21
  Thread.new do
11
- default_port = ENV.fetch("PORT", 9310)
22
+ default_port = ENV.fetch("PORT", 9394)
12
23
  Rack::Handler::WEBrick.run(
13
24
  rack_app,
14
25
  Host: ENV["PROMETHEUS_EXPORTER_BIND"] || "0.0.0.0",
@@ -18,24 +29,22 @@ module Yabeda
18
29
  end
19
30
  end
20
31
 
21
- protected
22
-
23
- def rack_app(exporter = self)
32
+ def rack_app(exporter = self, path: "/metrics")
24
33
  Rack::Builder.new do
25
34
  use Rack::CommonLogger
26
35
  use Rack::ShowExceptions
27
- use exporter, registry: Yabeda::Prometheus.registry
28
- run ->(_env) do
29
- [404, { "Content-Type" => "text/plain" }, ["Not Found\n"]]
30
- end
36
+ use exporter, path: path
37
+ run NOT_FOUND_HANDLER
31
38
  end
32
39
  end
33
40
  end
34
41
 
42
+ def initialize(app, options = {})
43
+ super(app, options.merge(registry: Yabeda::Prometheus.registry))
44
+ end
45
+
35
46
  def call(env)
36
- if env["REQUEST_PATH"].start_with?(path)
37
- Yabeda.collectors.each(&:call)
38
- end
47
+ Yabeda.collectors.each(&:call) if env["PATH_INFO"] == path
39
48
  super
40
49
  end
41
50
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Yabeda
4
4
  module Prometheus
5
- VERSION = "0.1.2"
5
+ VERSION = "0.1.3"
6
6
  end
7
7
  end
@@ -14,6 +14,10 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = "https://github.com/yabeda-rb/yabeda-prometheus"
15
15
  spec.license = "MIT"
16
16
 
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/yabeda-rb/yabeda-prometheus"
19
+ spec.metadata["changelog_uri"] = "https://github.com/yabeda-rb/yabeda-prometheus/blob/master/CHANGELOG.md"
20
+
17
21
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
22
  f.match(%r{^(test|spec|features)/})
19
23
  end
@@ -24,7 +28,7 @@ Gem::Specification.new do |spec|
24
28
  spec.add_dependency "yabeda"
25
29
  spec.add_dependency "prometheus-client"
26
30
 
27
- spec.add_development_dependency "bundler", "~> 1.16"
31
+ spec.add_development_dependency "bundler", "~> 1.17"
28
32
  spec.add_development_dependency "rake", "~> 12.0"
29
33
  spec.add_development_dependency "rspec", "~> 3.0"
30
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yabeda-prometheus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Novikov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-17 00:00:00.000000000 Z
11
+ date: 2018-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yabeda
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: '1.17'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.16'
54
+ version: '1.17'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -91,6 +91,7 @@ files:
91
91
  - ".rspec"
92
92
  - ".rubocop.yml"
93
93
  - ".travis.yml"
94
+ - CHANGELOG.md
94
95
  - Gemfile
95
96
  - LICENSE.txt
96
97
  - README.md
@@ -108,7 +109,10 @@ files:
108
109
  homepage: https://github.com/yabeda-rb/yabeda-prometheus
109
110
  licenses:
110
111
  - MIT
111
- metadata: {}
112
+ metadata:
113
+ homepage_uri: https://github.com/yabeda-rb/yabeda-prometheus
114
+ source_code_uri: https://github.com/yabeda-rb/yabeda-prometheus
115
+ changelog_uri: https://github.com/yabeda-rb/yabeda-prometheus/blob/master/CHANGELOG.md
112
116
  post_install_message:
113
117
  rdoc_options: []
114
118
  require_paths: