fluent-plugin-mackerel 0.0.7 → 0.0.8
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 +12 -1
- data/fluent-plugin-mackerel.gemspec +1 -1
- data/lib/fluent/plugin/out_mackerel.rb +9 -12
- data/test/plugin/test_out_mackerel.rb +57 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTNiZDMwMGM1MGFhOTdiZGE2NjNkNDJmNjAxMDg1MmIyZDllMTc4Yw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Y2Y3MmIwYmIwNzFjMDZhZDhjMTdlZjcyMDBmODI3ZDcyMDQxNDIzYw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MDFhODQ4ZjI5NGFiYTQ0YzZmZWM4YTI0NTkyYTYyZjRhZDkwMmI5NTZiNzYx
|
10
|
+
ZDVlMDkwODNiMjViMTI2N2UxYzE4NDVhMmJhMzFmZmRhNmMwYTRmYzVlMzRj
|
11
|
+
YjFkNDZjYmM4MGIxOWVhY2MyMTg2MmVhNmUzNzM0ZjE3YzliZTU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDNkOTdiYTFmZmMyZTYzMWU0OTc4Zjk2Y2FiNGMyZjEzMTdhOTRkZTg4MjE1
|
14
|
+
OWI1OWRkY2Q4ZWM4NGIyNjI3OWE4NjVmYWFjYmYzODA0NWIxMGQ3MGM3M2Q0
|
15
|
+
Nzg3ZGMzYjIzODI2NTQzODdlZjk4MmViZmFjMTAyNTc0ODlkODE=
|
data/README.md
CHANGED
@@ -55,7 +55,7 @@ You can use `out_key_pattern` instead of `out_keys`. Input records whose key mat
|
|
55
55
|
out_key_pattern [2-5]xx_count
|
56
56
|
```
|
57
57
|
|
58
|
-
You can use `${[n]}` for `
|
58
|
+
You can use `${[n]}` for `metrics_name` where `n` represents any decimal number including negative value,
|
59
59
|
|
60
60
|
```
|
61
61
|
<match mackerel.*>
|
@@ -129,6 +129,16 @@ To run tests, do the following.
|
|
129
129
|
$ VERBOSE=1 bundle exec rake test
|
130
130
|
```
|
131
131
|
|
132
|
+
If you want to run a certain file, run rake like this
|
133
|
+
```
|
134
|
+
$ VERBOSE=1 bundle exec rake test TEST=test/plugin/test_out_mackerel.rb
|
135
|
+
```
|
136
|
+
|
137
|
+
In addition, you can run specific method like this.
|
138
|
+
```
|
139
|
+
$ VERBOSE=1 bundle exec rake test TEST=test/plugin/test_out_mackerel.rb TESTOPTS="--name=test_configure"
|
140
|
+
```
|
141
|
+
|
132
142
|
When releasing, call rake release as follows.
|
133
143
|
```
|
134
144
|
$ bundle exec rake release
|
@@ -148,6 +158,7 @@ For debugging purpose, you can change Mackerel endpoint by `origin` parameter li
|
|
148
158
|
|
149
159
|
## References
|
150
160
|
|
161
|
+
* [Send service and host metric to Mackerel by using fluentd (Japanese, Official Document)](http://help-ja.mackerel.io/entry/advanced/fluentd)
|
151
162
|
* [How to use fluent-plugin-mackerel (Japanese)](http://qiita.com/tksmd/items/1212331a5a18afe520df)
|
152
163
|
|
153
164
|
## Copyright
|
@@ -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.0.8"
|
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}
|
@@ -67,17 +67,15 @@ module Fluent
|
|
67
67
|
|
68
68
|
if @metrics_name
|
69
69
|
@name_processor = @metrics_name.split('.').map{ |token|
|
70
|
-
|
71
|
-
token
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
Proc.new{ token }
|
80
|
-
end
|
70
|
+
Proc.new{ |args|
|
71
|
+
token.gsub(/\${(out_key|\[(-?\d+)\])}/) {
|
72
|
+
if $1 == 'out_key'
|
73
|
+
args[:out_key]
|
74
|
+
else
|
75
|
+
args[:tokens][$1[1..-1].to_i]
|
76
|
+
end
|
77
|
+
}
|
78
|
+
}
|
81
79
|
}
|
82
80
|
end
|
83
81
|
end
|
@@ -116,7 +114,6 @@ module Fluent
|
|
116
114
|
'name' => "%s.%s" % ['custom', name]
|
117
115
|
}
|
118
116
|
metric['hostId'] = @hostid_processor.call(:tokens => tokens) if @hostid
|
119
|
-
|
120
117
|
metrics << metric
|
121
118
|
end
|
122
119
|
end
|
@@ -61,6 +61,14 @@ class MackerelOutputTest < Test::Unit::TestCase
|
|
61
61
|
out_key_pattern ^val[0-9]$
|
62
62
|
]
|
63
63
|
|
64
|
+
CONFIG_FOR_ISSUE_4 = %[
|
65
|
+
type mackerel
|
66
|
+
api_key 123456
|
67
|
+
hostid xyz
|
68
|
+
metrics_name a-${[1]}-b.${out_key}
|
69
|
+
out_keys val1,val2
|
70
|
+
]
|
71
|
+
|
64
72
|
def create_driver(conf = CONFIG, tag='test')
|
65
73
|
Fluent::Test::BufferedOutputTestDriver.new(Fluent::MackerelOutput, tag).configure(conf)
|
66
74
|
end
|
@@ -135,4 +143,53 @@ class MackerelOutputTest < Test::Unit::TestCase
|
|
135
143
|
d.run()
|
136
144
|
end
|
137
145
|
|
146
|
+
def test_write_issue4
|
147
|
+
d = create_driver(CONFIG_FOR_ISSUE_4, tag='test.status')
|
148
|
+
mock(d.instance.mackerel).post_metrics([
|
149
|
+
{"hostId"=>"xyz", "value"=>1.0, "time"=>1399997498, "name"=>"custom.a-status-b.val1"},
|
150
|
+
{"hostId"=>"xyz", "value"=>2.0, "time"=>1399997498, "name"=>"custom.a-status-b.val2"},
|
151
|
+
])
|
152
|
+
|
153
|
+
ENV["TZ"]="Asia/Tokyo"
|
154
|
+
t = Time.strptime('2014-05-14 01:11:38', '%Y-%m-%d %T')
|
155
|
+
d.emit({'val1' => 1, 'val2' => 2, 'foo' => 3}, t)
|
156
|
+
d.run()
|
157
|
+
end
|
158
|
+
|
159
|
+
def test_name_processor
|
160
|
+
[
|
161
|
+
{metrics_name: "${out_key}", expected: "val1"},
|
162
|
+
{metrics_name: "name.${out_key}", expected: "name.val1"},
|
163
|
+
{metrics_name: "a-${out_key}", expected: "a-val1"},
|
164
|
+
{metrics_name: "${out_key}-b", expected: "val1-b"},
|
165
|
+
{metrics_name: "a-${out_key}-b", expected: "a-val1-b"},
|
166
|
+
{metrics_name: "name.a-${out_key}-b", expected: "name.a-val1-b"},
|
167
|
+
{metrics_name: "${out_key}-a-${out_key}", expected: "val1-a-val1"},
|
168
|
+
{metrics_name: "${out_keyx}", expected: "${out_keyx}"},
|
169
|
+
{metrics_name: "${[1]}", expected: "status"},
|
170
|
+
{metrics_name: "${[-1]}", expected: "status"},
|
171
|
+
{metrics_name: "name.${[1]}", expected: "name.status"},
|
172
|
+
{metrics_name: "a-${[1]}", expected: "a-status"},
|
173
|
+
{metrics_name: "${[1]}-b", expected: "status-b"},
|
174
|
+
{metrics_name: "a-${[1]}-b", expected: "a-status-b"},
|
175
|
+
{metrics_name: "${[0]}.${[1]}", expected: "test.status"},
|
176
|
+
{metrics_name: "${[0]}-${[1]}", expected: "test-status"},
|
177
|
+
{metrics_name: "${[0]}-${[1]}-${out_key}", expected: "test-status-val1"},
|
178
|
+
{metrics_name: "${[2]}", expected: ""},
|
179
|
+
].map { |obj|
|
180
|
+
test_config = %[
|
181
|
+
type mackerel
|
182
|
+
api_key 123456
|
183
|
+
hostid xyz
|
184
|
+
metrics_name #{obj[:metrics_name]}
|
185
|
+
out_keys val1,val2
|
186
|
+
]
|
187
|
+
d = create_driver(test_config, tag='test.status')
|
188
|
+
name_processor = d.instance.instance_variable_get(:@name_processor)
|
189
|
+
actual = name_processor.map{ |p| p.call(:out_key => 'val1', :tokens => ['test', 'status']) }.join('.')
|
190
|
+
assert_equal obj[:expected], actual
|
191
|
+
}
|
192
|
+
end
|
193
|
+
|
194
|
+
|
138
195
|
end
|
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.0.8
|
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: 2014-
|
12
|
+
date: 2014-10-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mackerel-client
|