logstash-output-chronix 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 +4 -4
- data/README.md +14 -4
- data/lib/logstash/outputs/chronix.rb +69 -18
- data/lib/logstash/outputs/proto/StracePoint.proto +15 -0
- data/lib/logstash/outputs/proto/StracePoint.rb +14 -0
- data/logstash-output-chronix.gemspec +2 -2
- data/spec/outputs/chronix_spec.rb +95 -13
- metadata +12 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79a2fa0b8712acee630806c6bacc9ff585a71555
|
4
|
+
data.tar.gz: c8d381ff95b73cf7bd954f825536ba4451aab845
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a8f28c532b41215fc056821685eb0e3cfe2f313ff5c2bf0f51dee466529345dc50d86a381769a30c9ff2c19308f909b2e2f3dcea4ae109dc8a81d11825983f7
|
7
|
+
data.tar.gz: 25b29e31b85bdbddbcfa8c20fa0c71f3bfe1e844cff6c3c173f25fe5ee38565ad766ac6fe5d222a10599a41ccb3ff4507bcf6be94641a1a35ba29b7f9168133c
|
data/README.md
CHANGED
@@ -2,13 +2,22 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/ChronixDB/chronix.logstash)
|
4
4
|
|
5
|
-
This is a plugin for [Logstash](https://github.com/elastic/logstash) to write time series to [Chronix](https://github.com/ChronixDB) released under the Apache 2.0
|
5
|
+
This is a plugin for [Logstash](https://github.com/elastic/logstash) to write time series to [Chronix](https://github.com/ChronixDB) released under the [Apache 2.0 License](LICENSE).
|
6
6
|
|
7
7
|
## Install the plugin
|
8
8
|
|
9
|
-
There are two options to install the plugin. (check
|
9
|
+
There are two options to install the plugin. Install via gem install or manual install (check also the [Logstash Repos](https://github.com/logstash-plugins/logstash-output-example#2-running-your-unpublished-plugin-in-logstash) for reference).
|
10
10
|
|
11
|
-
### Install
|
11
|
+
### Install via gem install
|
12
|
+
Just type
|
13
|
+
```sh
|
14
|
+
gem install logstash-output-chronix
|
15
|
+
```
|
16
|
+
to install the plugin. See the [configuration-section](#configuration) for configuration options.
|
17
|
+
|
18
|
+
### Install manually
|
19
|
+
|
20
|
+
#### Install in a local Logstash Clone
|
12
21
|
- Edit Logstash `Gemfile` and add the local plugin path, for example:
|
13
22
|
```ruby
|
14
23
|
gem "logstash-output-chronix", :path => "/path/to/logstash-output-chronix"
|
@@ -22,7 +31,7 @@ bin/plugin install --no-verify
|
|
22
31
|
bin/logstash -e your_config.conf
|
23
32
|
```
|
24
33
|
|
25
|
-
|
34
|
+
#### Run in an installed Logstash
|
26
35
|
|
27
36
|
You can use the same method to run your plugin in an installed Logstash by editing its `Gemfile` and pointing the `:path` to your local plugin development directory or you can build the gem and install it using:
|
28
37
|
|
@@ -54,6 +63,7 @@ chronix {
|
|
54
63
|
host => "192.168.0.1" # default is 'localhost'
|
55
64
|
port => "8983" # default is '8983'
|
56
65
|
path => "/solr/chronix/" # default is '/solr/chronix/'
|
66
|
+
threshold => 10 # default is 10 (every delta with (delta - prev_delta) < threshold will be nulled)
|
57
67
|
flush_size => 100 # default is '100' (Number of events to queue up before writing to Solr)
|
58
68
|
idle_flush_time => 30 # default is '30' (Amount of time since the last flush before a flush is done)
|
59
69
|
}
|
@@ -12,6 +12,7 @@ require "rubygems"
|
|
12
12
|
require "stud/buffer"
|
13
13
|
require "zlib"
|
14
14
|
require_relative "proto/Point.rb"
|
15
|
+
require_relative "proto/StracePoint.rb"
|
15
16
|
|
16
17
|
class LogStash::Outputs::Chronix < LogStash::Outputs::Base
|
17
18
|
include Stud::Buffer
|
@@ -27,6 +28,9 @@ class LogStash::Outputs::Chronix < LogStash::Outputs::Base
|
|
27
28
|
# path to chronix, default: /solr/chronix/
|
28
29
|
config :path, :validate => :string, :default => "/solr/chronix/"
|
29
30
|
|
31
|
+
# threshold for delta-calculation, every (delta - prev_delta) < threshold will be nulled
|
32
|
+
config :threshold, :validate => :number, :default => 10
|
33
|
+
|
30
34
|
# Number of events to queue up before writing to Solr
|
31
35
|
config :flush_size, :validate => :number, :default => 100
|
32
36
|
|
@@ -59,10 +63,27 @@ class LogStash::Outputs::Chronix < LogStash::Outputs::Base
|
|
59
63
|
|
60
64
|
public
|
61
65
|
def flush(events, close=false)
|
66
|
+
pointHash = createPointHash(events)
|
67
|
+
|
68
|
+
documents = []
|
69
|
+
|
70
|
+
# iterate through pointHash and create a solr document
|
71
|
+
pointHash.each { |metric, phash|
|
72
|
+
documents << createSolrDocument(metric, phash)
|
73
|
+
}
|
74
|
+
|
75
|
+
# send to chronix
|
76
|
+
@solr.add documents
|
77
|
+
@solr.update :data => '<commit/>'
|
78
|
+
end #def flush
|
79
|
+
|
80
|
+
# this method iterates through all events and creates a hash with different lists of points sorted by metric
|
81
|
+
def createPointHash(events)
|
62
82
|
pointHash = Hash.new
|
63
83
|
|
64
84
|
# add each event to our hash, sorted by metrics as key
|
65
85
|
events.each do |event|
|
86
|
+
|
66
87
|
eventData = event.to_hash()
|
67
88
|
|
68
89
|
# format the timestamp to unix format
|
@@ -71,27 +92,37 @@ class LogStash::Outputs::Chronix < LogStash::Outputs::Base
|
|
71
92
|
|
72
93
|
# if there is no list for the current metric -> create a new one
|
73
94
|
if pointHash[metric] == nil
|
74
|
-
pointHash[metric] = {"startTime" => timestamp, "
|
95
|
+
pointHash[metric] = {"startTime" => timestamp, "lastTimestamp" => 0, "points" => Chronix::Points.new, "prevDelta" => 0, "timeSinceLastDelta" => 0, "lastStoredDate" => timestamp}
|
75
96
|
end
|
76
97
|
|
77
|
-
pointHash[metric]["
|
98
|
+
if pointHash[metric]["lastTimestamp"] == 0
|
99
|
+
delta = 0
|
100
|
+
else
|
101
|
+
delta = timestamp - pointHash[metric]["lastTimestamp"]
|
102
|
+
end
|
78
103
|
|
79
|
-
|
80
|
-
|
104
|
+
if (almostEquals(delta, pointHash[metric]["prevDelta"]) && noDrift(timestamp, pointHash[metric]["lastStoredDate"], pointHash[metric]["timeSinceLastDelta"]))
|
105
|
+
# insert the current point in our list
|
106
|
+
pointHash[metric]["points"].p << createChronixPoint(0, eventData["value"], eventData["chronix_type"])
|
81
107
|
|
82
|
-
|
83
|
-
|
84
|
-
documents = []
|
108
|
+
pointHash[metric]["timeSinceLastDelta"] += 1
|
85
109
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
}
|
110
|
+
else
|
111
|
+
# insert the current point in our list
|
112
|
+
pointHash[metric]["points"].p << createChronixPoint(delta, eventData["value"], eventData["chronix_type"])
|
90
113
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
114
|
+
pointHash[metric]["timeSinceLastDelta"] = 1
|
115
|
+
pointHash[metric]["lastStoredDate"] = timestamp
|
116
|
+
end
|
117
|
+
|
118
|
+
# save current timestamp as lastTimestamp and the previousOffset
|
119
|
+
pointHash[metric]["lastTimestamp"] = timestamp
|
120
|
+
pointHash[metric]["prevDelta"] = delta
|
121
|
+
|
122
|
+
end #end do
|
123
|
+
|
124
|
+
return pointHash
|
125
|
+
end
|
95
126
|
|
96
127
|
# this method zips and base64 encodes the list of points
|
97
128
|
def zipAndEncode(points)
|
@@ -109,12 +140,32 @@ class LogStash::Outputs::Chronix < LogStash::Outputs::Base
|
|
109
140
|
return Base64.strict_encode64(data)
|
110
141
|
end
|
111
142
|
|
112
|
-
def createChronixPoint(
|
113
|
-
|
143
|
+
def createChronixPoint(delta, value, type = "")
|
144
|
+
if type == "strace"
|
145
|
+
return Chronix::StracePoint.new( :t => delta, :v => value )
|
146
|
+
else
|
147
|
+
return Chronix::Point.new( :t => delta, :v => value )
|
148
|
+
end
|
114
149
|
end
|
115
150
|
|
116
151
|
def createSolrDocument(metric, phash)
|
117
|
-
|
152
|
+
endTime = phash["lastTimestamp"] # maybe use startTime + delta here?!
|
153
|
+
return { :metric => metric, :start => phash["startTime"], :end => endTime, :data => zipAndEncode(phash["points"]), :threshold => @threshold }
|
154
|
+
end
|
155
|
+
|
156
|
+
# checks if two offsets are almost equals
|
157
|
+
def almostEquals(delta, prevDelta)
|
158
|
+
diff = (delta - prevDelta).abs
|
159
|
+
|
160
|
+
return (diff <= @threshold)
|
161
|
+
end
|
162
|
+
|
163
|
+
# checks if there is a drift
|
164
|
+
def noDrift(timestamp, lastStoredDate, timeSinceLastDelta)
|
165
|
+
calcMaxOffset = @threshold * timeSinceLastDelta
|
166
|
+
drift = lastStoredDate + calcMaxOffset - timestamp.to_i
|
167
|
+
|
168
|
+
return (drift <= (@threshold / 2))
|
118
169
|
end
|
119
170
|
|
120
171
|
end # class LogStash::Outputs::Chronix
|
@@ -0,0 +1,15 @@
|
|
1
|
+
syntax = "proto3";
|
2
|
+
option optimize_for = SPEED;
|
3
|
+
|
4
|
+
//Our point
|
5
|
+
message StracePoint {
|
6
|
+
//The date as int64 (java long)
|
7
|
+
int64 t = 1;
|
8
|
+
string v = 2;
|
9
|
+
}
|
10
|
+
|
11
|
+
//The data of a time series is a list of points
|
12
|
+
message StracePoints {
|
13
|
+
//The list of points
|
14
|
+
repeated StracePoint p = 1;
|
15
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# NOT GENERATED
|
2
|
+
|
3
|
+
require 'protobuf/message'
|
4
|
+
|
5
|
+
module Chronix
|
6
|
+
class StracePoint < ::Protobuf::Message
|
7
|
+
optional :int64, :t, 1
|
8
|
+
required :string, :v, 2
|
9
|
+
end
|
10
|
+
|
11
|
+
class StracePoints < ::Protobuf::Message
|
12
|
+
repeated ::Chronix::StracePoint, :p, 1
|
13
|
+
end
|
14
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-output-chronix'
|
3
|
-
s.version = "0.1.
|
3
|
+
s.version = "0.1.1"
|
4
4
|
s.licenses = ["Apache License (2.0)"]
|
5
5
|
s.summary = "This output stores your logs in chronix"
|
6
6
|
s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
|
@@ -23,5 +23,5 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_runtime_dependency "stud"
|
24
24
|
s.add_runtime_dependency "rsolr"
|
25
25
|
s.add_runtime_dependency "protobuf"
|
26
|
-
s.add_development_dependency "logstash-devutils"
|
26
|
+
s.add_development_dependency "logstash-devutils", ">= 0.0.19", "< 0.0.20"
|
27
27
|
end
|
@@ -36,11 +36,13 @@ describe LogStash::Outputs::Chronix do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
context "test basic functions zip and encode, createPoint, createDocument" do
|
39
|
-
|
39
|
+
# no flushing of the buffer needed, that's why we use 3 as flush_size here
|
40
|
+
subject { LogStash::Outputs::Chronix.new( "threshold" => 10, "flush_size" => 3, "idle_flush_time" => 10 ) }
|
40
41
|
|
41
42
|
let(:ttimestamp) { "1459353272" }
|
42
43
|
let(:tmetric) { "test1" }
|
43
44
|
let(:tvalue) { "10.5" }
|
45
|
+
let(:svalue) { "string" }
|
44
46
|
let(:events) { [LogStash::Event.new("metric" => tmetric, "value" => tvalue)] }
|
45
47
|
|
46
48
|
it "should return a Chronix::Point" do
|
@@ -48,6 +50,12 @@ describe LogStash::Outputs::Chronix do
|
|
48
50
|
expectedResult = Chronix::Point.new( :t => ttimestamp, :v => tvalue )
|
49
51
|
expect(point).to eq(expectedResult)
|
50
52
|
end
|
53
|
+
|
54
|
+
it "should return a Chronix::StracePoint" do
|
55
|
+
point = subject.createChronixPoint(0, svalue, "strace")
|
56
|
+
expectedResult = Chronix::StracePoint.new( :t => 0, :v => svalue )
|
57
|
+
expect(point).to eq(expectedResult)
|
58
|
+
end
|
51
59
|
|
52
60
|
it "should return a zipped and base64 encoded string containing the data" do
|
53
61
|
points = Chronix::Points.new
|
@@ -56,12 +64,20 @@ describe LogStash::Outputs::Chronix do
|
|
56
64
|
expect(subject.zipAndEncode(points)).to eq(expectedResult)
|
57
65
|
end
|
58
66
|
|
67
|
+
it "should create a correct point hash" do
|
68
|
+
points = Chronix::Points.new
|
69
|
+
points.p << subject.createChronixPoint(0, tvalue)
|
70
|
+
phash = {tmetric => {"startTime" => ttimestamp.to_i, "lastTimestamp" => ttimestamp.to_i, "points" => points, "prevDelta" => 0, "timeSinceLastDelta" => 1, "lastStoredDate" => ttimestamp.to_i}}
|
71
|
+
events = [LogStash::Event.new("metric" => tmetric, "value" => tvalue, "@timestamp" => "2016-03-30T15:54:32.172Z")]
|
72
|
+
expect(subject.createPointHash(events)).to eq(phash)
|
73
|
+
end
|
74
|
+
|
59
75
|
it "should create a valid document" do
|
60
76
|
points = Chronix::Points.new
|
61
77
|
points.p << subject.createChronixPoint(ttimestamp, tvalue)
|
62
|
-
phash = {"startTime" => ttimestamp, "
|
78
|
+
phash = {"startTime" => ttimestamp, "lastTimestamp" => ttimestamp, "points" => points}
|
63
79
|
document = subject.createSolrDocument(tmetric, phash)
|
64
|
-
sampleDoc = { :metric => tmetric, :start => phash["startTime"], :end => phash["
|
80
|
+
sampleDoc = { :metric => tmetric, :start => phash["startTime"], :end => phash["lastTimestamp"], :data => "H4sIAAAAAAAA/+Pi59jx9v12VkEGMFB1AACWVOXHEQAAAA==", :threshold => 10 }
|
65
81
|
expect(document).to eq(sampleDoc)
|
66
82
|
end
|
67
83
|
|
@@ -71,20 +87,85 @@ describe LogStash::Outputs::Chronix do
|
|
71
87
|
end
|
72
88
|
end
|
73
89
|
|
90
|
+
context "test delta calculation" do
|
91
|
+
# no flushing of the buffer needed, that's why we use 3 as flush_size here
|
92
|
+
subject { LogStash::Outputs::Chronix.new( "threshold" => 10, "flush_size" => 3, "idle_flush_time" => 10 ) }
|
93
|
+
|
94
|
+
let(:tmetric) { "test1" }
|
95
|
+
let(:tvalue) { "10.5" }
|
96
|
+
let(:events) { [LogStash::Event.new("metric" => tmetric, "value" => tvalue)] }
|
97
|
+
|
98
|
+
p_ev = []
|
99
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "1.0", "@timestamp" => "2016-05-10T15:00:10.000Z")
|
100
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "2.0", "@timestamp" => "2016-05-10T15:00:20.000Z")
|
101
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "3.0", "@timestamp" => "2016-05-10T15:00:30.000Z")
|
102
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "4.0", "@timestamp" => "2016-05-10T15:00:39.000Z")
|
103
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "5.0", "@timestamp" => "2016-05-10T15:00:48.000Z")
|
104
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "6.0", "@timestamp" => "2016-05-10T15:00:57.000Z")
|
105
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "7.0", "@timestamp" => "2016-05-10T15:01:06.000Z")
|
106
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "8.0", "@timestamp" => "2016-05-10T15:01:15.000Z")
|
107
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "9.0", "@timestamp" => "2016-05-10T15:01:24.000Z")
|
108
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "10.0", "@timestamp" => "2016-05-10T15:01:33.000Z")
|
109
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "11.0", "@timestamp" => "2016-05-10T15:01:42.000Z")
|
110
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "12.0", "@timestamp" => "2016-05-10T15:01:51.000Z")
|
111
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "13.0", "@timestamp" => "2016-05-10T15:02:00.000Z")
|
112
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "14.0", "@timestamp" => "2016-05-10T15:02:09.000Z")
|
113
|
+
p_ev << LogStash::Event.new("metric" => "test1", "value" => "15.0", "@timestamp" => "2016-05-10T15:02:18.000Z")
|
114
|
+
|
115
|
+
it "delta should not be almost equals" do
|
116
|
+
expect(subject.almostEquals(21, 10)).to be false
|
117
|
+
end
|
118
|
+
|
119
|
+
it "delta should be almost equals" do
|
120
|
+
expect(subject.almostEquals(-18, -10)).to be true
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should have no drift" do
|
124
|
+
expect(subject.noDrift(10, 5, 1)).to be true
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should have a drift" do
|
128
|
+
expect(subject.noDrift(10, 5, 2)).to be false
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should return a point hash with the correct timestamps aka delta" do
|
132
|
+
pointHash = subject.createPointHash(p_ev)
|
133
|
+
|
134
|
+
points = Chronix::Points.new
|
135
|
+
points.p << subject.createChronixPoint(0, "1.0")
|
136
|
+
points.p << subject.createChronixPoint(0, "2.0")
|
137
|
+
points.p << subject.createChronixPoint(0, "3.0")
|
138
|
+
points.p << subject.createChronixPoint(0, "4.0")
|
139
|
+
points.p << subject.createChronixPoint(0, "5.0")
|
140
|
+
points.p << subject.createChronixPoint(0, "6.0")
|
141
|
+
points.p << subject.createChronixPoint(0, "7.0")
|
142
|
+
points.p << subject.createChronixPoint(0, "8.0")
|
143
|
+
points.p << subject.createChronixPoint(9, "9.0")
|
144
|
+
points.p << subject.createChronixPoint(0, "10.0")
|
145
|
+
points.p << subject.createChronixPoint(0, "11.0")
|
146
|
+
points.p << subject.createChronixPoint(0, "12.0")
|
147
|
+
points.p << subject.createChronixPoint(0, "13.0")
|
148
|
+
points.p << subject.createChronixPoint(0, "14.0")
|
149
|
+
points.p << subject.createChronixPoint(9, "15.0")
|
150
|
+
|
151
|
+
expect(pointHash["test1"]["points"]).to eq(points)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
74
155
|
# these events are needed for the next two test-contexts
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
156
|
+
e21 = LogStash::Event.new("metric" => "test1", "value" => "1.5")
|
157
|
+
e22 = LogStash::Event.new("metric" => "test2", "value" => "2.5")
|
158
|
+
e23 = LogStash::Event.new("metric" => "test1", "value" => "3.5")
|
159
|
+
e24 = LogStash::Event.new("metric" => "test1", "value" => "4.5")
|
160
|
+
e25 = LogStash::Event.new("metric" => "test2", "value" => "5.5")
|
161
|
+
e26 = LogStash::Event.new("metric" => "test3", "value" => "6.5")
|
162
|
+
e27 = LogStash::Event.new("metric" => "test1", "value" => "7.5")
|
163
|
+
e28 = LogStash::Event.new("metric" => "test2", "value" => "8.5")
|
83
164
|
|
84
165
|
context "adding and removing tests with different metrics" do
|
85
166
|
subject { LogStash::Outputs::Chronix.new( "flush_size" => 1, "idle_flush_time" => 10 ) }
|
86
167
|
|
87
|
-
let(:events) { [
|
168
|
+
let(:events) { [e21, e22, e23, e24, e25, e26, e27, e28] }
|
88
169
|
|
89
170
|
it "should have 3 different metrics" do
|
90
171
|
expect(solr.size).to eq(3)
|
@@ -116,9 +197,10 @@ describe LogStash::Outputs::Chronix do
|
|
116
197
|
# test2[0]: 1 elem, test2[1]: 2 elem
|
117
198
|
# test3[0]: 1 elem
|
118
199
|
context "adding and removing tests with different metrics and buffer-settings" do
|
200
|
+
|
119
201
|
subject { LogStash::Outputs::Chronix.new( "flush_size" => 4, "idle_flush_time" => 10 ) }
|
120
202
|
|
121
|
-
let(:events) { [
|
203
|
+
let(:events) { [e21, e22, e23, e24, e25, e26, e27, e28] }
|
122
204
|
|
123
205
|
it "should have 3 different metrics" do
|
124
206
|
expect(solr.size).to eq(3)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-chronix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Jalowski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logstash-core
|
@@ -92,14 +92,20 @@ dependencies:
|
|
92
92
|
requirements:
|
93
93
|
- - '>='
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
95
|
+
version: 0.0.19
|
96
|
+
- - <
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 0.0.20
|
96
99
|
type: :development
|
97
100
|
prerelease: false
|
98
101
|
version_requirements: !ruby/object:Gem::Requirement
|
99
102
|
requirements:
|
100
103
|
- - '>='
|
101
104
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
105
|
+
version: 0.0.19
|
106
|
+
- - <
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: 0.0.20
|
103
109
|
description: This gem is a logstash plugin required to be installed on top of the
|
104
110
|
Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not
|
105
111
|
a stand-alone program
|
@@ -111,6 +117,8 @@ files:
|
|
111
117
|
- lib/logstash/outputs/chronix.rb
|
112
118
|
- lib/logstash/outputs/proto/Point.proto
|
113
119
|
- lib/logstash/outputs/proto/Point.rb
|
120
|
+
- lib/logstash/outputs/proto/StracePoint.proto
|
121
|
+
- lib/logstash/outputs/proto/StracePoint.rb
|
114
122
|
- spec/chronix_helper.rb
|
115
123
|
- spec/outputs/chronix_spec.rb
|
116
124
|
- spec/spec_helper.rb
|