fluent-plugin-druid-log 0.1.3 → 0.2.1

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: 9a568fff53580e5f69782de930f2f6dcb8fb6992d2168fbd263c4b7369fa5993
4
- data.tar.gz: e35649e627b4a5d5da34a8b8e4fca0ee8cf4d755cc032670583ae19232b84717
3
+ metadata.gz: 03cefeccb950407624b4d8a1ee951dbe6215ee56bb056f64da066cbaae65a328
4
+ data.tar.gz: '094fb5516873e69625f81d7eea7555385204efd1ab7f88b27a6a11fe4175398f'
5
5
  SHA512:
6
- metadata.gz: ace12af8abe07e35c4a66e13b84fa7da842ed62c592bf217977bfb2f0b7785ec45c270f728f90fb765d688a32aa4b3ee65e7015ab6efafbdd71a70114712f8a8
7
- data.tar.gz: aaff1af9901e2baefe6a975832adb9da2032021c01dbba7ae9297c704014d8a0de5a6e64d3320f4abcef223dd3517a4200d2d536445a940c4c341d25b5931d0c
6
+ metadata.gz: ddd623c7d9bcd74e0dcee79b5fd0654ad611f82fce8fe61cb80678213e9bd144b00014b06ec30d9ca1ecd3683a0b397690f4480b036e2e3ccf26e682ded96559
7
+ data.tar.gz: e08b2383eff5fe14d0293cec3a9104df5028146c518e9cc7b97bceb93254c6695371610041df78f337142952948349a0b59e74a2e51a69a1ba7861dd9e825907
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fluent/plugin/filter'
4
+
5
+ module Fluent
6
+ module Plugin
7
+ class FormatDruidAuditLog2Filter < Fluent::Plugin::Filter
8
+ NAME = 'format_druid_audit_log_2'
9
+ Fluent::Plugin.register_filter(NAME, self)
10
+
11
+ helpers :event_emitter, :timer
12
+
13
+ DEFAULT_QUERY_KEY = 'query'
14
+ DEFAULT_QUERY_RESULT_KEY = 'query_result'
15
+
16
+ desc 'Query key'
17
+ config_param :query_key, :string, default: DEFAULT_QUERY_KEY
18
+ desc 'Query result key'
19
+ config_param :query_result_key, :string, default: DEFAULT_QUERY_RESULT_KEY
20
+
21
+ def configure(conf)
22
+ super
23
+
24
+ return unless query_key.nil? and query_result.nil?
25
+
26
+ raise Fluent::ConfigError, 'query_key should be specified'
27
+ end
28
+
29
+ def multi_workers_ready?
30
+ true
31
+ end
32
+
33
+ def filter(_tag, _time, record)
34
+ new_record = format_record(record.dup)
35
+ fix_record(new_record)
36
+ new_record
37
+ end
38
+
39
+ def format_record(record)
40
+ [query_key, query_result_key].each do |key|
41
+ if record[key].is_a? String
42
+ record[key] = record[key].size > 0 ? JSON.parse(record[key]) : {}
43
+ end
44
+ end
45
+
46
+ query_type = guess_query_type(record)
47
+ record['query_type'] = query_type
48
+
49
+ record
50
+ end
51
+
52
+ def guess_query_type(record)
53
+ record.dig(query_key,
54
+ 'queryType') || (record.dig('query_result',
55
+ 'sqlQuery/time') && 'sql') || (record.dig(query_key,
56
+ 'query') && 'sql') || 'unknown'
57
+ end
58
+
59
+ def fix_record(record)
60
+ fix_record_query_granularity(record)
61
+ end
62
+
63
+ def fix_record_query_granularity(record)
64
+ update_all_key_value(record, 'granularity') do |value|
65
+ value.to_s unless value.nil?
66
+ end
67
+ end
68
+
69
+ def update_all_key_value(record, key, &block)
70
+ record.each do |rkey, rvalue|
71
+ if rkey.to_s == key
72
+ record[rkey] = yield(rvalue) if block_given?
73
+ next
74
+ end
75
+
76
+ if rvalue.is_a?(Hash)
77
+ update_all_key_value(rvalue, key, &block)
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-druid-log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Tych
@@ -211,6 +211,7 @@ files:
211
211
  - README.md
212
212
  - Rakefile
213
213
  - lib/fluent/plugin/filter_format_druid_audit_log_1.rb
214
+ - lib/fluent/plugin/filter_format_druid_audit_log_2.rb
214
215
  homepage: https://gitlab.com/ttych/fluent-plugin-druid-log
215
216
  licenses:
216
217
  - Apache-2.0