fluent-plugin-splunkhec 1.6 → 2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 55b9a5e86477b6fda1429bdbb9f57adbdef3688d
4
- data.tar.gz: 4c06e39f92558b8e7b21acdfbda06eda1a4734f5
2
+ SHA256:
3
+ metadata.gz: 6d43a5befa93ae2c233ccfa42e69905cd45e444daa63a146efe15e542b82291a
4
+ data.tar.gz: f7b5089afeb769ea44c76d12ba90ad65f372bc52712e682c1b3cac94d7025568
5
5
  SHA512:
6
- metadata.gz: afdbea0ed8ad15825cb90159600b731ad4d2160f89c0aa86430b17aaa430100708261a66f5b7ccbf4020996fd7e0ab32b1c309fa91e069b91b766a7ba2c0f760
7
- data.tar.gz: 34b0f43b99e6130f9080c86eabe70545a7565c3e8b0add5b3e3adcd2d160754c9ef36b41f71e1b05a6802cb3df13195f61997b55a5154d198c24e3da15efb637
6
+ metadata.gz: d6818709d5c3e554c970439ed92b099b38e643ae4bf11a6f527d8c5e7f5b6fdfece34a61c74e935dcefd988d18e4dc2cfab4a6f64d88c36dd63a6d53319bb33b
7
+ data.tar.gz: f82e49af1ca1bae2e0ef392faaf39d35879b78286d2684597f2eb5391273789435d21397cffe08be401b3407cb709518c5ab6eb1309937bac4c1d4a656ae513d
data/.gitignore ADDED
@@ -0,0 +1,87 @@
1
+
2
+ # Created by https://www.gitignore.io/api/ruby,macos
3
+ # Edit at https://www.gitignore.io/?templates=ruby,macos
4
+
5
+ ### macOS ###
6
+ # General
7
+ .DS_Store
8
+ .AppleDouble
9
+ .LSOverride
10
+
11
+ # Icon must end with two \r
12
+ Icon
13
+
14
+ # Thumbnails
15
+ ._*
16
+
17
+ # Files that might appear in the root of a volume
18
+ .DocumentRevisions-V100
19
+ .fseventsd
20
+ .Spotlight-V100
21
+ .TemporaryItems
22
+ .Trashes
23
+ .VolumeIcon.icns
24
+ .com.apple.timemachine.donotpresent
25
+
26
+ # Directories potentially created on remote AFP share
27
+ .AppleDB
28
+ .AppleDesktop
29
+ Network Trash Folder
30
+ Temporary Items
31
+ .apdisk
32
+
33
+ ### Ruby ###
34
+ *.gem
35
+ *.rbc
36
+ /.config
37
+ /coverage/
38
+ /InstalledFiles
39
+ /pkg/
40
+ /spec/reports/
41
+ /spec/examples.txt
42
+ /test/tmp/
43
+ /test/version_tmp/
44
+ /tmp/
45
+
46
+ # Used by dotenv library to load environment variables.
47
+ # .env
48
+
49
+ # Ignore Byebug command history file.
50
+ .byebug_history
51
+
52
+ ## Specific to RubyMotion:
53
+ .dat*
54
+ .repl_history
55
+ build/
56
+ *.bridgesupport
57
+ build-iPhoneOS/
58
+ build-iPhoneSimulator/
59
+
60
+ ## Specific to RubyMotion (use of CocoaPods):
61
+ #
62
+ # We recommend against adding the Pods directory to your .gitignore. However
63
+ # you should judge for yourself, the pros and cons are mentioned at:
64
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
65
+ # vendor/Pods/
66
+
67
+ ## Documentation cache and generated files:
68
+ /.yardoc/
69
+ /_yardoc/
70
+ /doc/
71
+ /rdoc/
72
+
73
+ ## Environment normalization:
74
+ /.bundle/
75
+ /vendor/bundle
76
+ /lib/bundler/man/
77
+
78
+ # for a library or gem, you might want to ignore these files since the code is
79
+ # intended to run in multiple environments; otherwise, check them in:
80
+ # Gemfile.lock
81
+ # .ruby-version
82
+ # .ruby-gemset
83
+
84
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
85
+ .rvmrc
86
+
87
+ # End of https://www.gitignore.io/api/ruby,macos
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.4
4
+ script:
5
+ - "bundle exec rake"
data/CHANGELOG.md CHANGED
@@ -1,3 +1,28 @@
1
+ ## 2.2
2
+
3
+ Replaced deprecated packet statement
4
+
5
+ ## 2.1
6
+
7
+ Replaced yajl/json_ge for regular yajl
8
+
9
+ ## 2.0
10
+
11
+ Migrate to use FluentD v1 API. It doesn't support backwards compatibility.
12
+
13
+ ## 1.9
14
+
15
+ Reverted source and sourcetpye settings. They now reflect the README.
16
+
17
+ ## 1.8
18
+
19
+ - Add expand function used in ES plugin an get variables from kubernetes tags in fluent.conf
20
+
21
+ ## 1.7
22
+
23
+ - Fixed HTTP request (removed verify none)
24
+ - udpated testscript
25
+ - implemented travis.yml
1
26
 
2
27
  ## 1.6
3
28
 
@@ -44,4 +69,4 @@ Replaced RestClient for net/http.
44
69
 
45
70
  ## 0.9.0
46
71
 
47
- First version
72
+ First version
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in fluent-plugin-googleanalytics.gemspec
3
+ # Specify your gem's dependencies in fluent-plugin-splunkhec.gemspec
4
4
  gemspec
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2017 Coen Meerbeek
1
+ Copyright (c) 2018 Coen Meerbeek
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -86,4 +86,4 @@ Specify that all events in a FluentD chunk should be sent in batch to Splunk. De
86
86
 
87
87
  ## Copyright
88
88
 
89
- Copyright (c) 2017 Coen Meerbeek. See [LICENSE](LICENSE) for details.
89
+ Copyright (c) 2021 [LICENSE](LICENSE) for details.
@@ -4,22 +4,22 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = "fluent-plugin-splunkhec"
7
- gem.version = "1.6"
7
+ gem.version = "2.2"
8
8
  gem.authors = "Coen Meerbeek"
9
9
  gem.email = "cmeerbeek@gmail.com"
10
10
  gem.description = %q{Output plugin for the Splunk HTTP Event Collector.}
11
11
  gem.homepage = "https://github.com/cmeerbeek/fluent-plugin-splunkhec"
12
12
  gem.summary = %q{This plugin allows you to sent events to the Splunk HTTP Event Collector.}
13
-
13
+
14
14
  gem.files = `git ls-files`.split($\)
15
15
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
  gem.require_paths = ["lib"]
18
-
19
- gem.add_dependency "fluentd", [">= 0.10.58", "< 2"]
20
- gem.add_dependency "yajl-ruby", '>= 1.3.0'
21
- gem.add_development_dependency "rake", '~> 0.9', '>= 0.9.2'
22
- gem.add_development_dependency "test-unit", '~> 3.1', '>= 3.1.0'
23
- gem.add_development_dependency "webmock", '>= 3.0'
18
+
19
+ gem.add_dependency "fluentd", [">= 1.9.0", "< 2"]
20
+ gem.add_dependency "yajl-ruby", '>= 1.4.0'
21
+ gem.add_development_dependency "rake", '>= 13.0.0'
22
+ gem.add_development_dependency "test-unit", '~> 3.4', '>= 3.4.0'
23
+ gem.add_development_dependency "webmock", '>= 3.8.0'
24
24
  gem.license = 'MIT'
25
25
  end
@@ -1,11 +1,15 @@
1
- require 'fluent/output'
1
+ require 'fluent/plugin/output'
2
2
  require 'net/http'
3
- require 'yajl/json_gem'
3
+ require 'yajl'
4
4
 
5
- module Fluent
6
- class SplunkHECOutput < BufferedOutput
5
+ module Fluent::Plugin
6
+ class SplunkHECOutput < Output
7
7
  Fluent::Plugin.register_output('splunkhec', self)
8
8
 
9
+ helpers :compat_parameters, :event_emitter
10
+
11
+ DEFAULT_BUFFER_TYPE = "memory"
12
+
9
13
  # Primary Splunk HEC configuration parameters
10
14
  config_param :host, :string, :default => 'localhost'
11
15
  config_param :protocol, :string, :default => 'http'
@@ -15,19 +19,24 @@ module Fluent
15
19
  # Splunk event parameters
16
20
  config_param :index, :string, :default => 'main'
17
21
  config_param :event_host, :string, :default => nil
18
- config_param :source, :string, :default => 'tag'
19
- config_param :sourcetype, :string, :default => 'fluentd'
22
+ config_param :source, :string, :default => 'fluentd'
23
+ config_param :sourcetype, :string, :default => 'tag'
20
24
  config_param :send_event_as_json, :bool, :default => false
21
25
  config_param :usejson, :bool, :default => true
22
26
  config_param :send_batched_events, :bool, :default => false
23
27
 
28
+ config_section :buffer do
29
+ config_set_default :@type, DEFAULT_BUFFER_TYPE
30
+ end
31
+
24
32
  # This method is called before starting.
25
33
  # Here we construct the Splunk HEC URL to POST data to
26
34
  # If the configuration is invalid, raise Fluent::ConfigError.
27
35
  def configure(conf)
36
+ compat_parameters_convert(conf, :buffer)
28
37
  super
29
38
  @splunk_url = @protocol + '://' + @host + ':' + @port + '/services/collector/event'
30
- log.info 'splunkhec: sent data to ' + @splunk_url
39
+ log.info 'splunkhec: sending data to ' + @splunk_url
31
40
 
32
41
  if conf['event_host'] == nil
33
42
  begin
@@ -36,6 +45,7 @@ module Fluent
36
45
  @event_host = 'unknown'
37
46
  end
38
47
  end
48
+ @packer = Fluent::MessagePackFactory.engine_factory.packer
39
49
  end
40
50
 
41
51
  def start
@@ -46,82 +56,131 @@ module Fluent
46
56
  super
47
57
  end
48
58
 
59
+ def formatted_to_msgpack_binary?
60
+ true
61
+ end
62
+
63
+ def multi_workers_ready?
64
+ true
65
+ end
66
+
49
67
  # This method is called when an event reaches to Fluentd.
50
68
  # Use msgpack to serialize the object.
51
69
  def format(tag, time, record)
52
- [tag, time, record].to_msgpack
70
+ @packer.pack([tag, time, record]).to_s
71
+ end
72
+
73
+ def expand_param(param, tag, time, record)
74
+ # check for '${ ... }'
75
+ # yes => `eval`
76
+ # no => return param
77
+ return param if (param =~ /\${.+}/).nil?
78
+
79
+ # check for 'tag_parts[]'
80
+ # separated by a delimiter (default '.')
81
+ tag_parts = tag.split(@delimiter) unless (param =~ /tag_parts\[.+\]/).nil? || tag.nil?
82
+
83
+ # pull out section between ${} then eval
84
+ inner = param.clone
85
+ while inner.match(/\${.+}/)
86
+ to_eval = inner.match(/\${(.+?)}/){$1}
87
+
88
+ if !(to_eval =~ /record\[.+\]/).nil? && record.nil?
89
+ return to_eval
90
+ elsif !(to_eval =~/tag_parts\[.+\]/).nil? && tag_parts.nil?
91
+ return to_eval
92
+ elsif !(to_eval =~/time/).nil? && time.nil?
93
+ return to_eval
94
+ else
95
+ inner.sub!(/\${.+?}/, eval( to_eval ))
96
+ end
97
+ end
98
+ inner
53
99
  end
