yabeda-prometheus 0.2.0 → 0.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 +8 -0
- data/README.md +13 -0
- data/lib/yabeda/prometheus/adapter.rb +34 -3
- data/lib/yabeda/prometheus/version.rb +1 -1
- data/yabeda-prometheus.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59af7a9f1de7593f49c9d58f1f9517c15182a7000d86d1076fa06297371013e2
|
4
|
+
data.tar.gz: 470bb2054c3f3281754ba07c7fd3217c83213c139150c27dd52c0d5ee8577b02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fef847b5af1e283109303d04b3b9df56b8439a120dcad11ab7934dc5102147cd5fca35ae2719e05dd5d06c6ff06b752bcd566a3e13dd6bf26e64b0dec83e37b
|
7
|
+
data.tar.gz: 25e463b8f562504d21e856c99192ec516aec2dacf6faa75b20266d78421252a09ab57e57135f529189add2a8c78fafa9a7803b91949c0a3488a00030f92a7bfb
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
+
## 0.5.0 - 2020-01-29
|
9
|
+
|
10
|
+
### Added
|
11
|
+
|
12
|
+
- Support for metric aggregation when prometheus-client's Direct File Store is used. @Envek
|
13
|
+
|
14
|
+
See https://github.com/prometheus/client_ruby#aggregation-settings-for-multi-process-stores for details.
|
15
|
+
|
8
16
|
## 0.2.0 - 2020-01-14
|
9
17
|
|
10
18
|
### Changed
|
data/README.md
CHANGED
@@ -73,6 +73,19 @@ Prometheus::Client.config.data_store = Prometheus::Client::DataStores::DirectFil
|
|
73
73
|
|
74
74
|
See more information at [prometheus-client README](https://github.com/prometheus/client_ruby#data-stores).
|
75
75
|
|
76
|
+
### Aggregation settings
|
77
|
+
|
78
|
+
You can specify aggregation policy in gauges declaration:
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
group :some do
|
82
|
+
gauge :tasks do
|
83
|
+
comment "Number of test tasks"
|
84
|
+
aggregation :max
|
85
|
+
end
|
86
|
+
end
|
87
|
+
```
|
88
|
+
|
76
89
|
## Development
|
77
90
|
|
78
91
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "prometheus/client"
|
4
|
+
require 'prometheus/client/data_stores/direct_file_store'
|
5
|
+
require 'prometheus/client/data_stores/single_threaded'
|
4
6
|
require "yabeda/base_adapter"
|
5
7
|
|
6
8
|
module Yabeda
|
@@ -23,7 +25,12 @@ module Yabeda
|
|
23
25
|
|
24
26
|
def register_counter!(metric)
|
25
27
|
validate_metric!(metric)
|
26
|
-
registry.counter(
|
28
|
+
registry.counter(
|
29
|
+
build_name(metric),
|
30
|
+
docstring: metric.comment,
|
31
|
+
labels: Array(metric.tags),
|
32
|
+
store_settings: store_settings(metric),
|
33
|
+
)
|
27
34
|
end
|
28
35
|
|
29
36
|
def perform_counter_increment!(metric, tags, value)
|
@@ -34,7 +41,12 @@ module Yabeda
|
|
34
41
|
|
35
42
|
def register_gauge!(metric)
|
36
43
|
validate_metric!(metric)
|
37
|
-
registry.gauge(
|
44
|
+
registry.gauge(
|
45
|
+
build_name(metric),
|
46
|
+
docstring: metric.comment,
|
47
|
+
labels: Array(metric.tags),
|
48
|
+
store_settings: store_settings(metric),
|
49
|
+
)
|
38
50
|
end
|
39
51
|
|
40
52
|
def perform_gauge_set!(metric, tags, value)
|
@@ -46,7 +58,13 @@ module Yabeda
|
|
46
58
|
def register_histogram!(metric)
|
47
59
|
validate_metric!(metric)
|
48
60
|
buckets = metric.buckets || ::Prometheus::Client::Histogram::DEFAULT_BUCKETS
|
49
|
-
registry.histogram(
|
61
|
+
registry.histogram(
|
62
|
+
build_name(metric),
|
63
|
+
docstring: metric.comment,
|
64
|
+
buckets: buckets,
|
65
|
+
labels: Array(metric.tags),
|
66
|
+
store_settings: store_settings(metric),
|
67
|
+
)
|
50
68
|
end
|
51
69
|
|
52
70
|
def perform_histogram_measure!(metric, tags, value)
|
@@ -65,6 +83,19 @@ module Yabeda
|
|
65
83
|
raise ArgumentError, 'Prometheus require metrics to have comments'
|
66
84
|
end
|
67
85
|
|
86
|
+
private
|
87
|
+
|
88
|
+
# @param metric [Yabeda::Metric]
|
89
|
+
# @return [Hash]
|
90
|
+
def store_settings(metric)
|
91
|
+
case ::Prometheus::Client.config.data_store
|
92
|
+
when ::Prometheus::Client::DataStores::Synchronized, ::Prometheus::Client::DataStores::SingleThreaded
|
93
|
+
{} # Default synchronized store doesn't allow to pass any options
|
94
|
+
when ::Prometheus::Client::DataStores::DirectFileStore, ::Object # Anything else
|
95
|
+
{ aggregation: metric.aggregation }.compact
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
68
99
|
Yabeda.register_adapter(:prometheus, new)
|
69
100
|
end
|
70
101
|
end
|
data/yabeda-prometheus.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.required_ruby_version = ">= 2.3"
|
29
29
|
|
30
30
|
spec.add_dependency "prometheus-client", "~> 1.0"
|
31
|
-
spec.add_dependency "yabeda", "~> 0.
|
31
|
+
spec.add_dependency "yabeda", "~> 0.5"
|
32
32
|
|
33
33
|
spec.add_development_dependency "bundler", "~> 1.17"
|
34
34
|
spec.add_development_dependency "rake", "~> 12.0"
|
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.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrey Novikov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-01-
|
11
|
+
date: 2020-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: prometheus-client
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.5'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|