fluent-plugin-rewrite-tag-filter 1.0.0 → 1.1.0
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.
data/README.rdoc
CHANGED
@@ -22,7 +22,7 @@ user-agent, request-uri, regex-backreference and so on with regular expression.
|
|
22
22
|
|
23
23
|
rewruterule<num:1-200> <attribute> <regex_pattern> <new_tag>
|
24
24
|
|
25
|
-
# Capitalize every matched regex backreference. (ex: $1, $2)
|
25
|
+
# Optional: Capitalize every matched regex backreference. (ex: $1, $2)
|
26
26
|
capitalize_regex_backreference <yes/no(default)>
|
27
27
|
|
28
28
|
=== Usage
|
@@ -87,6 +87,15 @@ On starting td-agent, Logging supported like below.
|
|
87
87
|
2012-09-16 18:10:51 +0900: adding rewrite_tag_filter rule: [4, "domain", /^(mail)\.(example)\.com$/, "site.$2$1"]
|
88
88
|
2012-09-16 18:10:51 +0900: adding rewrite_tag_filter rule: [5, "domain", /.+/, "site.unmatched"]
|
89
89
|
|
90
|
+
=== Tag placeholder
|
91
|
+
|
92
|
+
Supporing these placeholder for rewrite tag.
|
93
|
+
|
94
|
+
* ${hostname}
|
95
|
+
* __HOSTNAME__
|
96
|
+
* ${tag}
|
97
|
+
* __TAG__
|
98
|
+
|
90
99
|
== Example
|
91
100
|
|
92
101
|
- Example1: how to analyze response_time, response_code and user_agent for each virtual domain websites.
|
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "fluent-plugin-rewrite-tag-filter"
|
6
|
-
s.version = "1.
|
6
|
+
s.version = "1.1.0"
|
7
7
|
s.authors = ["Kentaro Yoshida"]
|
8
8
|
s.email = ["y.ken.studio@gmail.com"]
|
9
9
|
s.homepage = "https://github.com/y-ken/fluent-plugin-rewrite-tag-filter"
|
@@ -14,6 +14,7 @@ class Fluent::RewriteTagFilterOutput < Fluent::Output
|
|
14
14
|
|
15
15
|
@rewriterules = []
|
16
16
|
rewriterule_names = []
|
17
|
+
@hostname = `hostname`.chomp
|
17
18
|
|
18
19
|
invalids = conf.keys.select{|k| k =~ /^rewriterule(\d+)$/}.select{|arg| arg =~ /^rewriterule(\d+)/ and not (1..PATTERN_MAX_NUM).include?($1.to_i)}
|
19
20
|
if invalids.size > 0
|
@@ -39,18 +40,17 @@ class Fluent::RewriteTagFilterOutput < Fluent::Output
|
|
39
40
|
end
|
40
41
|
|
41
42
|
def emit(tag, es, chain)
|
43
|
+
placeholder = get_placeholder(tag)
|
42
44
|
es.each do |time,record|
|
43
45
|
rewrite = false
|
44
46
|
@rewriterules.each do |index, rewritekey, regexp, rewritetag|
|
45
47
|
rewritevalue = record[rewritekey]
|
46
48
|
next if rewritevalue.nil?
|
47
49
|
next unless (regexp && regexp.match(rewritevalue))
|
50
|
+
backreference_table = map_regex_table($~.captures)
|
48
51
|
rewrite = true
|
49
|
-
|
50
|
-
|
51
|
-
else
|
52
|
-
rewritetag
|
53
|
-
end
|
52
|
+
rewritetag.gsub!(/(\${[a-z]+}|__[A-Z]+__)/, placeholder)
|
53
|
+
tag = rewritetag.gsub(/\$\d+/, backreference_table)
|
54
54
|
break
|
55
55
|
end
|
56
56
|
Fluent::Engine.emit(tag, time, record) if (rewrite)
|
@@ -76,5 +76,14 @@ class Fluent::RewriteTagFilterOutput < Fluent::Output
|
|
76
76
|
end
|
77
77
|
return hash_table
|
78
78
|
end
|
79
|
+
|
80
|
+
def get_placeholder(tag)
|
81
|
+
return {
|
82
|
+
'__HOSTNAME__' => @hostname,
|
83
|
+
'${hostname}' => @hostname,
|
84
|
+
'__TAG__' => tag,
|
85
|
+
'${tag}' => tag,
|
86
|
+
}
|
87
|
+
end
|
79
88
|
end
|
80
89
|
|
@@ -10,6 +10,7 @@ class RewriteTagFilterOutputTest < Test::Unit::TestCase
|
|
10
10
|
rewriterule2 domain ^news\.google\.com$ site.GoogleNews
|
11
11
|
rewriterule3 agent .* Mac OS X .* agent.MacOSX
|
12
12
|
rewriterule4 agent (Googlebot|CustomBot)-([a-zA-Z]+) agent.$1-$2
|
13
|
+
rewriterule5 domain ^(tagtest)\.google\.com$ site.${tag}.$1
|
13
14
|
]
|
14
15
|
|
15
16
|
# aggresive test
|
@@ -48,9 +49,10 @@ class RewriteTagFilterOutputTest < Test::Unit::TestCase
|
|
48
49
|
d1.emit({'domain' => 'news.google.com', 'path' => '/', 'agent' => 'Googlebot-Mobile', 'response_time' => 900000})
|
49
50
|
d1.emit({'domain' => 'map.google.com', 'path' => '/', 'agent' => 'Macintosh; Intel Mac OS X 10_7_4', 'response_time' => 900000})
|
50
51
|
d1.emit({'domain' => 'labs.google.com', 'path' => '/', 'agent' => 'Mozilla/5.0 Googlebot-FooBar/2.1', 'response_time' => 900000})
|
52
|
+
d1.emit({'domain' => 'tagtest.google.com', 'path' => '/', 'agent' => 'Googlebot', 'response_time' => 900000})
|
51
53
|
end
|
52
54
|
emits = d1.emits
|
53
|
-
assert_equal
|
55
|
+
assert_equal 5, emits.length
|
54
56
|
p emits[0]
|
55
57
|
assert_equal 'site.Google', emits[0][0] # tag
|
56
58
|
p emits[1]
|
@@ -60,6 +62,8 @@ class RewriteTagFilterOutputTest < Test::Unit::TestCase
|
|
60
62
|
assert_equal 'agent.MacOSX', emits[2][0] #tag
|
61
63
|
p emits[3]
|
62
64
|
assert_equal 'agent.Googlebot-FooBar', emits[3][0] #tag
|
65
|
+
p emits[4]
|
66
|
+
assert_equal 'site.input.access.tagtest', emits[4][0] #tag
|
63
67
|
end
|
64
68
|
|
65
69
|
def test_emit2
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-rewrite-tag-filter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluentd
|
16
|
-
requirement: &
|
16
|
+
requirement: &11336200 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *11336200
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: fluentd
|
27
|
-
requirement: &
|
27
|
+
requirement: &11335760 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *11335760
|
36
36
|
description:
|
37
37
|
email:
|
38
38
|
- y.ken.studio@gmail.com
|