54
100
 
55
101
  # Loop through all records and sent them to Splunk
56
102
  def write(chunk)
57
103
  body = ''
58
104
  chunk.msgpack_each {|(tag,time,record)|
105
+
106
+ # define index and sourcetype dynamically
107
+ begin
108
+ index = expand_param(@index, tag, time, record)
109
+ sourcetype = expand_param(@sourcetype, tag, time, record)
110
+ event_host = expand_param(@event_host, tag, time, record)
111
+ token = expand_param(@token, tag, time, record)
112
+ rescue => e
113
+ # handle dynamic parameters misconfigurations
114
+ router.emit_error_event(tag, time, record, e)
115
+ next
116
+ end
117
+ log.debug "routing event from #{event_host} to #{index} index"
118
+ log.debug "expanded token #{token}"
119
+
59
120
  # Parse record to Splunk event format
60
121
  case record
61
- when Fixnum
122
+ when Integer
62
123
  event = record.to_s
63
124
  when Hash
64
125
  if @send_event_as_json
65
- event = record.to_json
126
+ event = Yajl::Encoder.encode(record)
66
127
  else
67
- event = record.to_json.gsub("\"", %q(\\\"))
128
+ event = Yajl::Encoder.encode(record).gsub("\"", %q(\\\"))
68
129
  end
69
130
  else
70
131
  event = record
71
132
  end
72
-
73
- source = @source == 'tag' ? tag : @source
133
+
134
+ sourcetype = @sourcetype == 'tag' ? tag : @sourcetype
74
135
 
75
136
  # Build body for the POST request
76
137
  if !@usejson
77
- event = record["time"]+ " " + record["message"].to_json.gsub(/^"|"$/,"")
78
- body << '{"time":"'+ DateTime.parse(record["time"]).strftime("%Q") +'", "event":"' + event + '", "sourcetype" :"' + sourcetype + '", "source" :"' + @source + '", "index" :"' + @index + '", "host" : "' + @event_host + '"}'
138
+ event = record["time"]+ " " + Yajl::Encoder.encode(record["message"]).gsub(/^"|"$/,"")
139
+ body << '{"time":"'+ DateTime.parse(record["time"]).strftime("%Q") +'", "event":"' + event + '", "sourcetype" :"' + sourcetype + '", "source" :"' + @source + '", "index" :"' + index + '", "host" : "' + event_host + '"}'
79
140
  elsif @send_event_as_json
80
- body << '{"time" :' + time.to_s + ', "event" :' + event + ', "sourcetype" :"' + sourcetype + '", "source" :"' + source + '", "index" :"' + @index + '", "host" : "' + @event_host + '"}'
141
+ body << '{"time" :' + time.to_s + ', "event" :' + event + ', "sourcetype" :"' + sourcetype + '", "source" :"' + source + '", "index" :"' + index + '", "host" : "' + event_host + '"}'
81
142
  else
82
- body << '{"time" :' + time.to_s + ', "event" :"' + event + '", "sourcetype" :"' + sourcetype + '", "source" :"' + source + '", "index" :"' + @index + '", "host" : "' + @event_host + '"}'
143
+ body << '{"time" :' + time.to_s + ', "event" :"' + event + '", "sourcetype" :"' + sourcetype + '", "source" :"' + source + '", "index" :"' + index + '", "host" : "' + event_host + '"}'
83
144
  end
84
145
 
85
146
  if @send_batched_events
86
147
  body << "\n"
87
148
  else
88
- send_to_splunk(body)
149
+ send_to_splunk(body, token)
89
150
  body = ''
90
151
  end
91
152
  }
92
153
 
93
154
  if @send_batched_events
94
- send_to_splunk(body)
155
+ send_to_splunk(body, token)
95
156
  end
96
157
  end
97
158
 
98
- def send_to_splunk(body)
159
+ def send_to_splunk(body, token)
99
160
  log.debug "splunkhec: " + body + "\n"
100
161
 
101
162
  uri = URI(@splunk_url)
102
163
 
103
164
  # Create client
104
165
  http = Net::HTTP.new(uri.host, uri.port)
166
+ http.set_debug_output(log.debug)
105
167
 
106
168
  # Create request
107
- req = Net::HTTP::Post.new(uri, "Content-Type" => "application/json", "Authorization" => "Splunk #{@token}")
169
+ req = Net::HTTP::Post.new(uri, "Content-Type" => "application/json; charset=utf-8", "Authorization" => "Splunk #{token}")
108
170
  req.body = body
109
171
 
110
172
  # Handle SSL
111
173
  if @protocol == 'https'
112
174
  http.use_ssl = true
113
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
114
175
  end
115
176
 
116
177
  # Send Request
117
- res = Net::HTTP.start(uri.hostname, uri.port) do |http|
118
- http.request(req)
119
- end
178
+ res = http.request(req)
120
179
 
121
180
  log.debug "splunkhec: HTTP Response Status Code is #{res.code}"
122
181
 
123
182
  if res.code.to_i != 200
124
- body = JSON.parse(res.body)
183
+ body = Yajl::Parser.parse(res.body)
125
184
  raise SplunkHECOutputError.new(body['text'], body['code'], body['invalid-event-number'], res.code)
126
185
  end
127
186
  end
data/test/helper.rb CHANGED
@@ -14,18 +14,9 @@ require "test/unit"
14
14
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
15
15
  $LOAD_PATH.unshift(File.dirname(__FILE__))
16
16
  require "fluent/test"
17
- unless ENV.has_key?("VERBOSE")
18
- nulllogger = Object.new
19
- nulllogger.instance_eval {|obj|
20
- def method_missing(method, *args)
21
- #pass
22
- end
23
- }
24
- $log = nulllogger
25
- end
17
+ require "fluent/test/driver/output"
26
18
 
27
19
  require "fluent/plugin/out_splunkhec"
28
20
 
29
21
  class Test::Unit::TestCase
30
22
  end
31
-
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  require 'helper'
2
3
  require 'webmock/test_unit'
3
4
 
@@ -26,7 +27,7 @@ class SplunkHECOutputTest < Test::Unit::TestCase
26
27
  ]
27
28
 
28
29
  def create_driver_splunkhec(conf = CONFIG)
29
- Fluent::Test::BufferedOutputTestDriver.new(Fluent::SplunkHECOutput).configure(conf)
30
+ Fluent::Test::Driver::Output.new(Fluent::Plugin::SplunkHECOutput).configure(conf)
30
31
  end
31
32
 
32
33
  def setup
@@ -48,8 +49,8 @@ class SplunkHECOutputTest < Test::Unit::TestCase
48
49
  assert_equal '8088', d.instance.port
49
50
  assert_equal 'main', d.instance.index
50
51
  assert_equal `hostname`.delete!("\n"), d.instance.event_host
51
- assert_equal 'fluentd', d.instance.source
52
52
  assert_equal 'tag', d.instance.sourcetype
53
+ assert_equal 'fluentd', d.instance.source
53
54
  assert_equal false, d.instance.send_event_as_json
54
55
  assert_equal true, d.instance.usejson
55
56
  assert_equal false, d.instance.send_batched_events
@@ -73,7 +74,7 @@ class SplunkHECOutputTest < Test::Unit::TestCase
73
74
  .with(
74
75
  headers: {
75
76
  'Authorization' => "Splunk #{TOKEN}",
76
- 'Content-Type' => 'application/json; charset=utf-8'
77
+ 'Content-Type' => 'application/json; charset=utf-8',
77
78
  },
78
79
  body: {
79
80
  'time' => time,
@@ -85,8 +86,8 @@ class SplunkHECOutputTest < Test::Unit::TestCase
85
86
  })
86
87
 
87
88
  d = create_driver_splunkhec(CONFIG + %[sourcetype #{sourcetype}])
88
- d.run do
89
- d.emit(record, time)
89
+ d.run(default_tag: 'test') do
90
+ d.feed(time, record)
90
91
  end
91
92
 
92
93
  assert_requested(splunk_request)
@@ -95,9 +96,9 @@ class SplunkHECOutputTest < Test::Unit::TestCase
95
96
  def test_should_use_tag_as_sourcetype_when_configured
96
97
  splunk_request = stub_request(:post, SPLUNK_URL).with(body: hash_including({'sourcetype' => 'test'}))
97
98
 
98
- d = create_driver_splunkhec(CONFIG + %[sourcetype tag])
99
- d.run do
100
- d.emit({'message' => 'data'}, 123456)
99
+ d = create_driver_splunkhec(CONFIG + %[sourcetype test])
100
+ d.run(default_tag: 'test') do
101
+ d.feed(123456, {'message' => 'data'})
101
102
  end
102
103
 
103
104
  assert_requested(splunk_request)
@@ -108,8 +109,8 @@ class SplunkHECOutputTest < Test::Unit::TestCase
108
109
  splunk_request = stub_request(:post, SPLUNK_URL).with(body: hash_including({'event' => record.to_json}))
109
110
 
110
111
  d = create_driver_splunkhec(CONFIG + %[send_event_as_json false])
111
- d.run do
112
- d.emit(record)
112
+ d.run(default_tag: 'test') do
113
+ d.feed(record)
113
114
  end
114
115
 
115
116
  assert_requested(splunk_request)
@@ -124,8 +125,8 @@ class SplunkHECOutputTest < Test::Unit::TestCase
124
125
  .with(body: hash_including({'time' => log_time_millis, 'event' => "#{log_time} #{log_event}"}))
125
126
 
126
127
  d = create_driver_splunkhec(CONFIG + %[usejson false])
127
- d.run do
128
- d.emit({'time' => log_time, 'message' => log_event})
128
+ d.run(default_tag: 'test') do
129
+ d.feed({'time' => log_time, 'message' => log_event})
129
130
  end
130
131
 
131
132
  assert_requested(splunk_request)
@@ -137,8 +138,8 @@ class SplunkHECOutputTest < Test::Unit::TestCase
137
138
  splunk_request = stub_request(:post, SPLUNK_URL).with(body: hash_including({'event' => record}))
138
139
 
139
140
  d = create_driver_splunkhec(CONFIG + %[send_event_as_json true])
140
- d.run do
141
- d.emit(record)
141
+ d.run(default_tag: 'test') do
142
+ d.feed(record)
142
143
  end
143
144
 
144
145
  assert_requested(splunk_request)
@@ -154,9 +155,9 @@ class SplunkHECOutputTest < Test::Unit::TestCase
154
155
  send_event_as_json true
155
156
  send_batched_events true])
156
157
 
157
- d.run do
158
- d.emit(record1)
159
- d.emit(record2)
158
+ d.run(default_tag: 'test') do
159
+ d.feed(record1)
160
+ d.feed(record2)
160
161
  end
161
162
 
162
163
  assert_requested(splunk_request)
@@ -165,10 +166,10 @@ class SplunkHECOutputTest < Test::Unit::TestCase
165
166
  def test_should_raise_exception_when_splunk_returns_error_to_make_fluentd_retry_later
166
167
  stub_request(:any, SPLUNK_URL).to_return(status: 403, body: {'text' => 'Token disabled', 'code' => 1}.to_json)
167
168
 
168
- assert_raise Fluent::SplunkHECOutputError do
169
+ assert_raise Fluent::Plugin::SplunkHECOutputError do
169
170
  d = create_driver_splunkhec
170
- d.run do
171
- d.emit({'message' => 'data'})
171
+ d.run(default_tag: 'test') do
172
+ d.feed({'message' => 'data'})
172
173
  end
173
174
  end
174
175
  end
@@ -179,8 +180,8 @@ class SplunkHECOutputTest < Test::Unit::TestCase
179
180
  splunk_request = stub_request(:post, SPLUNK_URL).with(body: hash_including({'event' => {'message' => '©2017'}}))
180
181
 
181
182
  d = create_driver_splunkhec(CONFIG + %[send_event_as_json true])
182
- d.run do
183
- d.emit(record)
183
+ d.run(default_tag: 'test') do
184
+ d.feed(record)
184
185
  end
185
186
 
186
187
  assert_requested(splunk_request)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-splunkhec
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.6'
4
+ version: '2.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Coen Meerbeek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-18 00:00:00.000000000 Z
11
+ date: 2021-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.10.58
19
+ version: 1.9.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '2'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.10.58
29
+ version: 1.9.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2'
@@ -36,74 +36,70 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 1.3.0
39
+ version: 1.4.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 1.3.0
46
+ version: 1.4.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '0.9'
54
51
  - - ">="
55
52
  - !ruby/object:Gem::Version
56
- version: 0.9.2
53
+ version: 13.0.0
57
54
  type: :development
58
55
  prerelease: false
59
56
  version_requirements: !ruby/object:Gem::Requirement
60
57
  requirements:
61
- - - "~>"
62
- - !ruby/object:Gem::Version
63
- version: '0.9'
64
58
  - - ">="
65
59
  - !ruby/object:Gem::Version
66
- version: 0.9.2
60
+ version: 13.0.0
67
61
  - !ruby/object:Gem::Dependency
68
62
  name: test-unit
69
63
  requirement: !ruby/object:Gem::Requirement
70
64
  requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '3.1'
74
65
  - - ">="
75
66
  - !ruby/object:Gem::Version
76
- version: 3.1.0
67
+ version: 3.4.0
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '3.4'
77
71
  type: :development
78
72
  prerelease: false
79
73
  version_requirements: !ruby/object:Gem::Requirement
80
74
  requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '3.1'
84
75
  - - ">="
85
76
  - !ruby/object:Gem::Version
86
- version: 3.1.0
77
+ version: 3.4.0
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '3.4'
87
81
  - !ruby/object:Gem::Dependency
88
82
  name: webmock
89
83
  requirement: !ruby/object:Gem::Requirement
90
84
  requirements:
91
85
  - - ">="
92
86
  - !ruby/object:Gem::Version
93
- version: '3.0'
87
+ version: 3.8.0
94
88
  type: :development
95
89
  prerelease: false
96
90
  version_requirements: !ruby/object:Gem::Requirement
97
91
  requirements:
98
92
  - - ">="
99
93
  - !ruby/object:Gem::Version
100
- version: '3.0'
94
+ version: 3.8.0
101
95
  description: Output plugin for the Splunk HTTP Event Collector.
102
96
  email: cmeerbeek@gmail.com
103
97
  executables: []
104
98
  extensions: []
105
99
  extra_rdoc_files: []
106
100
  files:
101
+ - ".gitignore"
102
+ - ".travis.yml"
107
103
  - CHANGELOG.md
108
104
  - Gemfile
109
105
  - LICENSE
@@ -132,8 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
128
  - !ruby/object:Gem::Version
133
129
  version: '0'
134
130
  requirements: []
135
- rubyforge_project:
136
- rubygems_version: 2.6.8
131
+ rubygems_version: 3.0.3.1
137
132
  signing_key:
138
133
  specification_version: 4
139
134
  summary: This plugin allows you to sent events to the Splunk HTTP Event Collector.