fluent-plugin-firelens-tag-filter 0.1.0 → 0.2.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.
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