fluent-plugin-site24x7 0.1.4 → 0.1.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 +4 -4
- data/Gemfile +0 -0
- data/LICENSE +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/fluent-plugin-site24x7.gemspec +1 -1
- data/lib/fluent/plugin/out_site24x7.rb +73 -67
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f625b690765ab8a387bfef2ce93ce69a8dbcd42130248fe72913e6947395e204
|
4
|
+
data.tar.gz: a47d573e473f76802523ac3e88951c86e058f7577aff44b4fdf1ef221e4826c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 450f8c60b8cf1a193d5a2ed8265b2cd9b223368f1df22c37459cdc8d5ca0d21590b6241749432c9b15b5595ae069dfb59b4810bf39e7b40f9bb43193f56eb1bd
|
7
|
+
data.tar.gz: d06c06451ed65bdb99b5e61cb7445d22554bb78d6777609ba0faace2a860135f51478fe003d56a023202584d0974eb2d7f8e952a4133e6137cc96bfe01e86b86
|
data/Gemfile
CHANGED
File without changes
|
data/LICENSE
CHANGED
File without changes
|
data/README.md
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
@@ -143,9 +143,13 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
143
143
|
for field,rules in @logtype_config['filterConfig'] do
|
144
144
|
temp = []
|
145
145
|
for value in @logtype_config['filterConfig'][field]['values'] do
|
146
|
-
|
146
|
+
if @logtype_config['filterConfig'][field]['exact']
|
147
|
+
temp.push("\\A"+value+"\\Z")
|
148
|
+
else
|
149
|
+
temp.push(value)
|
150
|
+
end
|
147
151
|
end
|
148
|
-
@logtype_config['filterConfig'][field]['values'] = temp.join('|')
|
152
|
+
@logtype_config['filterConfig'][field]['values'] = Regexp.compile(temp.join('|'))
|
149
153
|
end
|
150
154
|
end
|
151
155
|
|
@@ -165,13 +169,13 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
165
169
|
if !@is_timezone_present && @logtype_config.has_key?('timezone')
|
166
170
|
@s247_datetime_format_string += '%z'
|
167
171
|
tz_value = @logtype_config['timezone']
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
172
|
+
if tz_value.start_with?('+')
|
173
|
+
@s247_tz['hrs'] = Integer('-' + tz_value[1..2])
|
174
|
+
@s247_tz['mins'] = Integer('-' + tz_value[3..4])
|
175
|
+
elsif tz_value.start_with?('-')
|
176
|
+
@s247_tz['hrs'] = Integer('+' + tz_value[1..2])
|
177
|
+
@s247_tz['mins'] = Integer('+' + tz_value[3..4])
|
178
|
+
end
|
175
179
|
end
|
176
180
|
end
|
177
181
|
Thread.new { timer_task() }
|
@@ -216,10 +220,21 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
216
220
|
end
|
217
221
|
end
|
218
222
|
|
219
|
-
def
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
+
def data_collector()
|
224
|
+
if @formatted_line.has_key?('_zl_timestamp')
|
225
|
+
applyMasking()
|
226
|
+
applyHashing()
|
227
|
+
getDerivedFields()
|
228
|
+
if !is_filters_matched()
|
229
|
+
@formatted_line = {}
|
230
|
+
return
|
231
|
+
end
|
232
|
+
remove_ignored_fields()
|
233
|
+
log_size_calculation()
|
234
|
+
else
|
235
|
+
@formatted_line = {}
|
236
|
+
return
|
237
|
+
end
|
223
238
|
end
|
224
239
|
|
225
240
|
def get_last_group_inregex(s247_custom_regex)
|
@@ -228,7 +243,9 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
228
243
|
|
229
244
|
def remove_ignored_fields()
|
230
245
|
@s247_ignored_fields.each do |field_name|
|
231
|
-
|
246
|
+
if @formatted_line.has_key?field_name
|
247
|
+
@formatted_line.delete(field_name)
|
248
|
+
end
|
232
249
|
end
|
233
250
|
end
|
234
251
|
|
@@ -245,10 +262,7 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
245
262
|
match = line.match(@s247_custom_regex)
|
246
263
|
if match
|
247
264
|
@formatted_line.update(@old_formatted_line)
|
248
|
-
@log_size += @old_log_size
|
249
|
-
@old_log_size = line.bytesize
|
250
265
|
@log_fields = match&.named_captures
|
251
|
-
remove_ignored_fields()
|
252
266
|
add_message_metadata()
|
253
267
|
@old_formatted_line = @log_fields
|
254
268
|
@last_line_matched = true
|
@@ -262,14 +276,13 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
262
276
|
@old_log_size += line.bytesize
|
263
277
|
@trace_started = true
|
264
278
|
@last_line_matched = false
|
265
|
-
end
|
279
|
+
end
|
266
280
|
end
|
267
|
-
end
|
268
|
-
|
269
|
-
|
281
|
+
end
|
282
|
+
data_collector()
|
283
|
+
if @formatted_line.length >0
|
270
284
|
parsed_lines.push(@formatted_line)
|
271
|
-
|
272
|
-
end
|
285
|
+
end
|
273
286
|
rescue Exception => e
|
274
287
|
log.error "Exception in parse_line #{e.backtrace}"
|
275
288
|
@formatted_line = {}
|
@@ -283,12 +296,14 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
283
296
|
begin
|
284
297
|
if @logtype_config.has_key?'filterConfig'
|
285
298
|
@logtype_config['filterConfig'].each do |config,value|
|
286
|
-
if @formatted_line
|
287
|
-
|
288
|
-
|
289
|
-
|
299
|
+
if (@formatted_line.has_key?config)
|
300
|
+
if @logtype_config['filterConfig'][config]['values'].match(@formatted_line[config])
|
301
|
+
val = true
|
302
|
+
else
|
303
|
+
val = false
|
304
|
+
end
|
290
305
|
end
|
291
|
-
if (@
|
306
|
+
if (@logtype_config['filterConfig'][config]['match'] ^ (val))
|
292
307
|
return false
|
293
308
|
end
|
294
309
|
end
|
@@ -342,20 +357,18 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
342
357
|
matcher = regex.match(@log_fields.delete(key))
|
343
358
|
if matcher
|
344
359
|
@log_fields.update(matcher.named_captures)
|
345
|
-
remove_ignored_fields()
|
346
360
|
@formatted_line.update(@log_fields)
|
347
361
|
end
|
348
362
|
end
|
349
363
|
end
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
@formatted_line.update(@log_fields)
|
355
|
-
log_line_filter()
|
356
|
-
@log_size += json_log_size
|
364
|
+
add_message_metadata()
|
365
|
+
@formatted_line.update(@log_fields)
|
366
|
+
data_collector()
|
367
|
+
if @formatted_line.length >0
|
357
368
|
return true
|
358
|
-
|
369
|
+
else
|
370
|
+
return false
|
371
|
+
end
|
359
372
|
end
|
360
373
|
|
361
374
|
def json_log_parser(lines)
|
@@ -367,7 +380,7 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
367
380
|
if line[0] == '{' && @json_data[-1] == '}'
|
368
381
|
if json_log_applier(@json_data)
|
369
382
|
parsed_lines.push(@formatted_line)
|
370
|
-
|
383
|
+
end
|
371
384
|
@json_data=''
|
372
385
|
end
|
373
386
|
@json_data += line
|
@@ -380,20 +393,14 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
380
393
|
end
|
381
394
|
|
382
395
|
def ml_regex_applier(ml_trace, ml_data)
|
383
|
-
begin
|
384
|
-
@log_size += @ml_trace.bytesize
|
396
|
+
begin
|
385
397
|
matcher = @s247_custom_regex.match(@ml_trace)
|
386
398
|
@log_fields = matcher.named_captures
|
387
399
|
@log_fields.update(@ml_data)
|
388
|
-
if @s247_ignored_fields
|
389
|
-
remove_ignored_fields()
|
390
|
-
end
|
391
400
|
add_message_metadata()
|
392
401
|
@formatted_line.update(@log_fields)
|
393
|
-
log_line_filter()
|
394
402
|
rescue Exception => e
|
395
403
|
log.error "Exception occurred in ml_parser : #{e.backtrace}"
|
396
|
-
@formatted_line = {}
|
397
404
|
end
|
398
405
|
end
|
399
406
|
|
@@ -413,14 +420,15 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
413
420
|
ml_regex_applier(@ml_trace, @ml_data)
|
414
421
|
if @ml_trace_buffer && @formatted_line
|
415
422
|
@formatted_line[@message_key] = @formatted_line[@message_key] + @ml_trace_buffer
|
416
|
-
@log_size += @ml_trace_buffer.bytesize
|
417
423
|
end
|
418
|
-
|
424
|
+
data_collector()
|
425
|
+
if @formatted_line.length >0
|
426
|
+
parsed_lines.push(@formatted_line)
|
427
|
+
end
|
419
428
|
@ml_trace = ''
|
420
429
|
@ml_trace_buffer = ''
|
421
430
|
if @ml_found
|
422
431
|
@ml_data = ml_start_matcher.named_captures
|
423
|
-
@log_size += line.bytesize
|
424
432
|
else
|
425
433
|
@ml_data = {}
|
426
434
|
end
|
@@ -429,7 +437,6 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
429
437
|
log.error "Exception occurred in ml_parser : #{e.backtrace}"
|
430
438
|
end
|
431
439
|
elsif @ml_found
|
432
|
-
@log_size += line.bytesize
|
433
440
|
@ml_data = ml_start_matcher.named_captures
|
434
441
|
end
|
435
442
|
elsif @ml_found
|
@@ -551,7 +558,7 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
551
558
|
begin
|
552
559
|
response = @s247_http_client.request @uri, request
|
553
560
|
resp_headers = response.each_header.to_h
|
554
|
-
|
561
|
+
|
555
562
|
if response.code == '200'
|
556
563
|
if resp_headers.has_key?'LOG_LICENSE_EXCEEDS' && resp_headers['LOG_LICENSE_EXCEEDS'] == 'True'
|
557
564
|
log.error "Log license limit exceeds so not able to send logs"
|
@@ -564,6 +571,9 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
564
571
|
elsif resp_headers.has_key?'INVALID_LOGTYPE' && resp_headers['INVALID_LOGTYPE'] == 'True'
|
565
572
|
log.error "Log type not present in this account so stopping log collection"
|
566
573
|
@valid_logtype = false
|
574
|
+
elsif resp_headers['x-uploadid'] == nil
|
575
|
+
log.error "upload id is empty hence retry flag enabled #{gzipped_parsed_lines.size} / #{@log_size}"
|
576
|
+
need_retry = true
|
567
577
|
else
|
568
578
|
@log_upload_allowed = true
|
569
579
|
log.debug "Successfully sent logs with size #{gzipped_parsed_lines.size} / #{@log_size} to site24x7. Upload Id : #{resp_headers['x-uploadid']}"
|
@@ -599,8 +609,7 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
599
609
|
ml_regex_applier(@ml_trace, @ml_data)
|
600
610
|
if @ml_trace_buffer
|
601
611
|
if !(@formatted_line.empty?)
|
602
|
-
@formatted_line[@message_key] = @formatted_line[@message_key] + @ml_trace_buffer
|
603
|
-
@log_size += @ml_trace_buffer.bytesize
|
612
|
+
@formatted_line[@message_key] = @formatted_line[@message_key] + @ml_trace_buffer
|
604
613
|
else
|
605
614
|
@ml_trace += @ml_trace_buffer.gsub('\n', '<NewLine>')
|
606
615
|
ml_regex_applier(@ml_trace, @ml_data)
|
@@ -615,10 +624,8 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
615
624
|
@json_data = ''
|
616
625
|
elsif @old_formatted_line
|
617
626
|
@formatted_line.update(@old_formatted_line)
|
618
|
-
|
619
|
-
@log_size += @old_log_size
|
627
|
+
data_collector()
|
620
628
|
@old_formatted_line = {}
|
621
|
-
@old_log_size = 0
|
622
629
|
end
|
623
630
|
@logged = true
|
624
631
|
if @format_record
|
@@ -654,9 +661,7 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
654
661
|
end
|
655
662
|
end
|
656
663
|
@formatted_line[key] = field_value
|
657
|
-
@log_size -= adjust_length
|
658
664
|
else
|
659
|
-
@log_size -= (@formatted_line[key].bytesize - @masking_config[key]['string'].bytesize)
|
660
665
|
@formatted_line[key] = @masking_config[key]['string']
|
661
666
|
end
|
662
667
|
end
|
@@ -693,11 +698,6 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
693
698
|
end
|
694
699
|
end
|
695
700
|
end
|
696
|
-
end
|
697
|
-
if adjust_length
|
698
|
-
@log_size -= adjust_length
|
699
|
-
else
|
700
|
-
@log_size -= (@formatted_line[key].bytesize - field_value.bytesize)
|
701
701
|
end
|
702
702
|
@formatted_line[key] = field_value
|
703
703
|
end
|
@@ -716,10 +716,7 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
716
716
|
if @formatted_line.has_key?key
|
717
717
|
match_derived = each.match(@formatted_line[key])
|
718
718
|
if match_derived
|
719
|
-
@formatted_line.update(match_derived.named_captures)
|
720
|
-
for field_name,value in match_derived.named_captures do
|
721
|
-
@log_size += @formatted_line[field_name].bytesize
|
722
|
-
end
|
719
|
+
@formatted_line.update(match_derived.named_captures)
|
723
720
|
end
|
724
721
|
break
|
725
722
|
end
|
@@ -727,10 +724,19 @@ class Fluent::Site24x7Output < Fluent::Plugin::Output
|
|
727
724
|
end
|
728
725
|
rescue Exception => e
|
729
726
|
log.error "Exception occurred in derived fields : #{e.backtrace}"
|
730
|
-
end
|
727
|
+
end
|
731
728
|
end
|
732
729
|
end
|
733
730
|
|
731
|
+
def log_size_calculation()
|
732
|
+
data_exclusion = ["_zl", "s247", "inode"]
|
733
|
+
@formatted_line.each do |field, value|
|
734
|
+
unless data_exclusion.any? { |exclusion| field.start_with?(exclusion) }
|
735
|
+
@log_size += value.to_s.bytesize
|
736
|
+
end
|
737
|
+
end
|
738
|
+
end
|
739
|
+
|
734
740
|
def timer_task()
|
735
741
|
while true
|
736
742
|
@after_time = Time.now
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-site24x7
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Magesh Rajan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -152,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '0'
|
154
154
|
requirements: []
|
155
|
-
rubygems_version: 3.1.
|
155
|
+
rubygems_version: 3.1.2
|
156
156
|
signing_key:
|
157
157
|
specification_version: 4
|
158
158
|
summary: Site24x7 output plugin for Fluent event collector.
|