fluent-plugin-bunyan 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fluent-plugin-bunyan.gemspec +2 -1
- data/lib/fluent/plugin/parser_bunyan.rb +13 -2
- data/test/plugin/test_parser_bunyan.rb +24 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 897084b1f198fcdf65487558092d7ff3a0c61d55a60f3b7e7cafe983a3c88e37
|
4
|
+
data.tar.gz: 87e400a29faaa103b766e585bc8bc368829878feef22f2efe32ab8afec52a8f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 =
|
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.
|
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
|
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
|
+
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-
|
11
|
+
date: 2020-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|