fluent-plugin-dd 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MWMzODQ3ODM1YTNiMGFmNGMyMGJmNWQ0NzYxNjcxYzdkNWNhMmRiOQ==
4
+ Mzg2ZDBiZmE5YmNmOGQzNzcyYTAzMjUxMGU3YmZmMmVmMmM1Mzk2OA==
5
5
  data.tar.gz: !binary |-
6
- OTFlZTRhZWIzZjdkMGU3NGY1MTRjNjU0MmZjODRlNTJkMTc1ZGJkZA==
6
+ YWVkNzllMDY0NmZhYTc2NjI1ZjU2MjE5MjZhMzQxODQ0NjlmYWQxMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NDA5OWE0NjEzMjcxYWU3MzljNjFjMzhmM2VkYTM1MjQwNGZkNDU0ZDE5M2Ez
10
- ZjYzM2IzNWE5ODljZmM2YTA4YzE4MGZiNDAwODY2YTJjYWIzODMxMWYxNDZj
11
- NTEzZGI5ZTBkNDRjNmFiZGQ4NWM1NjAzMTFiZmE3ZGU3ZDI0Mzg=
9
+ MDRkY2M3NTdiMWVhMmM0OGUyYjRhNGE3YjM2ZGIzZTFiNTUxZmIyNDlhOTM5
10
+ OWNjNDQ0M2I5ZjUzODE2MTE4YTkwMDNjNGQ1OTBkY2ExOTQ2MDExZDM3OTAw
11
+ ZWVkNTc5ODk2OWNkMmU2YzRjMWJjZjU4MDM0ZTU0ZDIyMmQyNGM=
12
12
  data.tar.gz: !binary |-
13
- ZmJkOWUyMGU1YmZmNzhhMWMxNTJlNTM3N2U0YzQxODBjZjBjMmM2NzY0YzEw
14
- NmY0N2JjZjg0OWRjMjAyZTU2MmQ5OTJhOGJmOTY3NjlkNTEwYjAzZDUwOTc3
15
- YTRlMTlhZGE2ZjM5MmZmYjM1MDkxZGI3YjBlZDFjMzc5NTk3NTk=
13
+ ZGMzM2M4MmZmNjhjODI1ZmViNmI2YjJhMDJjZDgzYzIwMDhlNmJiMWVmMWQy
14
+ NTJhYTRhZGExYjU2NzhkYjhhZDljNWI2Y2E2MTc4OTFjOGM2YzNmMDY2NzBi
15
+ ZGVjYTQ2ZjQ5YzEyMGViOThhZTcyZDNlNjQwMTU4MGJkMGI1N2E=
data/README.md CHANGED
@@ -23,6 +23,7 @@ Output plugin for Datadog
23
23
 
24
24
  ```sh
25
25
  echo '{"metric":"some.metric.name", "value":50.0}' | fluent-cat datadog.metric
26
+ echo '{"metric":"some.metric.name", "value":100.0, "tag":"any.tag", "host":"any.host", "type":"gauge"}' | fluent-cat datadog.metric
26
27
  ```
27
28
 
28
29
  ## Contributing
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = 'fluent-plugin-dd'
4
- spec.version = '0.1.0'
4
+ spec.version = '0.1.1'
5
5
  spec.authors = ['Genki Sugawara']
6
6
  spec.email = ['sugawara@cookpad.com']
7
7
  spec.description = %q{Output plugin for Datadog}
@@ -1,16 +1,10 @@
1
1
  class Fluent::DdOutput < Fluent::BufferedOutput
2
- include Fluent::SetTimeKeyMixin
3
- include Fluent::SetTagKeyMixin
4
-
5
2
  Fluent::Plugin.register_output('dd', self)
6
3
 
7
4
  unless method_defined?(:log)
8
5
  define_method('log') { $log }
9
6
  end
10
7
 
11
- config_set_default :include_time_key, true
12
- config_set_default :include_tag_key, true
13
-
14
8
  config_param :dd_api_key, :string
15
9
  config_param :host, :string, :default => nil
16
10
 
@@ -18,7 +12,6 @@ class Fluent::DdOutput < Fluent::BufferedOutput
18
12
  super
19
13
  require 'dogapi'
20
14
  require 'socket'
21
- require 'time'
22
15
  end
23
16
 
24
17
  def start
@@ -45,31 +38,32 @@ class Fluent::DdOutput < Fluent::BufferedOutput
45
38
  end
46
39
 
47
40
  def format(tag, time, record)
48
- record.to_msgpack
41
+ [tag, time, record].to_msgpack
49
42
  end
50
43
 
51
44
  def write(chunk)
52
45
  enum = chunk.to_enum(:msgpack_each)
53
46
 
