fluent-plugin-field-multiregex 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 +7 -0
- data/.gitignore +34 -0
- data/README.md +22 -0
- data/Rakefile +6 -0
- data/VERSION +1 -0
- data/fluent-plugin-field-multiregex.gemspec +23 -0
- data/lib/fluent/plugin/out_field_multiregex.rb +105 -0
- metadata +80 -0
checksums.yaml
ADDED
@@ -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
|
data/.gitignore
ADDED
@@ -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
|
data/README.md
ADDED
@@ -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
|
+
|
data/Rakefile
ADDED
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: []
|