fluent-plugin-prometheus 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|