fluent-plugin-datadog-statsd 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b0254e7fcf0db14365edc9da7b649980870d2476
4
+ data.tar.gz: 314c972da0424382b58d2d29d297417e4fbe7fc1
5
+ SHA512:
6
+ metadata.gz: 47f5876be1f19b7c8e87a3ad2f96b3dd9189d524039b6c66ace55ef05aa3e6b829a7c2e65ac0ae6775253bf8f62545e50f36609ceae6f43ea8ed7a18414b5f5f
7
+ data.tar.gz: 228384d08b2fde79da98ed471bd2cc54803204c8c96277eea61a81b809c307f98e3703361d03fe19b5bec05fb40fe2d2d731b1d5fa51cc7b4e1106f3201ceac7
@@ -0,0 +1,52 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
12
+
13
+ # Used by dotenv library to load environment variables.
14
+ # .env
15
+
16
+ ## Specific to RubyMotion:
17
+ .dat*
18
+ .repl_history
19
+ build/
20
+ *.bridgesupport
21
+ build-iPhoneOS/
22
+ build-iPhoneSimulator/
23
+
24
+ ## Specific to RubyMotion (use of CocoaPods):
25
+ #
26
+ # We recommend against adding the Pods directory to your .gitignore. However
27
+ # you should judge for yourself, the pros and cons are mentioned at:
28
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
29
+ #
30
+ # vendor/Pods/
31
+
32
+ ## Documentation cache and generated files:
33
+ /.yardoc/
34
+ /_yardoc/
35
+ /doc/
36
+ /rdoc/
37
+
38
+ ## Environment normalization:
39
+ /.bundle/
40
+ /vendor/bundle
41
+ /lib/bundler/man/
42
+
43
+ # for a library or gem, you might want to ignore these files since the code is
44
+ # intended to run in multiple environments; otherwise, check them in:
45
+ # Gemfile.lock
46
+ # .ruby-version
47
+ # .ruby-gemset
48
+
49
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
50
+ .rvmrc
51
+
52
+ Gemfile.lock
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.4.1
5
+ before_install: gem install bundler -v 1.15.1
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://www.rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,89 @@
1
+ # fluentd-plugin-datadog-statsd
2
+
3
+ Fluend output plugin for Dogstatsd.
4
+
5
+ [![Build Status](https://travis-ci.org/kikusu/fluentd-plugin-datadog-statsd.svg?branch=master)](https://travis-ci.org/kikusu/fluentd-plugin-datadog-statsd)
6
+
7
+ ## Requirements
8
+ - fluentd >= 0.14
9
+
10
+ ## Configuration
11
+ ```
12
+ <match datadog.*>
13
+ @type datadog_statsd
14
+
15
+ # option: datadog statsd host, port
16
+ host 127.0.0.1 (default: see dogstatsd-ruby)
17
+ port 8125 (default: see dogstatsd-ruby)
18
+
19
+ # required: metric type of datadog.
20
+ # e.g. increment, decrement, count, gauge, histgram, timing, event
21
+ metric_type increment
22
+
23
+ # option: tag of datadog.
24
+ tags [ "tag1:tag", "tag2:tag" ]
25
+
26
+ # required when metric_type is not event
27
+ <metric>
28
+ # required: metric name of datadog
29
+ name test.datadog
30
+
31
+ # required when metric_type in (count, gauge, histgram, timing)
32
+ value 1
33
+ </metric>
34
+
35
+ # required when metric_type is event
36
+ # see: http://docs.datadoghq.com/guides/dogstatsd/#events
37
+ <evnet>
38
+ # required
39
+ title
40
+ text
41
+
42
+ # option
43
+ aggregation_key
44
+ alert_type
45
+ date_happened
46
+ priority
47
+ source_type_name
48
+ </event>
49
+
50
+ </match>
51
+ ```
52
+
53
+ ### using template
54
+
55
+ In this plugin you can use templates.
56
+ Implemented by `Fluent::Plugin::Output#extract_placeholders`.
57
+
58
+ #### Available Tags
59
+ - `${tag}`, `${tag[0]}`, `${tag[1]}`, ...
60
+ - `${record_key}`
61
+
62
+ ```
63
+ <match datadog.*>
64
+ @type datadog_statsd
65
+
66
+ metric_type increment
67
+ tags [ "tag:${tag}"]
68
+ <metric>
69
+ name ${metric_name}
70
+ </metric>
71
+
72
+ # add placeholder key
73
+ <buffer ["tag", "metric_name"]>
74
+ </buffer>
75
+ </match>
76
+ ```
77
+
78
+ ```
79
+ # src
80
+ fluentd_tag datadog.test
81
+ fluentd_record {"metric_name": "count.error_log"}
82
+ =>
83
+ # dest
84
+ metric_type increment
85
+ tags ["tag:datadog.test"}
86
+ <metric>
87
+ name count.error_log
88
+ </metric>
89
+ ```
@@ -0,0 +1,14 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+ require 'rubocop/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec) do |task|
6
+ task.verbose = false
7
+ task.rspec_opts = '-c -fd --require spec_helper'
8
+ end
9
+
10
+ task :default => :spec
11
+
12
+ RuboCop::RakeTask.new do |task|
13
+ task.options = ["--color"]
14
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = 'fluent-plugin-datadog-statsd'
5
+ spec.version = '0.0.2'
6
+ spec.authors = ['Kosuke Miyawaki']
7
+ spec.email = ['kikusumk3@gmail.com']
8
+ spec.summary = 'Fluentd output plugin for Dogstatsd.'
9
+ spec.description = 'Fluentd output plugin for Dogstatsd.'
10
+ spec.homepage = 'https://github.com/kikusu/fluent-plugin-datadog-statsd'
11
+ spec.license = 'MIT'
12
+
13
+ spec.files = `git ls-files -z`.split("\x0")
14
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
15
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
+ spec.require_paths = ['lib']
17
+
18
+ spec.add_dependency 'fluentd', '~> 0.14'
19
+ spec.add_dependency 'dogstatsd-ruby', '~> 3.0'
20
+
21
+ spec.add_development_dependency 'bundler'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'rspec'
24
+ spec.add_development_dependency 'rubocop'
25
+ spec.add_development_dependency 'test-unit'
26
+ spec.add_development_dependency 'test-unit-rr'
27
+ end
@@ -0,0 +1,151 @@
1
+ require 'fluent/plugin/output'
2
+
3
+ module Fluent
4
+ module Plugin
5
+ class DatadogStatsdOutput < Output
6
+ Fluent::Plugin.register_output('datadog_statsd', self)
7
+
8
+ config_param :host, :string, default: nil
9
+ config_param :port, :integer, default: nil
10
+
11
+ config_param :metric_type, :string
12
+ config_param :tags, :array, default: []
13
+
14
+ config_section :metric, param_name: :metric_config, required: false,
15
+ multi: false, final: true do
16
+ config_param :name, :string
17
+ config_param :value, default: nil
18
+ end
19
+
20
+ config_section :event, param_name: :event_config, required: false,
21
+ multi: false, final: true do
22
+ config_param :title, :string
23
+ config_param :text, :string
24
+ config_param :aggregation_key, :string, default: nil
25
+ config_param :alert_type, :string, default: nil
26
+ config_param :date_happened, default: nil
27
+ config_param :priority, :string, default: nil
28
+ config_param :source_type_name, :string, default: nil
29
+ end
30
+
31
+ config_section :buffer do
32
+ config_set_default :flush_mode, :immediate
33
+ end
34
+
35
+ attr_reader :statsd
36
+
37
+ def configure(conf)
38
+ super
39
+
40
+ placeholder_params = [
41
+ @metric_type,
42
+ @tags
43
+ ]
44
+
45
+ if @metric_config
46
+ placeholder_params += [
47
+ @metric_config.name,
48
+ @metric_config.value
49
+ ]
50
+ end
51
+ if @event_config
52
+ placeholder_params += [
53
+ @event_config.title,
54
+ @event_config.text,
55
+ @event_config.aggregation_key,
56
+ @event_config.alert_type,
57
+ @event_config.priority,
58
+ @event_config.source_type_name,
59
+ @event_config.date_happened
60
+ ]
61
+ end
62
+
63
+ placeholder_validate!(:placeholder_params, placeholder_params.join('/'))
64
+
65
+ require 'datadog/statsd'
66
+ @host ||= Datadog::Statsd::DEFAULT_HOST
67
+ @port ||= Datadog::Statsd::DEFAULT_PORT
68
+
69
+ @statsd = Datadog::Statsd.new(@host, @port)
70
+ end
71
+
72
+ def start
73
+ super
74
+ end
75
+
76
+ def shutdown
77
+ super
78
+ @statsd.close
79
+ end
80
+
81
+ def write(chunk)
82
+ metadata = chunk.metadata
83
+ metric_type = extract_placeholders(@metric_type, metadata).to_sym
84
+
85
+ @statsd.batch do |statsd|
86
+ statsd_param = case metric_type
87
+ when :increment, :decrement
88
+ if @metric_config.nil?
89
+ log.error("metric section is required when metric_type=#{metric_type}")
90
+ return nil
91
+ end
92
+ extract_placeholders_name_opt(metadata)
93
+
94
+ when :count, :gauge, :histgram, :timing, :set
95
+ if @metric_config.nil?
96
+ log.error("metric section is required when metric_type=#{metric_type}")
97
+ return nil
98
+ end
99
+ extract_placeholders_name_value_opt(metadata)
100
+ when :event
101
+ if @event_config.nil?
102
+ log.error('event section is required when metric_type=event')
103
+ return nil
104
+ end
105
+ extract_placeholders_event(metadata)
106
+ else
107
+ log.error("param 'metric_type=#{metric_type}' is illegal.")
108
+ return nil
109
+ end
110
+ statsd_func = statsd.method(metric_type)
111
+ chunk.each do |_time, _record|
112
+ statsd_func.call(*statsd_param)
113
+ end
114
+ end
115
+ end
116
+
117
+ private
118
+
119
+ def extract_placeholders_name_opt(metadata)
120
+ metric_name = extract_placeholders(@metric_config.name, metadata)
121
+ options = {}
122
+ options[:tag] = @tags.map { |tag| extract_placeholders(tag, metadata) } if @tags
123
+
124
+ [metric_name, options]
125
+ end
126
+
127
+ def extract_placeholders_name_value_opt(metadata)
128
+ metric_name, options = extract_placeholders_name_opt(metadata)
129
+ value = extract_placeholders(@metric_config.value, metadata)
130
+
131
+ [metric_name, value, options]
132
+ end
133
+
134
+ def extract_placeholders_event(metadata)
135
+ event_title = extract_placeholders(@event_config.title, metadata)
136
+ event_text = extract_placeholders(@event_config.text, metadata)
137
+
138
+ options = {}
139
+ options[:tag] = @tags.map { |tag| extract_placeholders(tag, metadata) } if @tags
140
+
141
+ %i[aggregation_key alert_type date_happened priority source_type_name].each do |key|
142
+ options[key] = extract_placeholders(@event_config[key], metadata) if @event_config[key]
143
+ end
144
+
145
+ options[:date_happened] = options[:date_happened].to_i if options[:date_happened]
146
+
147
+ [event_title, event_text, options]
148
+ end
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,204 @@
1
+ require 'datadog/statsd'
2
+ require 'fluent/test'
3
+ require 'fluent/test/driver/output'
4
+ require 'rspec'
5
+
6
+ require 'fluent/plugin/out_datadog_statsd'
7
+
8
+ describe Fluent::Plugin::DatadogStatsdOutput do
9
+ let(:time) do
10
+ Time.parse('2017-06-01 00:11:22 UTC').to_i
11
+ end
12
+
13
+ CONFIG = %(
14
+ ).freeze
15
+
16
+ def create_driver(conf = CONFIG)
17
+ Fluent::Test::Driver::Output.new(Fluent::Plugin::DatadogStatsdOutput).configure(conf)
18
+ end
19
+
20
+ before do
21
+ Fluent::Test.setup
22
+ end
23
+
24
+ %i[increment decrement].each do |metric_type|
25
+ describe "metric_type=#{metric_type}" do
26
+ it 'ok' do
27
+ conf = %(
28
+ @type datadog_statsd
29
+ metric_type #{metric_type}
30
+ tags ["test_tag:test"]
31
+ <metric>
32
+ name test.test
33
+ </metric>
34
+ )
35
+ driver = create_driver(conf)
36
+
37
+ expect(driver.instance.statsd).to receive(metric_type).with('test.test', tag: ['test_tag:test'])
38
+
39
+ driver.run(default_tag: 'test') do
40
+ driver.feed(time, {})
41
+ end
42
+ end
43
+
44
+ it 'ok with placeholders' do
45
+ conf = %(
46
+ @type datadog_statsd
47
+ metric_type ${metric_type}
48
+ tags ["test_tag:${tag}"]
49
+ <metric>
50
+ name ${metric_name}
51
+ </metric>
52
+ <buffer ["tag", "metric_type", "metric_name"]>
53
+ </buffer>
54
+ )
55
+ driver = create_driver(conf)
56
+
57
+ expect(driver.instance.statsd).to receive(metric_type).with('test.test', tag: ['test_tag:test'])
58
+
59
+ driver.run(default_tag: 'test') do
60
+ driver.feed(time, 'metric_name' => 'test.test', 'metric_type' => metric_type.to_s)
61
+ end
62
+ end
63
+
64
+ it 'not exist metric section' do
65
+ conf = %(
66
+ @type datadog_statsd
67
+ metric_type #{metric_type}
68
+ tags ["test_tag:test"]
69
+ )
70
+ driver = create_driver(conf)
71
+
72
+ expect(driver.instance.statsd).to_not receive(metric_type)
73
+
74
+ driver.run(default_tag: 'test') do
75
+ driver.feed(time, {})
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ %i[count gauge histgram timing set].each do |metric_type|
82
+ describe "metric_type=#{metric_type}" do
83
+ it 'ok' do
84
+ conf = %(
85
+ @type datadog_statsd
86
+ metric_type #{metric_type}
87
+ tags ["test_tag:test"]
88
+ <metric>
89
+ name test.test
90
+ value 1
91
+ </metric>
92
+ )
93
+ driver = create_driver(conf)
94
+
95
+ expect(driver.instance.statsd).to receive(metric_type).with('test.test', '1', tag: ['test_tag:test'])
96
+
97
+ driver.run(default_tag: 'test') do
98
+ driver.feed(time, {})
99
+ end
100
+ end
101
+
102
+ it 'ok with placeholders' do
103
+ conf = %(
104
+ @type datadog_statsd
105
+ metric_type ${metric_type}
106
+ tags ["test_tag:${tag}"]
107
+ <metric>
108
+ name ${metric_name}
109
+ value ${value}
110
+ </metric>
111
+ <buffer ["tag", "metric_type", "metric_name", "value"]>
112
+ </buffer>
113
+ )
114
+ driver = create_driver(conf)
115
+
116
+ expect(driver.instance.statsd).to receive(metric_type).with('test.test', '1', tag: ['test_tag:test'])
117
+
118
+ driver.run(default_tag: 'test') do
119
+ driver.feed(time, 'metric_name' => 'test.test', 'metric_type' => metric_type.to_s, 'value' => 1)
120
+ end
121
+ end
122
+
123
+ it 'not exist metric section' do
124
+ conf = %(
125
+ @type datadog_statsd
126
+ metric_type #{metric_type}
127
+ tags ["test_tag:test"]
128
+ )
129
+ driver = create_driver(conf)
130
+
131
+ expect(driver.instance.statsd).to_not receive(metric_type)
132
+
133
+ driver.run(default_tag: 'test') do
134
+ driver.feed(time, {})
135
+ end
136
+ end
137
+ end
138
+ end
139
+
140
+ describe 'metric_type=event' do
141
+ it 'ok' do
142
+ conf = %(
143
+ @type datadog_statsd
144
+ metric_type event
145
+ tags ["test_tag:test"]
146
+ <event>
147
+ title test_title
148
+ text test_text
149
+ </event>
150
+ )
151
+ driver = create_driver(conf)
152
+
153
+ expect(driver.instance.statsd).to receive(:event).with('test_title', 'test_text', tag: ['test_tag:test'])
154
+
155
+ driver.run(default_tag: 'test') do
156
+ driver.feed(time, {})
157
+ end
158
+ end
159
+
160
+ it 'ok with placeholders' do
161
+ conf = %(
162
+ @type datadog_statsd
163
+ metric_type event
164
+ tags ["test_tag:${tag}"]
165
+ <event>
166
+ title ${title}
167
+ text ${text}
168
+ aggregation_key ${aggregation_key}
169
+ alert_type ${alert_type}
170
+ date_happened ${date_happened}
171
+ priority ${priority}
172
+ source_type_name ${source_type_name}
173
+ </event>
174
+ <buffer ["title", "text", "tag", "aggregation_key", "alert_type", "date_happened", "priority", "source_type_name"]>
175
+ </buffer>
176
+ )
177
+ driver = create_driver(conf)
178
+
179
+ expect(driver.instance.statsd).to receive(:event).with(
180
+ 'test_title', 'test_text', tag: ['test_tag:test'], aggregation_key: 'ak', alert_type: 'info', date_happened: time, priority: 'low', source_type_name: 'stn'
181
+ )
182
+
183
+ driver.run(default_tag: 'test') do
184
+ driver.feed(time, 'title' => 'test_title', 'text' => 'test_text', 'aggregation_key' => 'ak',
185
+ 'alert_type' => 'info', 'date_happened' => time, 'priority' => 'low', 'source_type_name' => 'stn')
186
+ end
187
+ end
188
+
189
+ it 'not exist event section' do
190
+ conf = %(
191
+ @type datadog_statsd
192
+ metric_type event
193
+ tags ["test_tag:test"]
194
+ )
195
+ driver = create_driver(conf)
196
+
197
+ expect(driver.instance.statsd).to_not receive(:event)
198
+
199
+ driver.run(default_tag: 'test') do
200
+ driver.feed(time, {})
201
+ end
202
+ end
203
+ end
204
+ end
@@ -0,0 +1,3 @@
1
+ require 'test/unit'
2
+
3
+ Test::Unit::AutoRunner.need_auto_run = false
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-datadog-statsd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Kosuke Miyawaki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-06-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fluentd
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.14'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dogstatsd-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: test-unit
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: test-unit-rr
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Fluentd output plugin for Dogstatsd.
126
+ email:
127
+ - kikusumk3@gmail.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - ".travis.yml"
134
+ - Gemfile
135
+ - LICENSE
136
+ - README.md
137
+ - Rakefile
138
+ - fluent-plugin-datadog-statsd.gemspec
139
+ - lib/fluent/plugin/out_datadog_statsd.rb
140
+ - spec/fluent/pugin/out_datadog_statsd_spec.rb
141
+ - spec/spec_helper.rb
142
+ homepage: https://github.com/kikusu/fluent-plugin-datadog-statsd
143
+ licenses:
144
+ - MIT
145
+ metadata: {}
146
+ post_install_message:
147
+ rdoc_options: []
148
+ require_paths:
149
+ - lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirements: []
161
+ rubyforge_project:
162
+ rubygems_version: 2.6.11
163
+ signing_key:
164
+ specification_version: 4
165
+ summary: Fluentd output plugin for Dogstatsd.
166
+ test_files:
167
+ - spec/fluent/pugin/out_datadog_statsd_spec.rb
168
+ - spec/spec_helper.rb