fluent-plugin-https-json 0.0.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.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,25 @@
1
+ fluentd_https_out
2
+ =================
3
+
4
+ A fluentd buffered output filter that posts to https a json array of records
5
+
6
+ Installation
7
+ =================
8
+
9
+ gem install 'fluent-plugin-https-json'
10
+
11
+ Usage
12
+ =================
13
+
14
+ ```
15
+ <match SOME_EVENT>
16
+ type https_json
17
+ buffer_path /tmp/buffer
18
+
19
+ buffer_chunk_limit 256m
20
+ buffer_queue_limit 128
21
+ flush_interval 10s
22
+ endpoint http://127.0.0.1:3000/consume_json_arrays_of_some_event/
23
+
24
+ </match>
25
+ ```
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.name = "fluent-plugin-https-json"
5
+ gem.version = "0.0.1"
6
+ gem.authors = ["Jay OConnor"]
7
+ gem.email = ["jaydoconnor@gmail.com"]
8
+ gem.summary = %q{Fluentd output plugin to buffer logs as json arrays to a url}
9
+ gem.description = gem.summary
10
+ gem.homepage = "https://github.com/jdoconnor/fluentd_https_out"
11
+
12
+ gem.files = `git ls-files`.split($\)
13
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
+ gem.require_paths = ["lib"]
16
+
17
+ gem.add_development_dependency "bundler"
18
+ gem.add_development_dependency "json"
19
+ gem.add_development_dependency "fluentd"
20
+ gem.add_runtime_dependency "fluentd"
21
+ end
@@ -0,0 +1,62 @@
1
+ class Fluent::HttpsJsonOutput < Fluent::TimeSlicedOutput
2
+ # First, register the plugin. NAME is the name of this plugin
3
+ # and identifies the plugin in the configuration file.
4
+ Fluent::Plugin.register_output('https_json', self)
5
+
6
+ def initialize
7
+ require 'net/http'
8
+ require 'net/https'
9
+ require 'uri'
10
+ super
11
+ end
12
+
13
+ # This method is called before starting.
14
+ # 'conf' is a Hash that includes configuration parameters.
15
+ # If the configuration is invalid, raise Fluent::ConfigError.
16
+ def configure(conf)
17
+ super
18
+ @uri = URI.parse(conf['endpoint'])
19
+ @http = Net::HTTP.new(@uri.host,@uri.port)
20
+ @https = Net::HTTP.new(@uri.host,@uri.port)
21
+ @https.use_ssl = true
22
+ @use_https = conf['use_https'] == 'true'
23
+ end
24
+
25
+ # This method is called when starting.
26
+ # Open sockets or files here.
27
+ def start
28
+ super
29
+ end
30
+
31
+ # This method is called when shutting down.
32
+ # Shutdown the thread and close sockets or files here.
33
+ def shutdown
34
+ super
35
+ end
36
+
37
+ ## Optionally, you can use to_msgpack to serialize the object.
38
+ def format(tag, time, record)
39
+ [tag, time, record].to_msgpack
40
+ end
41
+
42
+ # This method is called every flush interval. Write the buffer chunk
43
+ # to files or databases here.
44
+ # 'chunk' is a buffer chunk that includes multiple formatted
45
+ # events. You can use 'data = chunk.read' to get all events and
46
+ # 'chunk.open {|io| ... }' to get IO objects.
47
+ def write(chunk)
48
+ events = []
49
+ chunk.msgpack_each {|(tag,time,record)|
50
+ events << {:tag => tag, :time => time, :record => record}
51
+ }
52
+ events = events.to_json
53
+ req = Net::HTTP::Post.new(@uri.path)
54
+ req.set_form_data({"events" => events})
55
+ if @use_https
56
+ res = @https.request(req)
57
+ else
58
+ res = @http.request(req)
59
+ end
60
+ end
61
+
62
+ end
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-https-json
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jay OConnor
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: fluentd
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: fluentd
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: Fluentd output plugin to buffer logs as json arrays to a url
79
+ email:
80
+ - jaydoconnor@gmail.com
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - Gemfile
86
+ - README.md
87
+ - fluent-plugin-https-json.gemspec
88
+ - lib/fluent/plugin/out_https_json.rb
89
+ homepage: https://github.com/jdoconnor/fluentd_https_out
90
+ licenses: []
91
+ post_install_message:
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ requirements: []
108
+ rubyforge_project:
109
+ rubygems_version: 1.8.24
110
+ signing_key:
111
+ specification_version: 3
112
+ summary: Fluentd output plugin to buffer logs as json arrays to a url
113
+ test_files: []