fluent-plugin-bunyan 0.0.4 → 0.0.5

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: 9c7ca077c27fc89eada5a3b8854ae9ac6b16a26503d73fa5690f4b8ed423d77c
4
- data.tar.gz: 35fe59d48c1c8dabe0c22900ff203e46884fb0b21125e7a8799399b70f3a3fe8
3
+ metadata.gz: 897084b1f198fcdf65487558092d7ff3a0c61d55a60f3b7e7cafe983a3c88e37
4
+ data.tar.gz: 87e400a29faaa103b766e585bc8bc368829878feef22f2efe32ab8afec52a8f7
5
5
  SHA512:
6
- metadata.gz: e4854c127c3a0903daa6b604f2b347c9bea23f9fe202fad1c10779b340efc177459cb34552f35a50c713f36241fd9e2204cd64bd7b55dcc75dd744cd5f876a86
7
- data.tar.gz: 44b4796655c0985988e9683a71ce0a849c9cb4d45ad075267ff790f542bb7022c1c41b28690e47de42ac5c703a2a05b6dd6be69cb86102ee7e130c1d05bf4353
6
+ metadata.gz: e369516e341686750d853796d384b111f1bdfc0b24891a64b3cfba11cc156720764bdd56c16647379d6ea192f64692af5b038b6948eebd6fd684873e41ff1d22
7
+ data.tar.gz: f7c5979bd8c869151b3c9e0e8f06a0808e168c26a44b5edc68ed7055e28890646dbeaeb43bd65502b2b45f11b19678641a9c99ed71332bcc11bafc4b58ed9ca7
@@ -3,7 +3,8 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-bunyan"
6
- spec.version = "0.0.4"
6
+ #spec.version = Fluent::Plugin::BunyanParser.new.version
7
+ spec.version = "0.0.5"
7
8
  spec.authors = ["Gildas Cherruel"]
8
9
  spec.email = ["gildas@breizh.org"]
9
10
 
@@ -26,11 +26,22 @@ module Fluent
26
26
  end
27
27
 
28
28
  def parse(text)
29
- # Example of a log line we want to get stuff from:
29
+ # Example of a log line from containerd we want to get stuff from:
30
30
  # 2020-03-16T22:14:05.710251038+09:00 stdout F {"UserAgent":"kube-probe/1.17","hostname":"helloworld-go-helloworld-5649dfd7bd-k8954","level":30,"msg":"request start: GET /","name":"helloworld","pid":1,"remote":"10.1.10.1:60114","reqid":"e4745ed6-82d4-4013-aeda-1d02bef42331","scope":"/","tid":17,"time":"2020-03-16T13:14:05Z","topic":"route","v":0}
31
+ # Example of a log line from docker for mac we want to get stuff from:
32
+ # {"log":"{\"UserAgent\":\"HTTPie/2.0.0\",\"hostname\":\"helloworld-859745b47d-5dlbn\",\"level\":30,\"msg\":\"request start: GET /\",\"name\":\"helloworld\",\"pid\":1,\"remote\":\"192.168.65.3:42018\",\"reqid\":\"ba054f49-d97e-4970-89c4-dd3b75270e6a\",\"scope\":\"/\",\"tid\":14,\"time\":\"2020-03-24T08:29:02Z\",\"topic\":\"route\",\"v\":0}\n","stream":"stdout","time":"2020-03-24T08:29:02.3995324Z"}
31
33
  if text =~ /[^{]*({.*)/
32
34
  super(text.sub(/[^{]*({.*)/, '\1')) do |time, record|
33
35
  if record then
36
+ if record["log"] then # This is a Docker style log message
37
+ begin
38
+ r = JSON.load(record["log"])
39
+ r.delete("time")
40
+ record.merge!(r)
41
+ record.delete("log")
42
+ rescue JSON::ParserError
43
+ end
44
+ end
34
45
  record["severity"] = severity(record["level"] || 0)
35
46
  record["host"] = record.delete("hostname")
36
47
  record["message"] = record.delete("msg")
@@ -52,7 +63,7 @@ module Fluent
52
63
  end
53
64
 
54
65
  def version
55
- return "0.0.4"
66
+ return "0.0.5"
56
67
  end
57
68
  end
58
69
  end
@@ -81,7 +81,7 @@ class BunyanParserTest < Test::Unit::TestCase
81
81
  end
82
82
  end
83
83
 
84
- test "can parse entry from Kubernetes" do
84
+ test "can parse entry from containerd" do
85
85
  driver = create_driver(CONFIG)
86
86
  text = '2020-03-10T07:08:41.710251038+09:00 stdout F {"hostname":"helloworld-go-helloworld-5649dfd7bd-k8954","level":30,"msg":"The message","name":"helloworld","pid":1,"scope":"main","tid":1,"time":"2020-03-10T07:08:41Z","topic":"main","v":0}'
87
87
  expected_time = Time.utc(2020, 3, 10, 7, 8, 41).to_i
@@ -102,6 +102,29 @@ class BunyanParserTest < Test::Unit::TestCase
102
102
  end
103
103
  end
104
104
 
105
+ test "can parse entry from Docker for Mac/Windows" do
106
+ driver = create_driver(CONFIG)
107
+ text = '{"log":"{\"hostname\":\"helloworld-859745b47d-5dlbn\",\"level\":30,\"msg\":\"The message\",\"name\":\"helloworld\",\"pid\":1,\"remote\":\"192.168.65.3:42018\",\"scope\":\"main\",\"tid\":14,\"time\":\"2020-03-24T08:29:02Z\",\"topic\":\"main\",\"v\":0}\n","stream":"stdout","time":"2020-03-24T08:29:02.3995324Z"}'
108
+ expected_time = Time.utc(2020, 3, 24, 8, 29, 2).to_i
109
+ expected_record = {
110
+ "host" => "helloworld-859745b47d-5dlbn",
111
+ "name" => "helloworld",
112
+ "severity" => "info",
113
+ "level" => 30,
114
+ "message" => "The message",
115
+ "remote" => "192.168.65.3:42018",
116
+ "topic" => "main",
117
+ "scope" => "main",
118
+ "stream" => "stdout",
119
+ "pid" => 1,
120
+ "tid" => 14,
121
+ }
122
+ driver.instance.parse(text) do |time, record|
123
+ assert_equal(expected_record, record)
124
+ assert_equal(expected_time, time)
125
+ end
126
+ end
127
+
105
128
  private
106
129
 
107
130
  def create_driver(conf = CONFIG)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-bunyan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gildas Cherruel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-16 00:00:00.000000000 Z
11
+ date: 2020-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler