fluent-plugin-gelf-best 1.1.0 → 1.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d561e8e54966fefedb1bfcc2ba6a629d334d3514ed378ea3fe982903b9e6b098
|
4
|
+
data.tar.gz: fc6f78f7a69a1b01d7046ea68c1e2334b9a8149a2c2436b938348303e318ac61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5dd171597df6672a52862682cbc7735998663cf29224f4c0059baae043a09f70d01ad9420875b0131779e817941a9506afae19d03ec8b91cc4591021b36656e9
|
7
|
+
data.tar.gz: e63ccdd497c1fbf8bab67ed982b9e86e4f24eab987956151671c348ed19848de276603115aaf7444ce9b3ef88b4812dc0d20e84660325b266a6f821e84f63389
|
@@ -1,91 +1,80 @@
|
|
1
|
-
# encoding=utf-8
|
2
1
|
module Fluent
|
3
2
|
module GelfPluginUtil
|
4
|
-
|
5
3
|
require 'gelf'
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
LEVEL_MAP = {
|
6
|
+
"0" => GELF::UNKNOWN, "1" => GELF::UNKNOWN, "a" => GELF::UNKNOWN,
|
7
|
+
"2" => GELF::FATAL, "c" => GELF::FATAL,
|
8
|
+
"3" => GELF::ERROR,
|
9
|
+
"4" => GELF::WARN, "w" => GELF::WARN,
|
10
|
+
"5" => GELF::INFO, "n" => GELF::INFO,
|
11
|
+
"6" => GELF::INFO, "i" => GELF::INFO,
|
12
|
+
"7" => GELF::DEBUG, "d" => GELF::DEBUG,
|
13
|
+
"e" => GELF::ERROR # assuming 'e' stands typically for 'error'
|
14
|
+
}
|
15
|
+
|
16
|
+
def make_gelfentry(tag, time, record, conf = {})
|
17
|
+
gelfentry = {"_fluentd_tag" => tag}
|
18
|
+
gelfentry["timestamp"] = calculate_timestamp(time)
|
19
|
+
|
20
|
+
record.each_pair do |k, v|
|
21
|
+
gelfentry.merge!(process_record_entry(k, v, conf, gelfentry))
|
22
|
+
end
|
23
|
+
|
24
|
+
ensure_short_message(gelfentry)
|
25
|
+
gelfentry.compact
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def calculate_timestamp(time)
|
31
|
+
if defined?(Fluent::EventTime) && time.is_a?(Fluent::EventTime)
|
32
|
+
time.sec + (time.nsec.to_f / 1_000_000_000).round(3)
|
11
33
|
else
|
12
|
-
|
34
|
+
time
|
13
35
|
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def process_record_entry(k, v, conf, gelfentry)
|
39
|
+
case k
|
40
|
+
when 'host', 'hostname'
|
41
|
+
return {'host' => (conf[:use_record_host] ? v : gelfentry['_host'] = v)}
|
42
|
+
when 'timestamp', 'time'
|
43
|
+
{ 'timestamp' => parse_timestamp(v) }
|
44
|
+
when 'level'
|
45
|
+
{'level' => LEVEL_MAP[v.to_s.downcase[0]] || (v.to_s.length >= 2 && v.to_s.downcase[1] != "r" ? GELF::UNKNOWN : v)}
|
46
|
+
when 'msec'
|
47
|
+
conf[:add_msec_time] ? {'timestamp' => "#{time.to_s}.#{v}".to_f} : {'_msec' => v}
|
48
|
+
when 'short_message', 'version', 'full_message', 'facility', 'file', 'line'
|
49
|
+
{k => v}
|
50
|
+
else
|
51
|
+
{k.start_with?('_') ? k : "_#{k}" => v}
|
52
|
+
end
|
53
|
+
end
|
14
54
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
when 'level' then
|
24
|
-
case v.to_s.downcase[0]
|
25
|
-
# emergency and alert aren't supported by gelf-rb
|
26
|
-
when "0" then
|
27
|
-
gelfentry['level'] = GELF::UNKNOWN
|
28
|
-
when "1", "a" then
|
29
|
-
gelfentry['level'] = GELF::UNKNOWN
|
30
|
-
when "2", "c" then
|
31
|
-
gelfentry['level'] = GELF::FATAL
|
32
|
-
when "3" then
|
33
|
-
gelfentry['level'] = GELF::ERROR
|
34
|
-
when "4", "w" then
|
35
|
-
gelfentry['level'] = GELF::WARN
|
36
|
-
# gelf-rb also skips notice
|
37
|
-
when "5", "n" then
|
38
|
-
gelfentry['level'] = GELF::INFO
|
39
|
-
when "6", "i" then
|
40
|
-
gelfentry['level'] = GELF::INFO
|
41
|
-
when "7", "d" then
|
42
|
-
gelfentry['level'] = GELF::DEBUG
|
43
|
-
when "e" then
|
44
|
-
if v.to_s.length >= 2 and v.to_s.downcase[1] != "r" then
|
45
|
-
gelfentry['level'] = GELF::UNKNOWN
|
46
|
-
else
|
47
|
-
gelfentry['level'] = GELF::ERROR
|
48
|
-
end
|
49
|
-
else
|
50
|
-
gelfentry['_level'] = v
|
51
|
-
end
|
52
|
-
when 'msec' then
|
53
|
-
# msec must be three digits (leading/trailing zeroes)
|
54
|
-
if conf[:add_msec_time] then
|
55
|
-
gelfentry['timestamp'] = "#{time.to_s}.#{v}".to_f
|
56
|
-
else
|
57
|
-
gelfentry['_msec'] = v
|
58
|
-
end
|
59
|
-
when 'short_message', 'full_message', 'facility', 'line', 'file' then
|
60
|
-
gelfentry[k] = v
|
61
|
-
else
|
62
|
-
if !k.start_with?('_')
|
63
|
-
gelfentry['_'+k] = v
|
64
|
-
else
|
65
|
-
gelfentry[k] = v
|
66
|
-
end
|
55
|
+
def parse_timestamp(v)
|
56
|
+
if v.is_a?(Integer) || v.is_a?(Float)
|
57
|
+
v
|
58
|
+
else
|
59
|
+
begin
|
60
|
+
(DateTime.parse(v).strftime("%Q").to_f / 1_000).round(3)
|
61
|
+
rescue ArgumentError
|
62
|
+
v
|
67
63
|
end
|
68
64
|
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def ensure_short_message(gelfentry)
|
68
|
+
return if gelfentry['short_message'] && !gelfentry['short_message'].to_s.strip.empty?
|
69
69
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
elsif gelfentry.key?('_msg') and !gelfentry['_msg'].to_s.strip.empty? then
|
75
|
-
gelfentry['short_message'] = gelfentry.delete('_msg')
|
76
|
-
elsif gelfentry.key?('_log') and !gelfentry['_log'].to_s.strip.empty? then
|
77
|
-
gelfentry['short_message'] = gelfentry.delete('_log')
|
78
|
-
elsif gelfentry.key?('_record') and !gelfentry['_record'].to_s.strip.empty? then
|
79
|
-
gelfentry['short_message'] = gelfentry.delete('_record')
|
80
|
-
else
|
81
|
-
# we must have a short_message, so provide placeholder
|
82
|
-
gelfentry['short_message'] = '(no message)'
|
70
|
+
['_message', '_msg', '_log', '_record'].each do |key|
|
71
|
+
if gelfentry[key] && !gelfentry[key].to_s.strip.empty?
|
72
|
+
gelfentry['short_message'] = gelfentry.delete(key)
|
73
|
+
return
|
83
74
|
end
|
84
75
|
end
|
85
76
|
|
86
|
-
|
87
|
-
# tend to make for larger files and data transmissions.
|
88
|
-
return gelfentry.delete_if{ |k,v| v.nil? }
|
77
|
+
gelfentry['short_message'] = '(no message)' unless gelfentry['short_message']
|
89
78
|
end
|
90
79
|
end
|
91
80
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-gelf-best
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Yamauchi
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-04-
|
13
|
+
date: 2024-04-18 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: fluentd
|