fluent-plugin-prometheus 1.0.0 → 1.0.1
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/README.md +4 -3
- data/fluent-plugin-prometheus.gemspec +1 -1
- data/lib/fluent/plugin/in_prometheus.rb +11 -0
- data/lib/fluent/plugin/in_prometheus_monitor.rb +5 -1
- data/lib/fluent/plugin/in_prometheus_output_monitor.rb +5 -1
- data/lib/fluent/plugin/in_prometheus_tail_monitor.rb +5 -1
- data/spec/fluent/plugin/prometheus_spec.rb +24 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a57fd10632488d41ca2f4fd29de81b238e35ca8
|
4
|
+
data.tar.gz: 2008368dbac8114bf331f4b35171f23fea3d0224
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ce7f491f1f8528f6da19b0d20eff61a0c48fa76b082d83b8a3fdcf9493355a9def2ba5dccbb07941348a0d2ef0c34a8602f002e7e02f2109df6737414f7c3c1
|
7
|
+
data.tar.gz: ed7d1d932ecc7a498279cb836860633a51916e910f315addcb3c42519ed2f3aede977871959eaebb731b3725842a88905fd628dd633477e976f545cab86185b6
|
data/README.md
CHANGED
@@ -4,8 +4,6 @@
|
|
4
4
|
|
5
5
|
A fluent plugin that instruments metrics from records and exposes them via web interface. Intended to be used together with a [Prometheus server](https://github.com/prometheus/prometheus).
|
6
6
|
|
7
|
-
If you are using Fluentd v0.10, you have to explicitly install [fluent-plugin-record-reformer](https://github.com/sonots/fluent-plugin-record-reformer) together. With Fluentd v0.12 or v0.14, there is no additional dependency.
|
8
|
-
|
9
7
|
## Requirements
|
10
8
|
|
11
9
|
| fluent-plugin-prometheus | fluentd | ruby |
|
@@ -61,6 +59,8 @@ More configuration parameters:
|
|
61
59
|
- `port`: listen port (defaut: 24231)
|
62
60
|
- `metrics_path`: metrics HTTP endpoint (default: /metrics)
|
63
61
|
|
62
|
+
When using multiple workers, each worker binds to port + `fluent_worker_id`.
|
63
|
+
|
64
64
|
### prometheus_monitor input plugin
|
65
65
|
|
66
66
|
This plugin collects internal metrics in Fluentd. The metrics are similar to/part of [monitor_agent](http://docs.fluentd.org/articles/monitoring#monitoring-agent).
|
@@ -86,7 +86,7 @@ More configuration parameters:
|
|
86
86
|
|
87
87
|
**experimental**
|
88
88
|
|
89
|
-
This plugin collects internal metrics for output plugin in Fluentd. This is similar to `prometheus_monitor` plugin, but specialized for
|
89
|
+
This plugin collects internal metrics for output plugin in Fluentd. This is similar to `prometheus_monitor` plugin, but specialized for output plugin. There are Many metrics `prometheus_monitor` does not include, such as `num_errors`, `retry_wait` and so on.
|
90
90
|
|
91
91
|
Current exposed metrics:
|
92
92
|
|
@@ -338,6 +338,7 @@ You can use placeholder for label values. The placeholders will be expanded from
|
|
338
338
|
Reserved placeholders are:
|
339
339
|
|
340
340
|
- `${hostname}`: hostname
|
341
|
+
- `${worker_id}`: fluent worker id
|
341
342
|
- `${tag}`: tag name
|
342
343
|
|
343
344
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "fluent-plugin-prometheus"
|
3
|
-
spec.version = "1.0.
|
3
|
+
spec.version = "1.0.1"
|
4
4
|
spec.authors = ["Masahiro Sano"]
|
5
5
|
spec.email = ["sabottenda@gmail.com"]
|
6
6
|
spec.summary = %q{A fluent plugin that collects metrics and exposes for Prometheus.}
|
@@ -19,8 +19,19 @@ module Fluent::Plugin
|
|
19
19
|
@registry = ::Prometheus::Client.registry
|
20
20
|
end
|
21
21
|
|
22
|
+
def configure(conf)
|
23
|
+
super
|
24
|
+
@port += fluentd_worker_id
|
25
|
+
end
|
26
|
+
|
27
|
+
def multi_workers_ready?
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
22
31
|
def start
|
23
32
|
super
|
33
|
+
|
34
|
+
log.debug "listening prometheus http server on http://#{@bind}:#{@port}/#{@metrics_path} for worker#{fluentd_worker_id}"
|
24
35
|
@server = WEBrick::HTTPServer.new(
|
25
36
|
BindAddress: @bind,
|
26
37
|
Port: @port,
|
@@ -16,11 +16,15 @@ module Fluent::Plugin
|
|
16
16
|
@registry = ::Prometheus::Client.registry
|
17
17
|
end
|
18
18
|
|
19
|
+
def multi_workers_ready?
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
19
23
|
def configure(conf)
|
20
24
|
super
|
21
25
|
hostname = Socket.gethostname
|
22
26
|
expander = Fluent::Plugin::Prometheus.placeholder_expander(log)
|
23
|
-
placeholders = expander.prepare_placeholders({'hostname' => hostname})
|
27
|
+
placeholders = expander.prepare_placeholders({'hostname' => hostname, 'worker_id' => fluentd_worker_id})
|
24
28
|
@base_labels = Fluent::Plugin::Prometheus.parse_labels_elements(conf)
|
25
29
|
@base_labels.each do |key, value|
|
26
30
|
@base_labels[key] = expander.expand(value, placeholders)
|
@@ -31,11 +31,15 @@ module Fluent::Plugin
|
|
31
31
|
@registry = ::Prometheus::Client.registry
|
32
32
|
end
|
33
33
|
|
34
|
+
def multi_workers_ready?
|
35
|
+
true
|
36
|
+
end
|
37
|
+
|
34
38
|
def configure(conf)
|
35
39
|
super
|
36
40
|
hostname = Socket.gethostname
|
37
41
|
expander = Fluent::Plugin::Prometheus.placeholder_expander(log)
|
38
|
-
placeholders = expander.prepare_placeholders({'hostname' => hostname})
|
42
|
+
placeholders = expander.prepare_placeholders({'hostname' => hostname, 'worker_id' => fluentd_worker_id})
|
39
43
|
@base_labels = Fluent::Plugin::Prometheus.parse_labels_elements(conf)
|
40
44
|
@base_labels.each do |key, value|
|
41
45
|
@base_labels[key] = expander.expand(value, placeholders)
|
@@ -20,11 +20,15 @@ module Fluent::Plugin
|
|
20
20
|
@registry = ::Prometheus::Client.registry
|
21
21
|
end
|
22
22
|
|
23
|
+
def multi_workers_ready?
|
24
|
+
true
|
25
|
+
end
|
26
|
+
|
23
27
|
def configure(conf)
|
24
28
|
super
|
25
29
|
hostname = Socket.gethostname
|
26
30
|
expander = Fluent::Plugin::Prometheus.placeholder_expander(log)
|
27
|
-
placeholders = expander.prepare_placeholders({'hostname' => hostname})
|
31
|
+
placeholders = expander.prepare_placeholders({'hostname' => hostname, 'worker_id' => fluentd_worker_id})
|
28
32
|
@base_labels = Fluent::Plugin::Prometheus.parse_labels_elements(conf)
|
29
33
|
@base_labels.each do |key, value|
|
30
34
|
@base_labels[key] = expander.expand(value, placeholders)
|
@@ -74,4 +74,28 @@ describe Fluent::Plugin::PrometheusInput do
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
77
|
+
|
78
|
+
describe '#run_multi_workers' do
|
79
|
+
context '/metrics' do
|
80
|
+
Fluent::SystemConfig.overwrite_system_config('workers' => 4) do
|
81
|
+
let(:config) { CONFIG + %[
|
82
|
+
port #{port - 2}
|
83
|
+
] }
|
84
|
+
|
85
|
+
it 'should configure port using sequential number' do
|
86
|
+
driver = Fluent::Test::Driver::Input.new(Fluent::Plugin::PrometheusInput)
|
87
|
+
driver.instance.instance_eval{ @_fluentd_worker_id = 2 }
|
88
|
+
driver.configure(config)
|
89
|
+
expect(driver.instance.port).to eq(port)
|
90
|
+
driver.run(timeout: 1) do
|
91
|
+
Net::HTTP.start("127.0.0.1", port) do |http|
|
92
|
+
req = Net::HTTP::Get.new("/metrics")
|
93
|
+
res = http.request(req)
|
94
|
+
expect(res.code).to eq('200')
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
77
101
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-prometheus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro Sano
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|