fluent-plugin-mackerel 0.0.9 → 0.1.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 +8 -8
- data/README.md +15 -0
- data/fluent-plugin-mackerel.gemspec +1 -1
- data/lib/fluent/plugin/out_mackerel.rb +6 -1
- data/test/plugin/test_out_mackerel.rb +54 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZDg3MGNjYjM5M2QwMzQzYmViODQ5YWZlZGI4OTY0ZDc0ZGI3MTVmMg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTNlZTYwZmNjODUyYTgxOTFjODEyYWVjOGY2NGY1OTkwMjg1YmQyMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjU4Yjk1NDEzMjIyZWJmYjEzMmExNDc1YjQ5NWJmZDU5NjU0OGViMDZjNzJm
|
10
|
+
NjYyZDJhOGNmOGNiNGU0NjI4MTY1Nzk4Mjk4YjRjNGI4YmZmNjM3MzA2OTc2
|
11
|
+
NjkwMWIwMmJkOWU1MTljYjUzOTFhNjVjZGYyZGE3OWI5NDQ2YTU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
N2EzZTFhNTIxNmI1YjA1ZmQ2MzgyMjExMDExMTEwZmQ1MDE4YzJhN2UyZjlk
|
14
|
+
NTFkYjViZmNiYzI0YWNmYzA2MzJlNjQ4ZGYxZjlhYzJkZTdjYzBjNWU3MmQ5
|
15
|
+
MWRhZjg2NTAzZjQ1ZGU5ZWZhZjA3Njg5NzBjYzY3NmJhMGQzMjY=
|
data/README.md
CHANGED
@@ -88,6 +88,21 @@ You can also send ["service" metric](http://help-ja.mackerel.io/entry/spec/api/v
|
|
88
88
|
out_keys 2xx_count,3xx_count,4xx_count,5xx_count
|
89
89
|
</match>
|
90
90
|
```
|
91
|
+
|
92
|
+
When you send service metric, "custom" can be removed with `remove_prefix` as follows.
|
93
|
+
This option is not availabe when sending host metric.
|
94
|
+
|
95
|
+
```
|
96
|
+
<match ...>
|
97
|
+
type mackerel
|
98
|
+
api_key 123456
|
99
|
+
service yourservice
|
100
|
+
remove_prefix
|
101
|
+
metrics_name http_status.${out_key}
|
102
|
+
out_keys 2xx_count,3xx_count,4xx_count,5xx_count
|
103
|
+
</match>
|
104
|
+
```
|
105
|
+
|
91
106
|
`flush_interval` is not allowed to be set less than 60 secs not to send API requests more than once in a minute.
|
92
107
|
|
93
108
|
This plugin overwrites the default value of `buffer_queue_limit` and `buffer_chunk_limit` as follows.
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "fluent-plugin-mackerel"
|
7
|
-
spec.version = "0.0
|
7
|
+
spec.version = "0.1.0"
|
8
8
|
spec.authors = ["tksmd","hatz48"]
|
9
9
|
spec.email = ["someda@isenshi.com"]
|
10
10
|
spec.description = %q{fluent plugin to send metrics to mackerel.io}
|
@@ -8,6 +8,7 @@ module Fluent
|
|
8
8
|
config_param :hostid, :string, :default => nil
|
9
9
|
config_param :hostid_path, :string, :default => nil
|
10
10
|
config_param :service, :string, :default => nil
|
11
|
+
config_param :remove_prefix, :bool, :default => false
|
11
12
|
config_param :metrics_name, :string, :default => nil
|
12
13
|
config_param :out_keys, :string, :default => nil
|
13
14
|
config_param :out_key_pattern, :string, :default => nil
|
@@ -60,6 +61,10 @@ module Fluent
|
|
60
61
|
raise Fluent::ConfigError, "Niether 'hostid' and 'service' cannot be specifed."
|
61
62
|
end
|
62
63
|
|
64
|
+
if @remove_prefix and @service.nil?
|
65
|
+
raise Fluent::ConfigError, "'remove_prefix' must be used with 'service'."
|
66
|
+
end
|
67
|
+
|
63
68
|
unless @hostid.nil?
|
64
69
|
if matched = @hostid.match(/^\${tag_parts\[(\d+)\]}$/)
|
65
70
|
hostid_idx = matched[1].to_i
|
@@ -115,7 +120,7 @@ module Fluent
|
|
115
120
|
metric = {
|
116
121
|
'value' => record[key].to_f,
|
117
122
|
'time' => time,
|
118
|
-
'name' => "%s.%s" % ['custom', name]
|
123
|
+
'name' => @remove_prefix ? name : "%s.%s" % ['custom', name]
|
119
124
|
}
|
120
125
|
metric['hostId'] = @hostid_processor.call(:tokens => tokens) if @hostid
|
121
126
|
metrics << metric
|
@@ -84,6 +84,28 @@ class MackerelOutputTest < Test::Unit::TestCase
|
|
84
84
|
buffer_chunk_limit 1k
|
85
85
|
]
|
86
86
|
|
87
|
+
CONFIG_SERVICE = %[
|
88
|
+
type mackerel
|
89
|
+
api_key 123456
|
90
|
+
service xyz
|
91
|
+
out_keys val1,val2,val3
|
92
|
+
]
|
93
|
+
|
94
|
+
CONFIG_SERVICE_REMOVE_PREFIX = %[
|
95
|
+
type mackerel
|
96
|
+
api_key 123456
|
97
|
+
service xyz
|
98
|
+
remove_prefix
|
99
|
+
out_keys val1,val2,val3
|
100
|
+
]
|
101
|
+
|
102
|
+
CONFIG_INVALID_REMOVE_PREFIX = %[
|
103
|
+
type mackerel
|
104
|
+
api_key 123456
|
105
|
+
remove_prefix
|
106
|
+
out_keys val1,val2,val3
|
107
|
+
]
|
108
|
+
|
87
109
|
def create_driver(conf = CONFIG, tag='test')
|
88
110
|
Fluent::Test::BufferedOutputTestDriver.new(Fluent::MackerelOutput, tag).configure(conf)
|
89
111
|
end
|
@@ -106,6 +128,10 @@ class MackerelOutputTest < Test::Unit::TestCase
|
|
106
128
|
d = create_driver(CONFIG_NO_OUT_KEYS)
|
107
129
|
}
|
108
130
|
|
131
|
+
assert_raise(Fluent::ConfigError) {
|
132
|
+
d = create_driver(CONFIG_INVALID_REMOVE_PREFIX)
|
133
|
+
}
|
134
|
+
|
109
135
|
d = create_driver(CONFIG_SMALL_FLUSH_INTERVAL)
|
110
136
|
assert_equal d.instance.instance_variable_get(:@flush_interval), 60
|
111
137
|
|
@@ -129,7 +155,8 @@ class MackerelOutputTest < Test::Unit::TestCase
|
|
129
155
|
|
130
156
|
d = create_driver(CONFIG_BUFFER_LIMIT_IGNORE)
|
131
157
|
assert_equal d.instance.instance_variable_get(:@buffer_chunk_limit), Fluent::MackerelOutput::MAX_BUFFER_CHUNK_LIMIT
|
132
|
-
|
158
|
+
|
159
|
+
end
|
133
160
|
|
134
161
|
def test_write
|
135
162
|
d = create_driver()
|
@@ -172,6 +199,32 @@ class MackerelOutputTest < Test::Unit::TestCase
|
|
172
199
|
{"hostId"=>"xyz", "value"=>2.0, "time"=>1399997498, "name"=>"custom.a-status-b.val2"},
|
173
200
|
])
|
174
201
|
|
202
|
+
ENV["TZ"]="Asia/Tokyo"
|
203
|
+
t = Time.strptime('2014-05-14 01:11:38', '%Y-%m-%d %T')
|
204
|
+
d.emit({'val1' => 1, 'val2' => 2}, t)
|
205
|
+
d.run()
|
206
|
+
end
|
207
|
+
|
208
|
+
def test_service
|
209
|
+
d = create_driver(CONFIG_SERVICE)
|
210
|
+
mock(d.instance.mackerel).post_service_metrics('xyz', [
|
211
|
+
{"value"=>1.0, "time"=>1399997498, "name"=>"custom.val1"},
|
212
|
+
{"value"=>2.0, "time"=>1399997498, "name"=>"custom.val2"},
|
213
|
+
])
|
214
|
+
|
215
|
+
ENV["TZ"]="Asia/Tokyo"
|
216
|
+
t = Time.strptime('2014-05-14 01:11:38', '%Y-%m-%d %T')
|
217
|
+
d.emit({'val1' => 1, 'val2' => 2, 'foo' => 3}, t)
|
218
|
+
d.run()
|
219
|
+
end
|
220
|
+
|
221
|
+
def test_service_remove_prefix
|
222
|
+
d = create_driver(CONFIG_SERVICE_REMOVE_PREFIX)
|
223
|
+
mock(d.instance.mackerel).post_service_metrics('xyz', [
|
224
|
+
{"value"=>1.0, "time"=>1399997498, "name"=>"val1"},
|
225
|
+
{"value"=>2.0, "time"=>1399997498, "name"=>"val2"},
|
226
|
+
])
|
227
|
+
|
175
228
|
ENV["TZ"]="Asia/Tokyo"
|
176
229
|
t = Time.strptime('2014-05-14 01:11:38', '%Y-%m-%d %T')
|
177
230
|
d.emit({'val1' => 1, 'val2' => 2, 'foo' => 3}, t)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-mackerel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tksmd
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-02-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mackerel-client
|