fluent-plugin-dd 0.1.0 → 0.1.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 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