logstash-output-sumologic 1.1.4 → 1.1.9
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 +5 -5
- data/CHANGELOG.md +11 -6
- data/DEVELOPER.md +19 -7
- data/Gemfile +2 -1
- data/README.md +110 -38
- data/lib/logstash/outputs/sumologic.rb +79 -314
- data/lib/logstash/outputs/sumologic/common.rb +57 -0
- data/lib/logstash/outputs/sumologic/compressor.rb +39 -0
- data/lib/logstash/outputs/sumologic/header_builder.rb +79 -0
- data/lib/logstash/outputs/sumologic/message_queue.rb +38 -0
- data/lib/logstash/outputs/sumologic/monitor.rb +72 -0
- data/lib/logstash/outputs/sumologic/payload_builder.rb +155 -0
- data/lib/logstash/outputs/sumologic/piler.rb +87 -0
- data/lib/logstash/outputs/sumologic/sender.rb +167 -0
- data/lib/logstash/outputs/sumologic/statistics.rb +124 -0
- data/logstash-output-sumologic.gemspec +17 -15
- data/spec/outputs/sumologic/compressor_spec.rb +27 -0
- data/spec/outputs/sumologic/header_builder_spec.rb +197 -0
- data/spec/outputs/sumologic/message_queue_spec.rb +48 -0
- data/spec/outputs/sumologic/payload_builder_spec.rb +523 -0
- data/spec/outputs/sumologic/piler_spec.rb +189 -0
- data/spec/outputs/sumologic/sender_spec.rb +188 -0
- data/spec/outputs/sumologic_spec.rb +224 -400
- data/spec/test_server.rb +49 -0
- metadata +71 -37
- data/CONTRIBUTORS +0 -13
- data/spec/spec_helper.rb +0 -61
data/spec/test_server.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "socket"
|
3
|
+
|
4
|
+
class TestServer
|
5
|
+
|
6
|
+
PORT = 5678
|
7
|
+
CRLF = "\r\n"
|
8
|
+
RESPONSE_200 = "HTTP/1.1 200 OK#{CRLF}" +
|
9
|
+
"Content-Type: text/plain#{CRLF}" +
|
10
|
+
"Content-Length: 0#{CRLF}" +
|
11
|
+
"Connection: close#{CRLF}" +
|
12
|
+
"#{CRLF}"
|
13
|
+
|
14
|
+
RESPONSE_429 = "HTTP/1.1 429 Too Many Requests#{CRLF}" +
|
15
|
+
"Content-Type: text/plain#{CRLF}" +
|
16
|
+
"Retry-After: 3600#{CRLF}" +
|
17
|
+
"#{CRLF}"
|
18
|
+
|
19
|
+
attr_reader :queue
|
20
|
+
attr_writer :response
|
21
|
+
|
22
|
+
def initialize(response = RESPONSE_200)
|
23
|
+
@requests = Queue.new()
|
24
|
+
@response = response
|
25
|
+
@server = TCPServer.new PORT
|
26
|
+
end # def initialize
|
27
|
+
|
28
|
+
def start()
|
29
|
+
@thread = Thread.new {
|
30
|
+
while session = @server.accept
|
31
|
+
request = session.gets
|
32
|
+
@requests << request
|
33
|
+
session.print @response
|
34
|
+
session.close
|
35
|
+
end
|
36
|
+
}
|
37
|
+
@thread
|
38
|
+
end # def start
|
39
|
+
|
40
|
+
def stop()
|
41
|
+
@thread.kill()
|
42
|
+
@thread.join()
|
43
|
+
end # def stop
|
44
|
+
|
45
|
+
def drain()
|
46
|
+
@requests.size.times.map { @requests.deq() }
|
47
|
+
end
|
48
|
+
|
49
|
+
end # class
|
metadata
CHANGED
@@ -1,83 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-sumologic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sumo Logic
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: manticore
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
|
-
- - "
|
17
|
+
- - ">="
|
17
18
|
- !ruby/object:Gem::Version
|
18
|
-
version:
|
19
|
-
|
19
|
+
version: 0.5.4
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.0.0
|
23
|
+
type: :runtime
|
20
24
|
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.5.4
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.0.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: logstash-core-plugin-api
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.60'
|
40
|
+
- - "<="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '2.99'
|
21
43
|
type: :runtime
|
44
|
+
prerelease: false
|
22
45
|
version_requirements: !ruby/object:Gem::Requirement
|
23
46
|
requirements:
|
24
|
-
- - "
|
47
|
+
- - ">="
|
25
48
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
49
|
+
version: '1.60'
|
50
|
+
- - "<="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '2.99'
|
27
53
|
- !ruby/object:Gem::Dependency
|
54
|
+
name: logstash-codec-plain
|
28
55
|
requirement: !ruby/object:Gem::Requirement
|
29
56
|
requirements:
|
30
57
|
- - ">="
|
31
58
|
- !ruby/object:Gem::Version
|
32
59
|
version: '0'
|
33
|
-
name: logstash-codec-plain
|
34
|
-
prerelease: false
|
35
60
|
type: :runtime
|
61
|
+
prerelease: false
|
36
62
|
version_requirements: !ruby/object:Gem::Requirement
|
37
63
|
requirements:
|
38
64
|
- - ">="
|
39
65
|
- !ruby/object:Gem::Version
|
40
66
|
version: '0'
|
41
67
|
- !ruby/object:Gem::Dependency
|
68
|
+
name: logstash-mixin-http_client
|
42
69
|
requirement: !ruby/object:Gem::Requirement
|
43
70
|
requirements:
|
44
71
|
- - ">="
|
45
72
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
47
|
-
- - "<"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: 7.0.0
|
50
|
-
name: logstash-mixin-http_client
|
51
|
-
prerelease: false
|
73
|
+
version: '0'
|
52
74
|
type: :runtime
|
75
|
+
prerelease: false
|
53
76
|
version_requirements: !ruby/object:Gem::Requirement
|
54
77
|
requirements:
|
55
78
|
- - ">="
|
56
79
|
- !ruby/object:Gem::Version
|
57
|
-
version:
|
58
|
-
- - "<"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 7.0.0
|
80
|
+
version: '0'
|
61
81
|
- !ruby/object:Gem::Dependency
|
82
|
+
name: logstash-devutils
|
62
83
|
requirement: !ruby/object:Gem::Requirement
|
63
84
|
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '1.3'
|
67
85
|
- - ">="
|
68
86
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
70
|
-
name: logstash-devutils
|
71
|
-
prerelease: false
|
87
|
+
version: '0'
|
72
88
|
type: :development
|
89
|
+
prerelease: false
|
73
90
|
version_requirements: !ruby/object:Gem::Requirement
|
74
91
|
requirements:
|
75
|
-
- - "~>"
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '1.3'
|
78
92
|
- - ">="
|
79
93
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
94
|
+
version: '0'
|
81
95
|
description: This gem is a Logstash output plugin to deliver the log or metrics to
|
82
96
|
Sumo Logic cloud service. Go to https://github.com/SumoLogic/logstash-output-sumologic
|
83
97
|
for getting help, reporting issues, etc.
|
@@ -87,22 +101,36 @@ extensions: []
|
|
87
101
|
extra_rdoc_files: []
|
88
102
|
files:
|
89
103
|
- CHANGELOG.md
|
90
|
-
- CONTRIBUTORS
|
91
104
|
- DEVELOPER.md
|
92
105
|
- Gemfile
|
93
106
|
- LICENSE
|
94
107
|
- README.md
|
95
108
|
- lib/logstash/outputs/sumologic.rb
|
109
|
+
- lib/logstash/outputs/sumologic/common.rb
|
110
|
+
- lib/logstash/outputs/sumologic/compressor.rb
|
111
|
+
- lib/logstash/outputs/sumologic/header_builder.rb
|
112
|
+
- lib/logstash/outputs/sumologic/message_queue.rb
|
113
|
+
- lib/logstash/outputs/sumologic/monitor.rb
|
114
|
+
- lib/logstash/outputs/sumologic/payload_builder.rb
|
115
|
+
- lib/logstash/outputs/sumologic/piler.rb
|
116
|
+
- lib/logstash/outputs/sumologic/sender.rb
|
117
|
+
- lib/logstash/outputs/sumologic/statistics.rb
|
96
118
|
- logstash-output-sumologic.gemspec
|
119
|
+
- spec/outputs/sumologic/compressor_spec.rb
|
120
|
+
- spec/outputs/sumologic/header_builder_spec.rb
|
121
|
+
- spec/outputs/sumologic/message_queue_spec.rb
|
122
|
+
- spec/outputs/sumologic/payload_builder_spec.rb
|
123
|
+
- spec/outputs/sumologic/piler_spec.rb
|
124
|
+
- spec/outputs/sumologic/sender_spec.rb
|
97
125
|
- spec/outputs/sumologic_spec.rb
|
98
|
-
- spec/
|
126
|
+
- spec/test_server.rb
|
99
127
|
homepage: https://github.com/SumoLogic/logstash-output-sumologic
|
100
128
|
licenses:
|
101
129
|
- Apache-2.0
|
102
130
|
metadata:
|
103
131
|
logstash_plugin: 'true'
|
104
132
|
logstash_group: output
|
105
|
-
post_install_message:
|
133
|
+
post_install_message:
|
106
134
|
rdoc_options: []
|
107
135
|
require_paths:
|
108
136
|
- lib
|
@@ -117,11 +145,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
145
|
- !ruby/object:Gem::Version
|
118
146
|
version: '0'
|
119
147
|
requirements: []
|
120
|
-
rubyforge_project:
|
121
|
-
rubygems_version: 2.
|
122
|
-
signing_key:
|
148
|
+
rubyforge_project:
|
149
|
+
rubygems_version: 2.7.7
|
150
|
+
signing_key:
|
123
151
|
specification_version: 4
|
124
152
|
summary: Deliever the log to Sumo Logic cloud service.
|
125
153
|
test_files:
|
154
|
+
- spec/outputs/sumologic/compressor_spec.rb
|
155
|
+
- spec/outputs/sumologic/header_builder_spec.rb
|
156
|
+
- spec/outputs/sumologic/message_queue_spec.rb
|
157
|
+
- spec/outputs/sumologic/payload_builder_spec.rb
|
158
|
+
- spec/outputs/sumologic/piler_spec.rb
|
159
|
+
- spec/outputs/sumologic/sender_spec.rb
|
126
160
|
- spec/outputs/sumologic_spec.rb
|
127
|
-
- spec/
|
161
|
+
- spec/test_server.rb
|
data/CONTRIBUTORS
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
The following is a list of people who have contributed ideas, code, bug
|
2
|
-
reports, or in general have helped Sumo Logic plug-in along its way.
|
3
|
-
|
4
|
-
Contributors:
|
5
|
-
* Bin Yi (bin3377)
|
6
|
-
* Brian Goleno (bgoleno)
|
7
|
-
* Jacek Migdal (jakozaur)
|
8
|
-
* Chris Dessonville (cddude229)
|
9
|
-
|
10
|
-
Note: If you've sent us patches, bug reports, or otherwise contributed to
|
11
|
-
Sumo Logic plug-in, and you aren't on the list above and want to be, please let us know
|
12
|
-
and we'll make sure you're here. Contributions from folks like you are what make
|
13
|
-
open source awesome.
|
data/spec/spec_helper.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require "logstash/devutils/rspec/spec_helper"
|
4
|
-
require "logstash/outputs/sumologic"
|
5
|
-
|
6
|
-
class Server
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@queue = Queue.new
|
10
|
-
@header = {}
|
11
|
-
end
|
12
|
-
|
13
|
-
def size
|
14
|
-
@queue.length
|
15
|
-
end
|
16
|
-
|
17
|
-
def all
|
18
|
-
@queue.size.times.map { @queue.pop }
|
19
|
-
end
|
20
|
-
|
21
|
-
def all_sorted
|
22
|
-
all.sort { |x, y| y <=> x }
|
23
|
-
end
|
24
|
-
|
25
|
-
def pop
|
26
|
-
if !@queue.empty?
|
27
|
-
@queue.pop
|
28
|
-
else
|
29
|
-
puts "EMPTY"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def header
|
34
|
-
@header
|
35
|
-
end
|
36
|
-
|
37
|
-
def empty?
|
38
|
-
@queue.empty?
|
39
|
-
end
|
40
|
-
|
41
|
-
def push(data, header)
|
42
|
-
@header = header
|
43
|
-
data.split("\n").each do |line|
|
44
|
-
@queue << line
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
class LogStash::Outputs::SumoLogic
|
51
|
-
attr_reader :server
|
52
|
-
|
53
|
-
def connect
|
54
|
-
@server = Server.new
|
55
|
-
end
|
56
|
-
|
57
|
-
def send_request(content)
|
58
|
-
@server.push(content, get_headers())
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|