fluent-plugin-field-multiregex 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8b81740f35eb4f3777a9503bf60867c6bd5de174
4
+ data.tar.gz: 97c364e2b3bcf7240c2e1c22efedd9cdcd3aa197
5
+ SHA512:
6
+ metadata.gz: ea0d2a8bc8fb40d4c3ae8aefbe3e897573f1df03161476bbadfa5d8dd0b0df510c8f911d39c86ee1a3026d99628ca54a05e40df14a6ad52b38babd8e1307dd79
7
+ data.tar.gz: a45ca073fcf84157e9ad173374e1368bfe364450ffe09ed7ef0ffbbfcfa316a344786b8f6a402d51e419f1ab62b6e2e52b7e107d87488aa4b03615b7d18b0a3e
@@ -0,0 +1,34 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /lib/bundler/man/
26
+
27
+ # for a library or gem, you might want to ignore these files since the code is
28
+ # intended to run in multiple environments; otherwise, check them in:
29
+ # Gemfile.lock
30
+ # .ruby-version
31
+ # .ruby-gemset
32
+
33
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
34
+ .rvmrc
@@ -0,0 +1,22 @@
1
+ fluent-plugin-field-multiregex
2
+ ===========================
3
+
4
+ Fluent output plugin for reforming a record using multiple named capture regular expressions
5
+
6
+ ## Installation
7
+
8
+ Use RubyGems:
9
+
10
+ td-agent-gem install fluent-plugin-field-multiregex
11
+
12
+ ## Configuration
13
+
14
+ <match pattern>
15
+ type field_multiregex
16
+ parse_key message
17
+ remove_tag_prefix raw
18
+ add_tag_prefix parsed
19
+ multiline true
20
+ pattern1 ^Regular Expression with (?<capture>named captures)$
21
+ </match>
22
+
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require "bundler/gem_tasks"
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ task :default => [:build]
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.name = "fluent-plugin-field-multiregex"
6
+ gem.description = "Fluent output plugin for reforming a record using multiple named capture regular expressions"
7
+ gem.homepage = "https://github.com/CiscoZeus/fluent-plugin-field-multiregex"
8
+ gem.summary = gem.description
9
+ gem.version = File.read("VERSION").strip
10
+ gem.authors = ["Manoj Sharma"]
11
+ gem.email = ["vigyanik@gmail.com"]
12
+ gem.has_rdoc = false
13
+ gem.license = 'MIT'
14
+
15
+ gem.files = `git ls-files`.split("\n")
16
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ gem.require_paths = ['lib']
19
+
20
+ gem.add_dependency "fluentd"
21
+ gem.add_development_dependency "rake"
22
+ end
23
+
@@ -0,0 +1,105 @@
1
+ class String
2
+ def is_i?
3
+ /\A[-+]?\d+\z/ === self
4
+ end
5
+ def nan?
6
+ self !~ /^\s*[+-]?((\d+_?)*\d+(\.(\d+_?)*\d+)?|\.(\d+_?)*\d+)(\s*|([eE][+-]?(\d+_?)*\d+)\s*)$/
7
+ end
8
+ end
9
+
10
+ module Fluent
11
+ class OutputFieldMultiRegex < Fluent::Output
12
+ Fluent::Plugin.register_output('field_multiregex', self)
13
+
14
+ config_param :remove_tag_prefix, :string, :default => nil
15
+ config_param :add_tag_prefix, :string, :default => nil
16
+ config_param :parse_key, :string, :default => 'message'
17
+ config_param :multiline, :string, :default => false
18
+ config_param :pattern1, :string, :default => nil
19
+ config_param :pattern2, :string, :default => nil
20
+ config_param :pattern3, :string, :default => nil
21
+ config_param :pattern4, :string, :default => nil
22
+ config_param :pattern5, :string, :default => nil
23
+ config_param :pattern6, :string, :default => nil
24
+ config_param :pattern7, :string, :default => nil
25
+ config_param :pattern8, :string, :default => nil
26
+ config_param :pattern9, :string, :default => nil
27
+ config_param :pattern10, :string, :default => nil
28
+ config_param :pattern11, :string, :default => nil
29
+ config_param :pattern12, :string, :default => nil
30
+ config_param :pattern13, :string, :default => nil
31
+ config_param :pattern14, :string, :default => nil
32
+ config_param :pattern15, :string, :default => nil
33
+ config_param :pattern16, :string, :default => nil
34
+ config_param :pattern17, :string, :default => nil
35
+ config_param :pattern18, :string, :default => nil
36
+ config_param :pattern19, :string, :default => nil
37
+ config_param :pattern20, :string, :default => nil
38
+
39
+ def emit(tag, es, chain)
40
+ tag = update_tag(tag)
41
+ es.each { |time, record|
42
+ Engine.emit(tag, time, parse_field(record))
43
+ }
44
+ chain.next
45
+ end
46
+
47
+ def update_tag(tag)
48
+ if remove_tag_prefix
49
+ if remove_tag_prefix == tag
50
+ tag = ''
51
+ elsif tag.to_s.start_with?(remove_tag_prefix+'.')
52
+ tag = tag[remove_tag_prefix.length+1 .. -1]
53
+ end
54
+ end
55
+ if add_tag_prefix
56
+ tag = tag && tag.length > 0 ? "#{add_tag_prefix}.#{tag}" : add_tag_prefix
57
+ end
58
+ return tag
59
+ end
60
+
61
+ def parse_field(record)
62
+ source = record[parse_key].to_s
63
+
64
+ source_arr = []
65
+ if multiline
66
+ source_arr = source.split( /\r?\n/ )
67
+ else
68
+ source_arr << source
69
+ end
70
+
71
+ input_patterns = [pattern1,pattern2,pattern3,pattern4,
72
+ pattern5,pattern6,pattern7,pattern8,
73
+ pattern9,pattern10,pattern11,pattern12,
74
+ pattern13,pattern14,pattern15,pattern16,
75
+ pattern17,pattern18,pattern19,pattern20
76
+ ]
77
+ matched = false
78
+ input_patterns.each do |input_pattern|
79
+ if !(input_pattern.nil?)
80
+ source_arr.each do |source_elem|
81
+ matched = false
82
+ matched_hash = source_elem.match(input_pattern)
83
+ if !(matched_hash.nil?)
84
+ matched_hash.names.each do |key|
85
+ val = matched_hash[key]
86
+ if val.is_i?
87
+ record[key] = val.to_i
88
+ elsif val.nan?
89
+ record[key] = val
90
+ else
91
+ record[key] = val.to_f
92
+ end
93
+ end
94
+ matched = true
95
+ end
96
+ end
97
+ end
98
+ if matched
99
+ break
100
+ end
101
+ end
102
+ return record
103
+ end
104
+ end
105
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-field-multiregex
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Manoj Sharma
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fluentd
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Fluent output plugin for reforming a record using multiple named capture
42
+ regular expressions
43
+ email:
44
+ - vigyanik@gmail.com
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - ".gitignore"
50
+ - README.md
51
+ - Rakefile
52
+ - VERSION
53
+ - fluent-plugin-field-multiregex.gemspec
54
+ - lib/fluent/plugin/out_field_multiregex.rb
55
+ homepage: https://github.com/CiscoZeus/fluent-plugin-field-multiregex
56
+ licenses:
57
+ - MIT
58
+ metadata: {}
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 2.5.1
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: Fluent output plugin for reforming a record using multiple named capture
79
+ regular expressions
80
+ test_files: []