fluent-plugin-mule 1.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fluent/plugin/filter_mule.rb +38 -51
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 887fb6cd62de2ad184f1c5b783a4b8b329234a49
|
4
|
+
data.tar.gz: 601b0839d9ab6355986af97bee0ca2093f2ddd68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 672a1ef989dc0fca20fd54db9fc510ed25ed777ad9ddc19db0b8967ff1df2d2d4bd7b550789d07ece336a462a976b5ae9c5ace98c82c0e42b8b9e433e58e1e74
|
7
|
+
data.tar.gz: 107e36c6b65f0cdc8b5e0dafb8d119bb5c6576cc595884e7d2d452358f7ad34889b2dbd0acee87de0e064f9cfc8cfd110b581ea81119f880708b33824cc04520
|
@@ -6,11 +6,13 @@ module Fluent
|
|
6
6
|
Fluent::Plugin.register_filter('mule', self)
|
7
7
|
|
8
8
|
# config_param works like other plugins
|
9
|
+
config_param :key_name, :string, :default => 'message'
|
9
10
|
config_param :kv_delimiter, :string, :default => ' '
|
10
11
|
config_param :kv_char, :string, :default => '='
|
11
12
|
config_param :time_parse, :bool, :default => false
|
12
13
|
# 2016-12-09 14:50:51,330
|
13
14
|
config_param :time_format, :string, :default => '%Y-%m-%d %H:%M:%S,%L'
|
15
|
+
config_param :prefix, :string, :default => 'mule_'
|
14
16
|
|
15
17
|
def configure(conf)
|
16
18
|
super
|
@@ -36,71 +38,56 @@ module Fluent
|
|
36
38
|
# It is internal to this class and called by filter_stream unless
|
37
39
|
# the user overrides filter_stream.
|
38
40
|
#
|
39
|
-
# Since our example is a pass-thru filter, it does nothing and just
|
40
|
-
# returns the record as-is.
|
41
41
|
# If returns nil, that records are ignored.
|
42
|
-
text = record[
|
43
|
-
puts "TEXT: " + text
|
42
|
+
text = record[@key_name]
|
44
43
|
|
45
|
-
|
44
|
+
messageRegex = /
|
45
|
+
^
|
46
|
+
(?<log_level>[\w]+)\s
|
47
|
+
(?<log_time>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\s
|
48
|
+
\[(?<thread>.+)\]\s
|
49
|
+
(?<position>[^:]+):\s
|
50
|
+
(?<kv_pairs>.*?)\s?
|
51
|
+
(?<payload>payload=.*)?
|
52
|
+
$
|
53
|
+
/x
|
54
|
+
|
55
|
+
match = text.match(messageRegex)
|
46
56
|
|
57
|
+
# If message doesn't match regex we return the record as is
|
47
58
|
if match.nil?
|
48
|
-
puts 'match is nil'
|
49
59
|
return record
|
50
60
|
end
|
51
61
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
56
|
-
puts '2'
|
57
|
-
if match.names.include? 'log_time'
|
58
|
-
record['mule_log_time'] = match['log_time']
|
59
|
-
end
|
60
|
-
puts '3'
|
61
|
-
if match.names.include? 'thread'
|
62
|
-
record['mule_thread'] = match['thread']
|
63
|
-
end
|
64
|
-
puts '4'
|
65
|
-
if match.names.include? 'position'
|
66
|
-
record['mule_position'] = match['position']
|
67
|
-
end
|
68
|
-
puts '5'
|
69
|
-
if match.names.include? 'kv_pairs'
|
70
|
-
kv_match = match['kv_pairs'].match(/(\w+)=([\w|-]+)\s/)
|
71
|
-
if kv_match == nil
|
72
|
-
puts 'Couldn\'t find kv pairs'
|
73
|
-
return record
|
74
|
-
end
|
75
|
-
|
76
|
-
match['kv_pairs'].split(@kv_delimiter).each { |kv|
|
77
|
-
k, v = kv.split(@kv_char, 2)
|
78
|
-
record['mule_' + k] = v
|
79
|
-
}
|
80
|
-
end
|
81
|
-
puts '6'
|
82
|
-
|
83
|
-
if (match.names.include? 'payload') && !match['payload'].nil?
|
84
|
-
puts '6.1'
|
85
|
-
k, v = match['payload'].split('=', 2)
|
86
|
-
puts '6.2'
|
87
|
-
record['mule_' + k] = v
|
88
|
-
end
|
62
|
+
['log_level', 'log_time', 'thread', 'position', 'kv_pairs', 'payload'].each { |group|
|
63
|
+
updateRecord(record, match, group, group == 'kv_pairs')
|
64
|
+
}
|
89
65
|
|
90
|
-
puts '7'
|
91
|
-
puts 'record[log_time]: ' + record['mule_log_time']
|
92
|
-
puts 'record[log_time].nil?: ' + record['mule_log_time'].nil?.to_s
|
93
|
-
puts 'timeParse?: ' + @time_parse.to_s
|
94
66
|
if @time_parse && !record['log_time'].nil?
|
95
|
-
puts '7.1'
|
96
67
|
new_time = @time_parser.parse(record['mule_log_time'])
|
97
68
|
record.delete('time')
|
98
69
|
record['time'] = current_time
|
99
70
|
end
|
100
|
-
|
101
|
-
record.delete('message')
|
102
|
-
puts '9'
|
71
|
+
record.delete(@key_name)
|
103
72
|
record
|
104
73
|
end
|
74
|
+
|
75
|
+
def updateRecord(record, match, group, kv_flag)
|
76
|
+
if (match.names.include? group) && !match[group].nil?
|
77
|
+
if kv_flag
|
78
|
+
kv_match = match[group].match(/(\w+)=([\w|-]+)\s/)
|
79
|
+
if kv_match.nil?
|
80
|
+
return
|
81
|
+
end
|
82
|
+
|
83
|
+
match[group].split(@kv_delimiter).each { |kv|
|
84
|
+
k, v = kv.split(@kv_char, 2)
|
85
|
+
record[@prefix + k] = v
|
86
|
+
}
|
87
|
+
else
|
88
|
+
record[@prefix + group] = match[group]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
105
92
|
end
|
106
93
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-mule
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Martinez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Extract entries from Mule log4j key-value pairs
|
14
14
|
email:
|
@@ -41,6 +41,6 @@ rubyforge_project:
|
|
41
41
|
rubygems_version: 2.0.14.1
|
42
42
|
signing_key:
|
43
43
|
specification_version: 4
|
44
|
-
summary: Fluentd filter plugin.
|
45
|
-
key value pairs
|
44
|
+
summary: Fluentd filter plugin. Extracts fields from Mule/Log4j formatted entries
|
45
|
+
containing key value pairs
|
46
46
|
test_files: []
|