fluent-plugin-forest 0.1.0 → 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.
data/README.md CHANGED
@@ -9,6 +9,10 @@ In template configurations, you can write configuration lines for overall tags b
9
9
 
10
10
  This plugin helps you if you are writing very long configurations by copy&paste with a little little diff for many tags.
11
11
 
12
+ Other supported placeholders:
13
+ * \_\_HOSTNAME\_\_
14
+ * replaced with string specified by 'hostname' configuration value, or (default) result of 'hostname' command
15
+
12
16
  You SHOULD NOT use ForestOutput for tags increasing infinitly.
13
17
 
14
18
  ## Configuration
@@ -56,7 +60,7 @@ You can write configuration with ForestOutput like below:
56
60
  </template>
57
61
  </match>
58
62
 
59
- If you want to place logs /var/archive for `service.search.**` without compression, `case` directive is useful:
63
+ If you want to place logs /var/archive for `service.search.**` as filename with hostname, without compression, `case` directive is useful:
60
64
 
61
65
  <match service.*>
62
66
  type forest
@@ -67,7 +71,7 @@ If you want to place logs /var/archive for `service.search.**` without compressi
67
71
  </template>
68
72
  <case search.**>
69
73
  compress no
70
- path /var/archive/__TAG__.*.log
74
+ path /var/archive/__TAG__.__HOSTNAME__.*.log
71
75
  </case>
72
76
  <case *>
73
77
  compress yes
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = "fluent-plugin-forest"
4
- gem.version = "0.1.0"
4
+ gem.version = "0.1.1"
5
5
  gem.authors = ["TAGOMORI Satoshi"]
6
6
  gem.email = ["tagomoris@gmail.com"]
7
7
  gem.description = %q{create sub-plugin dynamically per tags, with template configuration and parameters}
@@ -13,6 +13,7 @@ Gem::Specification.new do |gem|
13
13
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
14
  gem.require_paths = ["lib"]
15
15
 
16
+ gem.add_development_dependency "rake"
16
17
  gem.add_development_dependency "fluentd"
17
18
  gem.add_runtime_dependency "fluentd"
18
19
  end
@@ -4,6 +4,7 @@ class Fluent::ForestOutput < Fluent::Output
4
4
  config_param :subtype, :string
5
5
  config_param :remove_prefix, :string, :default => nil
6
6
  config_param :add_prefix, :string, :default => nil
7
+ config_param :hostname, :string, :default => `hostname`.chomp
7
8
 
8
9
  def configure(conf)
9
10
  super
@@ -50,7 +51,7 @@ class Fluent::ForestOutput < Fluent::Output
50
51
  def parameter(tag, e)
51
52
  pairs = {}
52
53
  e.each do |k,v|
53
- pairs[k] = v.gsub('__TAG__', tag)
54
+ pairs[k] = v.gsub('__TAG__', tag).gsub('__HOSTNAME__', @hostname)
54
55
  end
55
56
  Fluent::Config::Element.new('instance', '', pairs, [])
56
57
  end
@@ -82,6 +82,100 @@ subtype hoge
82
82
  assert_equal 'd.zz', conf['alt_key']
83
83
  end
84
84
 
85
+ def test_spec_hostname
86
+ d = create_driver %[
87
+ subtype hoge
88
+ hostname somehost.local
89
+ <template>
90
+ keyx xxxxxx.__HOSTNAME__
91
+ keyy yyyyyy.__TAG__
92
+ alt_key a
93
+ </template>
94
+ <case xx>
95
+ keyz z1
96
+ alt_key b
97
+ </case>
98
+ <case yy.**>
99
+ keyz z2
100
+ alt_key c
101
+ </case>
102
+ <case *>
103
+ keyz z3
104
+ alt_key d.__TAG__.__HOSTNAME__
105
+ </case>
106
+ ]
107
+ conf = d.instance.spec('xx')
108
+ assert_equal 'xxxxxx.somehost.local', conf['keyx']
109
+ assert_equal 'yyyyyy.xx', conf['keyy']
110
+ assert_equal 'z1', conf['keyz']
111
+ assert_equal 'b', conf['alt_key']
112
+
113
+ conf = d.instance.spec('yy')
114
+ assert_equal 'xxxxxx.somehost.local', conf['keyx']
115
+ assert_equal 'yyyyyy.yy', conf['keyy']
116
+ assert_equal 'z2', conf['keyz']
117
+ assert_equal 'c', conf['alt_key']
118
+
119
+ conf = d.instance.spec('yy.3')
120
+ assert_equal 'xxxxxx.somehost.local', conf['keyx']
121
+ assert_equal 'yyyyyy.yy.3', conf['keyy']
122
+ assert_equal 'z2', conf['keyz']
123
+ assert_equal 'c', conf['alt_key']
124
+
125
+ conf = d.instance.spec('zz')
126
+ assert_equal 'xxxxxx.somehost.local', conf['keyx']
127
+ assert_equal 'yyyyyy.zz', conf['keyy']
128
+ assert_equal 'z3', conf['keyz']
129
+ assert_equal 'd.zz.somehost.local', conf['alt_key']
130
+ end
131
+
132
+ def test_spec_real_hostname
133
+ hostname = `hostname`.chomp
134
+ d = create_driver %[
135
+ subtype hoge
136
+ <template>
137
+ keyx xxxxxx.__HOSTNAME__
138
+ keyy yyyyyy.__TAG__
139
+ alt_key a
140
+ </template>
141
+ <case xx>
142
+ keyz z1
143
+ alt_key b
144
+ </case>
145
+ <case yy.**>
146
+ keyz z2
147
+ alt_key c
148
+ </case>
149
+ <case *>
150
+ keyz z3
151
+ alt_key d.__TAG__.__HOSTNAME__
152
+ </case>
153
+ ]
154
+ conf = d.instance.spec('xx')
155
+ assert_equal 'xxxxxx.' + hostname, conf['keyx']
156
+ assert_equal 'yyyyyy.xx', conf['keyy']
157
+ assert_equal 'z1', conf['keyz']
158
+ assert_equal 'b', conf['alt_key']
159
+
160
+ conf = d.instance.spec('yy')
161
+ assert_equal 'xxxxxx.' + hostname, conf['keyx']
162
+ assert_equal 'yyyyyy.yy', conf['keyy']
163
+ assert_equal 'z2', conf['keyz']
164
+ assert_equal 'c', conf['alt_key']
165
+
166
+ conf = d.instance.spec('yy.3')
167
+ assert_equal 'xxxxxx.' + hostname, conf['keyx']
168
+ assert_equal 'yyyyyy.yy.3', conf['keyy']
169
+ assert_equal 'z2', conf['keyz']
170
+ assert_equal 'c', conf['alt_key']
171
+
172
+ conf = d.instance.spec('zz')
173
+ assert_equal 'xxxxxx.' + hostname, conf['keyx']
174
+ assert_equal 'yyyyyy.zz', conf['keyy']
175
+ assert_equal 'z3', conf['keyz']
176
+ assert_equal 'd.zz.' + hostname, conf['alt_key']
177
+ end
178
+
85
179
  def test_faild_plant
86
180
  d = create_driver
87
181
  time = Time.parse("2012-01-02 13:14:15").to_i
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-forest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-10 00:00:00.000000000 Z
12
+ date: 2012-07-19 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: fluentd
16
32
  requirement: !ruby/object:Gem::Requirement