54
- enum.select {|record|
47
+ enum.select {|tag, time, record|
55
48
  unless record['metric']
56
- log.warn("`metric` key does not exist: #{record.inspect}")
49
+ log.warn("`metric` key does not exist: #{[tag, time, record].inspect}")
57
50
  end
58
51
 
59
52
  record['metric']
60
- }.chunk {|record|
61
- record.values_at('metric', 'tag', 'host', 'type')
53
+ }.chunk {|tag, time, record|
54
+ tag = record['tag'] || tag
55
+ [tag] + record.values_at('metric', 'host', 'type')
62
56
  }.each {|i, records|
63
- metric, tag, host, type = i
57
+ tag, metric, host, type = i
64
58
 
65
- points = records.map do |record|
66
- time = Time.parse(record['time'])
59
+ points = records.map do |tag, time, record|
60
+ time = Time.at(time)
67
61
  value = record['value']
68
62
  [time, value]
69
63
  end
70
64
 
71
65
  options = {}
72
- options['tags'] = [tag] if tag
66
+ options['tags'] = tag.split(',').map {|i| i.strip } if tag
73
67
  options['host'] = host if host
74
68
  options['type'] = type if type
75
69
 
data/spec/out_dd_spec.rb CHANGED
@@ -59,6 +59,74 @@ describe Fluent::DdOutput do
59
59
  end
60
60
  end
61
61
 
62
+ it 'should be called emit_points for each tag (tag is included in the record)' do
63
+ run_driver do |d, dog|
64
+ dog.should_receive(:emit_points).with(
65
+ "some.metric.name",
66
+ [[Time.parse("2014-02-08 04:14:15 UTC"), 50.0],
67
+ [Time.parse("2014-02-08 04:14:15 UTC"), 100.0]],
68
+ {"tags"=>["test.11"]}
69
+ )
70
+
71
+ dog.should_receive(:emit_points).with(
72
+ "some.metric.name",
73
+ [[Time.parse("2014-02-08 04:14:15 UTC"), 150.0],
74
+ [Time.parse("2014-02-08 04:14:15 UTC"), 200.0]],
75
+ {"tags"=>["test.21"]}
76
+ )
77
+
78
+ dog.should_receive(:emit_points).with(
79
+ "some.metric.name",
80
+ [[Time.parse("2014-02-08 04:14:15 UTC"), 250.0],
81
+ [Time.parse("2014-02-08 04:14:15 UTC"), 300.0]],
82
+ {"tags"=>["test.31"]}
83
+ )
84
+
85
+ d.emit({"metric" => "some.metric.name", "value" => 50.0, "tag" => "test.11"}, time)
86
+ d.emit({"metric" => "some.metric.name", "value" => 100.0, "tag" => "test.11"}, time)
87
+
88
+ d.emit({"metric" => "some.metric.name", "value" => 150.0, "tag" => "test.21"}, time)
89
+ d.emit({"metric" => "some.metric.name", "value" => 200.0, "tag" => "test.21"}, time)
90
+
91
+ d.emit({"metric" => "some.metric.name", "value" => 250.0, "tag" => "test.31"}, time)
92
+ d.emit({"metric" => "some.metric.name", "value" => 300.0, "tag" => "test.31"}, time)
93
+ end
94
+ end
95
+
96
+ it 'should be called emit_points with multiple tags' do
97
+ run_driver do |d, dog|
98
+ dog.should_receive(:emit_points).with(
99
+ "some.metric.name",
100
+ [[Time.parse("2014-02-08 04:14:15 UTC"), 50.0],
101
+ [Time.parse("2014-02-08 04:14:15 UTC"), 100.0]],
102
+ {"tags"=>["test.12","test.13"]}
103
+ )
104
+
105
+ dog.should_receive(:emit_points).with(
106
+ "some.metric.name",
107
+ [[Time.parse("2014-02-08 04:14:15 UTC"), 150.0],
108
+ [Time.parse("2014-02-08 04:14:15 UTC"), 200.0]],
109
+ {"tags"=>["test.22","test.23"]}
110
+ )
111
+
112
+ dog.should_receive(:emit_points).with(
113
+ "some.metric.name",
114
+ [[Time.parse("2014-02-08 04:14:15 UTC"), 250.0],
115
+ [Time.parse("2014-02-08 04:14:15 UTC"), 300.0]],
116
+ {"tags"=>["test.32","test.33"]}
117
+ )
118
+
119
+ d.emit({"metric" => "some.metric.name", "value" => 50.0, "tag" => "test.12,test.13"}, time)
120
+ d.emit({"metric" => "some.metric.name", "value" => 100.0, "tag" => "test.12,test.13"}, time)
121
+
122
+ d.emit({"metric" => "some.metric.name", "value" => 150.0, "tag" => "test.22,test.23"}, time)
123
+ d.emit({"metric" => "some.metric.name", "value" => 200.0, "tag" => "test.22,test.23"}, time)
124
+
125
+ d.emit({"metric" => "some.metric.name", "value" => 250.0, "tag" => "test.32,test.33"}, time)
126
+ d.emit({"metric" => "some.metric.name", "value" => 300.0, "tag" => "test.32,test.33"}, time)
127
+ end
128
+ end
129
+
62
130
  it 'should be called emit_points for each host' do
63
131
  run_driver do |d, dog|
64
132
  dog.should_receive(:emit_points).with(
@@ -125,9 +193,9 @@ describe Fluent::DdOutput do
125
193
 
126
194
  log = d.instance.log
127
195
  log.should_receive(:warn)
128
- .with('`metric` key does not exist: {"no metric"=>"some.metric.name", "value"=>51.0, "time"=>"2014-02-08T04:14:15Z", "tag"=>"test.default"}')
196
+ .with('`metric` key does not exist: ["test.default", 1391832855, {"no metric"=>"some.metric.name", "value"=>51.0}]')
129
197
  log.should_receive(:warn)
130
- .with('`metric` key does not exist: {"no metric"=>"some.metric.name", "value"=>101.0, "time"=>"2014-02-08T04:14:15Z", "tag"=>"test.default"}')
198
+ .with('`metric` key does not exist: ["test.default", 1391832855, {"no metric"=>"some.metric.name", "value"=>101.0}]')
131
199
 
132
200
  d.emit({"no metric" => "some.metric.name", "value" => 51.0}, time)
133
201
  d.emit({"no metric" => "some.metric.name", "value" => 101.0}, time)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-dd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-21 00:00:00.000000000 Z
11
+ date: 2014-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd