forked from payscale/logstash-codec-fieldselect
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
273 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
source 'https://rubygems.org' | ||
gemspec |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
PATH | ||
remote: . | ||
specs: | ||
logstash-codec-fieldselect (0.0.1) | ||
logstash-core (>= 2.0.0.beta2, < 3.0.0) | ||
logstash-mixin-aws | ||
stud (~> 0.0.22) | ||
|
||
GEM | ||
remote: https://rubygems.org/ | ||
specs: | ||
aws-sdk (2.1.36) | ||
aws-sdk-resources (= 2.1.36) | ||
aws-sdk-core (2.1.36) | ||
jmespath (~> 1.0) | ||
aws-sdk-resources (2.1.36) | ||
aws-sdk-core (= 2.1.36) | ||
aws-sdk-v1 (1.66.0) | ||
json (~> 1.4) | ||
nokogiri (>= 1.4.4) | ||
cabin (0.7.2) | ||
clamp (0.6.5) | ||
coderay (1.1.0) | ||
concurrent-ruby (0.9.2-java) | ||
diff-lcs (1.2.5) | ||
ffi (1.9.10-java) | ||
filesize (0.0.4) | ||
gem_publisher (1.5.0) | ||
gems (0.8.3) | ||
i18n (0.6.9) | ||
insist (1.0.0) | ||
jmespath (1.1.3) | ||
jrjackson (0.3.7) | ||
jruby-openssl (0.9.12-java) | ||
json (1.8.3-java) | ||
kramdown (1.9.0) | ||
logstash-codec-line (2.0.2) | ||
logstash-core (>= 2.0.0.beta2, < 3.0.0) | ||
logstash-codec-plain (2.0.2) | ||
logstash-core (>= 2.0.0.beta2, < 3.0.0) | ||
logstash-core (2.1.0.snapshot2-java) | ||
cabin (~> 0.7.0) | ||
clamp (~> 0.6.5) | ||
concurrent-ruby (= 0.9.2) | ||
filesize (= 0.0.4) | ||
gems (~> 0.8.3) | ||
i18n (= 0.6.9) | ||
jrjackson (~> 0.3.7) | ||
jruby-openssl (>= 0.9.11) | ||
minitar (~> 0.5.4) | ||
pry (~> 0.10.1) | ||
rubyzip (~> 1.1.7) | ||
stud (~> 0.0.19) | ||
thread_safe (~> 0.3.5) | ||
treetop (< 1.5.0) | ||
logstash-devutils (0.0.18-java) | ||
gem_publisher | ||
insist (= 1.0.0) | ||
kramdown | ||
minitar | ||
rake | ||
rspec (~> 3.1.0) | ||
rspec-wait | ||
stud (>= 0.0.20) | ||
logstash-input-generator (2.0.2) | ||
logstash-codec-plain | ||
logstash-core (>= 2.0.0.beta2, < 3.0.0) | ||
logstash-mixin-aws (2.0.2) | ||
aws-sdk (~> 2.1.0) | ||
aws-sdk-v1 (>= 1.61.0) | ||
logstash-codec-plain | ||
logstash-core (>= 2.0.0.beta2, < 3.0.0) | ||
method_source (0.8.2) | ||
minitar (0.5.4) | ||
nokogiri (1.6.6.3-java) | ||
polyglot (0.3.5) | ||
pry (0.10.3-java) | ||
coderay (~> 1.1.0) | ||
method_source (~> 0.8.1) | ||
slop (~> 3.4) | ||
spoon (~> 0.0) | ||
rake (10.4.2) | ||
rspec (3.1.0) | ||
rspec-core (~> 3.1.0) | ||
rspec-expectations (~> 3.1.0) | ||
rspec-mocks (~> 3.1.0) | ||
rspec-core (3.1.7) | ||
rspec-support (~> 3.1.0) | ||
rspec-expectations (3.1.2) | ||
diff-lcs (>= 1.2.0, < 2.0) | ||
rspec-support (~> 3.1.0) | ||
rspec-mocks (3.1.3) | ||
rspec-support (~> 3.1.0) | ||
rspec-support (3.1.2) | ||
rspec-wait (0.0.8) | ||
rspec (>= 2.11, < 3.5) | ||
rubyzip (1.1.7) | ||
slop (3.6.0) | ||
spoon (0.0.4) | ||
ffi | ||
stud (0.0.22) | ||
thread_safe (0.3.5-java) | ||
treetop (1.4.15) | ||
polyglot | ||
polyglot (>= 0.3.1) | ||
|
||
PLATFORMS | ||
java | ||
|
||
DEPENDENCIES | ||
logstash-codec-fieldselect! | ||
logstash-codec-line | ||
logstash-devutils | ||
logstash-input-generator | ||
|
||
BUNDLED WITH | ||
1.10.6 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
@files=[] | ||
|
||
task :default do | ||
system("rake -T") | ||
end | ||
|
||
require "logstash/devutils/rake" |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# encoding: utf-8 | ||
require "logstash/codecs/base" | ||
require "logstash/codecs/line" | ||
|
||
class LogStash::Codecs::Fieldselect < LogStash::Codecs::Base | ||
|
||
# This codec will select only the fields listed or default | ||
# to only selecting message | ||
# | ||
# input { | ||
# stdin { codec => fieldselect { fields => [] } | ||
# } | ||
# | ||
# or | ||
# | ||
# output { | ||
# stdout { codec => fieldselect { fields => [] } | ||
# } | ||
config_name "fieldselect" | ||
|
||
# Select fields to output, concated with a comma | ||
config :fields, :validate => :array, :default => ['message'] | ||
|
||
public | ||
def register | ||
@lines = LogStash::Codecs::Line.new | ||
@lines.charset = "UTF-8" | ||
end | ||
|
||
public | ||
def decode(data) | ||
@lines.decode(data) do |line| | ||
selected = field_selector(line) | ||
yield LogStash::Event.new(selected) | ||
end | ||
end # def decode | ||
|
||
public | ||
def encode(event) | ||
encoded = field_concater(event) | ||
@on_event.call(event, encoded) | ||
end # def encode | ||
|
||
private | ||
def field_selector(data) | ||
selected = {} | ||
@fields.each do |field| | ||
selected[field] = data[field] | ||
end | ||
return selected | ||
end | ||
|
||
private | ||
def field_concater(data) | ||
concated = "" | ||
@fields.each do |field| | ||
concated += data[field] + ", " | ||
end | ||
concated.chomp!(", ") | ||
return concated + "\n" | ||
end | ||
end # class LogStash::Codecs::Fieldselect |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
Gem::Specification.new do |s| | ||
|
||
s.name = 'logstash-codec-fieldselect' | ||
s.version = '0.0.1' | ||
s.licenses = ['Apache License (2.0)'] | ||
s.summary = "This codec was created to select certain fields for output" | ||
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" | ||
s.authors = ["Elastic"] | ||
s.email = '[email protected]' | ||
s.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html" | ||
s.require_paths = ["lib"] | ||
|
||
# Files | ||
s.files = Dir['lib/**/*','spec/**/*','vendor/**/*','*.gemspec','*.md','CONTRIBUTORS','Gemfile','LICENSE','NOTICE.TXT'] | ||
|
||
# Tests | ||
s.test_files = s.files.grep(%r{^(test|spec|features)/}) | ||
|
||
# Special flag to let us know this is actually a logstash plugin | ||
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "output" } | ||
|
||
# Gem dependencies | ||
s.add_runtime_dependency "logstash-core", ">= 2.0.0.beta2", "< 3.0.0" | ||
s.add_runtime_dependency 'logstash-mixin-aws' | ||
s.add_runtime_dependency 'stud', '~> 0.0.22' | ||
s.add_development_dependency 'logstash-devutils' | ||
s.add_development_dependency 'logstash-input-generator' | ||
s.add_development_dependency 'logstash-codec-line' | ||
end | ||
|
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
# encoding: utf-8 | ||
|
||
require "logstash/devutils/rspec/spec_helper" | ||
require "logstash/codecs/fieldselect" | ||
require "logstash/event" | ||
|
||
describe LogStash::Codecs::Fieldselect do | ||
context "default settings" do | ||
subject do | ||
next LogStash::Codecs::Fieldselect.new | ||
end | ||
|
||
context "#encode" do | ||
let (:event) {LogStash::Event.new({"message" => "hello world", "host" => "test", "leggo" => "my eggo"})} | ||
|
||
it "should return only the default select field, message" do | ||
expect(subject).to receive(:on_event).once.and_call_original | ||
subject.on_event do |e, d| | ||
insist {d} == event['message'] + "\n" | ||
end | ||
subject.encode(event) | ||
end | ||
end | ||
|
||
context "#decode" do | ||
it "should return only the default select field, message" do | ||
decoded = false | ||
subject.decode("hello world\n") do |e| | ||
decoded = true | ||
insist { e.is_a?(LogStash::Event) } | ||
insist { e["message"] } == "hello world" | ||
insist { e["host"] } == nil | ||
end | ||
insist { decoded } == true | ||
end | ||
|
||
end | ||
end | ||
|
||
context "select specific fields" do | ||
subject do | ||
next LogStash::Codecs::Fieldselect.new({'fields' => ['message', 'leggo']}) | ||
end | ||
|
||
context "#encode" do | ||
it "should return both selected fields, message and leggo" do | ||
expect(subject).to receive(:on_event).once.and_call_original | ||
subject.on_event do |e, d| | ||
insist {d} == event['message'] + ", " + event['leggo'] + "\n" | ||
end | ||
end | ||
end | ||
end | ||
end | ||
|