fluent-plugin-firelens-tag-filter 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4701b128678a435fd56087546ededb0c86a85e9a3a05e279282d47c8cfa71e5d
4
- data.tar.gz: 7166ca91caa479120fd8f2636209c6b6367fbb0ca355c71d214d88e16f2dfacf
3
+ metadata.gz: fae1c8e9ddeda7c653e66a9279f5e50b1b2fa0a18022d0481775270e887f3ae3
4
+ data.tar.gz: 77a304edd71d77f8aef9219cc054f1a6a73b5ff3568900b63631d94352392591
5
5
  SHA512:
6
- metadata.gz: 8b51a75afec20e79b3d4170ee2f3a2eeb2e1592b843f8c7a02059cb081e8a8f96e8c7e985a3dcdf41e3819aafbe107517ad367e38cf16b660e63a3f853c05a93
7
- data.tar.gz: 5517cb0f7c6ce558f040bf43465056c4ea490ef92f132a0835550f0e2c9c603f74ed488b9a9e92066bfc0f76a02fe4bc620cac5a051884d67a49228c6dedb31f
6
+ metadata.gz: 5a008fbbf4f4a2fdfee94f1cbd794ef2482f73a75a479e63f1170b75b2853253a0bdcbaefec362f3a81330e722d35bdc11faa08295b8f8f103b6c2356934d474
7
+ data.tar.gz: 668d417d2261f42a876c9175dae69cc7ce15e1ee9e51b9fa060e08e93b2ca8743e6d8676d9e3b395969a2f9702a594b2e5fa2ce422e8f4882f014034d59310e7
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  A tag of messages from AWS firelens has format like `[containerName]-firelens-[taskID]`, but a tag of fluentd is a string separated by dots (e.g. myapp.access) usually.
6
6
 
7
- fluent-plugin-firelens-tag-filter rewrites message tags from `[containerName]-firelens-[taskID]` to `[tag_prefix].[containerName].(stdout|stderr).[taskID]`.
7
+ fluent-plugin-firelens-tag-filter rewrites message tags from `[containerName]-firelens-[taskID]` to `[tag_prefix].[containerName].(stdout|stderr).[taskID]` by default.
8
8
 
9
9
  ## Installation
10
10
 
@@ -47,6 +47,25 @@ $ bundle
47
47
  </match>
48
48
  ```
49
49
 
50
+ Customize `tag` format.
51
+
52
+ ```conf
53
+ <match *-firelens-*>
54
+ @type firelens_tag_filter
55
+ tag ${container_name}.${source}
56
+ </match>
57
+
58
+ <match app.stdout>
59
+ # ...
60
+ </match>
61
+ ```
62
+
63
+ Placeholders allowed in tag as below.
64
+
65
+ - ${container-name} : Container name in task.
66
+ - ${task_id} : ECS task ID
67
+ - ${source} : source field in record (`stdout` or `stderr`)
68
+
50
69
  ## Copyright
51
70
 
52
71
  * Copyright(c) 2020- FUJIWARA Shunichiro
@@ -16,3 +16,9 @@
16
16
  <match **>
17
17
  @type stdout
18
18
  </match>
19
+
20
+ <label @FLUENT_LOG>
21
+ <match **>
22
+ @type null
23
+ </match>
24
+ </label>
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-firelens-tag-filter"
6
- spec.version = "0.1.0"
6
+ spec.version = "0.2.0"
7
7
  spec.authors = ["FUJIWARA Shunichiro"]
8
8
  spec.email = ["fujiwara.shunichiro@gmail.com"]
9
9
 
@@ -24,6 +24,15 @@ module Fluent
24
24
  desc 'rewrote tag prefix'
25
25
  config_param :tag_prefix, :string, :default => 'firelens'
26
26
 
27
+ desc 'tag format'
28
+ config_param :tag, :string, :default => '${tag_prefix}.${container_name}.${source}.${task_id}'
29
+
30
+ def configure(conf)
31
+ super
32
+ @tag_format = @tag.gsub(/%/, '%%').gsub(/\$\{(.*?)\}/, '%{\1}')
33
+ log.debug("tag_format #{@tag_format}")
34
+ end
35
+
27
36
  # rewrite message tag
28
37
  # from: [containerName]-firelens-[taskID]
29
38
  # to: [tag_prefix].[containerName].(stdout|stderr).[taskID]
@@ -34,10 +43,15 @@ module Fluent
34
43
  router.emit_stream(@tag_prefix + "." + tag, es)
35
44
  return
36
45
  end
46
+ v = {
47
+ tag_prefix: @tag_prefix,
48
+ container_name: matched[1],
49
+ task_id: matched[2],
50
+ }
37
51
  es.each do |time, record|
38
- src = record['source'] || 'unknown'
52
+ v[:source] = record['source'] || 'unknown'
39
53
  router.emit(
40
- [@tag_prefix, matched[1], src, matched[2]].join('.'),
54
+ sprintf(@tag_format, v),
41
55
  time,
42
56
  record,
43
57
  )
@@ -38,6 +38,22 @@ class FirelensTagFilterOutputTest < Test::Unit::TestCase
38
38
  assert_equal events[2], ['ecs.app.unknown.a27287f301b06d77', time, {"foo" => "boo"}]
39
39
  end
40
40
 
41
+ test "tag" do
42
+ d = create_driver "tag xxx.${source}.${task_id}.${container_name}"
43
+ time = event_time("2020-07-22 11:22:33Z")
44
+ d.run(default_tag: "app-firelens-a27287f301b06d77") do
45
+ d.feed(time, {"foo" => "bar", "source" => "stdout"})
46
+ d.feed(time, {"foo" => "baz", "source" => "stderr"})
47
+ d.feed(time, {"foo" => "boo"})
48
+ end
49
+
50
+ events = d.events
51
+ assert_equal 3, events.length
52
+ assert_equal events[0], ['xxx.stdout.a27287f301b06d77.app', time, {"foo" => "bar", "source" => "stdout"}]
53
+ assert_equal events[1], ['xxx.stderr.a27287f301b06d77.app', time, {"foo" => "baz", "source" => "stderr"}]
54
+ assert_equal events[2], ['xxx.unknown.a27287f301b06d77.app', time, {"foo" => "boo"}]
55
+ end
56
+
41
57
  test "unexpected" do
42
58
  d = create_driver ""
43
59
  time = event_time("2020-07-22 11:22:33Z")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-firelens-tag-filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - FUJIWARA Shunichiro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-22 00:00:00.000000000 Z
11
+ date: 2020-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler