fluent-plugin-oci-logging-analytics 2.0.3 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b209883985bb866cf22a68d107f378f2345450017ff0273f70742b17bcbc8bfe
|
4
|
+
data.tar.gz: 4e7a78239ef46e22991ea524e83dc2f95a0d9300c86753a8a874733a99d30b13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72ef3ff0b97ef16caf94b88f8bfc2f61651992b7f3507f987cefd65e841c3d12f60aff07451916b119177efb5c1f43150978862dd27efbc0d2418ff3b62dfaa2
|
7
|
+
data.tar.gz: a690af49fc8e74b3851116121cdb9743ca118f1f38bd69353ea909bc6ed7c0ed5c9912e99f0d920ec231eb78db748b2302a9082f9efc77cc60937bdd72c92ff2
|
@@ -1,6 +1,7 @@
|
|
1
1
|
class MetricsLabels
|
2
|
-
attr_accessor :tag, :logGroupId, :logSourceName, :logSet, :invalid_reason, :records_valid, :records_per_tag, :latency
|
2
|
+
attr_accessor :worker_id, :tag, :logGroupId, :logSourceName, :logSet, :invalid_reason, :records_valid, :records_per_tag, :latency
|
3
3
|
def initialize
|
4
|
+
@worker_id = nil
|
4
5
|
@tag = nil
|
5
6
|
@logGroupId = nil
|
6
7
|
@logSourceName = nil
|
@@ -14,16 +14,15 @@ class PrometheusMetrics
|
|
14
14
|
end
|
15
15
|
def createMetrics
|
16
16
|
gauge = Prometheus::Client::Gauge
|
17
|
-
@records_received = gauge.new(:oci_la_fluentd_output_plugin_records_received, docstring: 'Number of records received by the OCI Logging Analytics Fluentd output plugin.', labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set])
|
18
|
-
@records_valid = gauge.new(:oci_la_fluentd_output_plugin_records_valid, docstring: 'Number of valid records received by the OCI Logging Analytics Fluentd output plugin.', labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set])
|
19
|
-
@records_invalid = gauge.new(:oci_la_fluentd_output_plugin_records_invalid, docstring: 'Number of invalid records received by the OCI Logging Analytics Fluentd output plugin.', labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set,:reason])
|
20
|
-
@records_error = gauge.new(:oci_la_fluentd_output_plugin_records_post_error, docstring: 'Number of records failed posting to OCI Logging Analytics by the Fluentd output plugin.', labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set,:error_code, :reason])
|
21
|
-
@records_posted = gauge.new(:oci_la_fluentd_output_plugin_records_post_success, docstring: 'Number of records posted by the OCI Logging Analytics Fluentd output plugin.', labels: [:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set])
|
22
|
-
|
23
|
-
#@bytes_posted = gauge.new(:oci_la_bytes_posted, docstring: '...', labels: [:oci_la_log_group_id])
|
17
|
+
@records_received = gauge.new(:oci_la_fluentd_output_plugin_records_received, docstring: 'Number of records received by the OCI Logging Analytics Fluentd output plugin.', labels: [:worker_id,:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set])
|
18
|
+
@records_valid = gauge.new(:oci_la_fluentd_output_plugin_records_valid, docstring: 'Number of valid records received by the OCI Logging Analytics Fluentd output plugin.', labels: [:worker_id,:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set])
|
19
|
+
@records_invalid = gauge.new(:oci_la_fluentd_output_plugin_records_invalid, docstring: 'Number of invalid records received by the OCI Logging Analytics Fluentd output plugin.', labels: [:worker_id,:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set,:reason])
|
20
|
+
@records_error = gauge.new(:oci_la_fluentd_output_plugin_records_post_error, docstring: 'Number of records failed posting to OCI Logging Analytics by the Fluentd output plugin.', labels: [:worker_id,:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set,:error_code, :reason])
|
21
|
+
@records_posted = gauge.new(:oci_la_fluentd_output_plugin_records_post_success, docstring: 'Number of records posted by the OCI Logging Analytics Fluentd output plugin.', labels: [:worker_id,:tag,:oci_la_log_group_id,:oci_la_log_source_name,:oci_la_log_set])
|
22
|
+
|
24
23
|
histogram = Prometheus::Client::Histogram
|
25
|
-
@chunk_time_to_receive = histogram.new(:oci_la_fluentd_output_plugin_chunk_time_to_receive, docstring: 'Average time taken by Fluentd to deliver the collected records from Input plugin to OCI Logging Analytics output plugin.', labels: [:tag])
|
26
|
-
@chunk_time_to_upload = histogram.new(:oci_la_fluentd_output_plugin_chunk_time_to_post, docstring: 'Average time taken for posting the received records to OCI Logging Analytics by the Fluentd output plugin.', labels: [:oci_la_log_group_id])
|
24
|
+
@chunk_time_to_receive = histogram.new(:oci_la_fluentd_output_plugin_chunk_time_to_receive, docstring: 'Average time taken by Fluentd to deliver the collected records from Input plugin to OCI Logging Analytics output plugin.', labels: [:worker_id,:tag])
|
25
|
+
@chunk_time_to_upload = histogram.new(:oci_la_fluentd_output_plugin_chunk_time_to_post, docstring: 'Average time taken for posting the received records to OCI Logging Analytics by the Fluentd output plugin.', labels: [:worker_id,:oci_la_log_group_id])
|
27
26
|
end
|
28
27
|
|
29
28
|
def registerMetrics
|
@@ -33,8 +32,6 @@ class PrometheusMetrics
|
|
33
32
|
registry.register(@records_invalid) unless registry.exist?('oci_la_fluentd_output_plugin_records_invalid')
|
34
33
|
registry.register(@records_error) unless registry.exist?('oci_la_fluentd_output_plugin_records_post_error')
|
35
34
|
registry.register(@records_posted) unless registry.exist?('oci_la_fluentd_output_plugin_records_post_success')
|
36
|
-
#registry.register(@bytes_received) unless registry.exist?('oci_la_bytes_received')
|
37
|
-
#registry.register(@bytes_posted) unless registry.exist?('oci_la_bytes_valid')
|
38
35
|
registry.register(@chunk_time_to_receive) unless registry.exist?('oci_la_fluentd_output_plugin_chunk_time_to_receive')
|
39
36
|
registry.register(@chunk_time_to_upload) unless registry.exist?('oci_la_fluentd_output_plugin_chunk_time_to_post')
|
40
37
|
end
|
@@ -4,6 +4,8 @@
|
|
4
4
|
require 'fluent/plugin/output'
|
5
5
|
require "benchmark"
|
6
6
|
require 'zip'
|
7
|
+
require 'yajl'
|
8
|
+
require 'yajl/json_gem'
|
7
9
|
|
8
10
|
require 'logger'
|
9
11
|
require_relative '../dto/logEventsJson'
|
@@ -75,6 +77,8 @@ module Fluent::Plugin
|
|
75
77
|
@@loganalytics_client = nil
|
76
78
|
@@prometheusMetrics = nil
|
77
79
|
@@logger_config_errors = []
|
80
|
+
@@worker_id = '0'
|
81
|
+
@@encoded_messages_count = 0
|
78
82
|
|
79
83
|
|
80
84
|
desc 'OCI Tenancy Namespace.'
|
@@ -92,7 +96,7 @@ module Fluent::Plugin
|
|
92
96
|
desc 'Payload zip File Location.'
|
93
97
|
config_param :zip_file_location, :string, :default => nil
|
94
98
|
desc 'The kubernetes_metadata_keys_mapping.'
|
95
|
-
config_param :kubernetes_metadata_keys_mapping, :hash, :default => {"container_name":"
|
99
|
+
config_param :kubernetes_metadata_keys_mapping, :hash, :default => {"container_name":"Container","namespace_name":"Namespace","pod_name":"Pod","container_image":"Container Image Name","host":"Node"}
|
96
100
|
|
97
101
|
|
98
102
|
#****************************************************************
|
@@ -146,7 +150,7 @@ module Fluent::Plugin
|
|
146
150
|
desc 'The number of threads of output plugins, which is used to write chunks in parallel.'
|
147
151
|
config_set_default :flush_thread_count, 1
|
148
152
|
desc 'The max size of each chunks: events will be written into chunks until the size of chunks become this size.'
|
149
|
-
config_set_default :chunk_limit_size,
|
153
|
+
config_set_default :chunk_limit_size, 4 * 1024 * 1024 # 4MB
|
150
154
|
desc 'The size limitation of this buffer plugin instance.'
|
151
155
|
config_set_default :total_limit_size, 5 * (1024**3) # 5GB
|
152
156
|
desc 'Flush interval'
|
@@ -170,67 +174,72 @@ module Fluent::Plugin
|
|
170
174
|
end
|
171
175
|
|
172
176
|
def initialize_logger()
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
logger_set_level(@plugin_log_level)
|
177
|
+
begin
|
178
|
+
filename = nil
|
179
|
+
is_default_log_location = false
|
180
|
+
if is_valid(@plugin_log_location)
|
181
|
+
filename = @plugin_log_location[-1] == '/' ? @plugin_log_location : @plugin_log_location +'/'
|
182
|
+
else
|
183
|
+
@@logger = log
|
184
|
+
return
|
185
|
+
end
|
186
|
+
if !is_valid_log_level(@plugin_log_level)
|
187
|
+
@plugin_log_level = @@default_log_level
|
188
|
+
end
|
189
|
+
oci_fluent_output_plugin_log = nil
|
190
|
+
if is_default_log_location
|
191
|
+
oci_fluent_output_plugin_log = 'oci-logging-analytics.log'
|
192
|
+
else
|
193
|
+
oci_fluent_output_plugin_log = filename+'oci-logging-analytics.log'
|
194
|
+
end
|
195
|
+
logger_config = nil
|
196
|
+
|
197
|
+
if is_valid_number_of_logs(@plugin_log_file_count) && is_valid_log_size(@plugin_log_file_size)
|
198
|
+
# When customer provided valid log_file_count and log_file_size.
|
199
|
+
# logger will rotate with max log_file_count with each file having max log_file_size.
|
200
|
+
# Older logs purged automatically.
|
201
|
+
@@logger = Logger.new(oci_fluent_output_plugin_log, @plugin_log_file_count, @@validated_log_size)
|
202
|
+
logger_config = 'USER_CONFIG'
|
203
|
+
elsif is_valid_log_rotation(@plugin_log_rotation)
|
204
|
+
# When customer provided only log_rotation.
|
205
|
+
# logger will create a new log based on log_rotation (new file everyday if the rotation is daily).
|
206
|
+
# This will create too many logs over a period of time as log purging is not done.
|
207
|
+
@@logger = Logger.new(oci_fluent_output_plugin_log, @plugin_log_rotation)
|
208
|
+
logger_config = 'FALLBACK_CONFIG'
|
209
|
+
else
|
210
|
+
# When customer provided invalid log config, default config is considered.
|
211
|
+
# logger will rotate with max default log_file_count with each file having max default log_file_size.
|
212
|
+
# Older logs purged automatically.
|
213
|
+
@@logger = Logger.new(oci_fluent_output_plugin_log, @@default_number_of_logs, @@default_log_size)
|
214
|
+
logger_config = 'DEFAULT_CONFIG'
|
215
|
+
end
|
213
216
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
217
|
+
logger_set_level(@plugin_log_level)
|
218
|
+
@@logger.info {"Initializing oci-logging-analytics plugin"}
|
219
|
+
if is_default_log_location
|
220
|
+
@@logger.info {"plugin_log_location is not specified. oci-logging-analytics.log will be generated under directory from where fluentd is executed."}
|
221
|
+
end
|
218
222
|
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
223
|
+
case logger_config
|
224
|
+
when 'USER_CONFIG'
|
225
|
+
@@logger.info {"Logger for oci-logging-analytics.log is initialized with config values log size: #{@plugin_log_file_size}, number of logs: #{@plugin_log_file_count}"}
|
226
|
+
when 'FALLBACK_CONFIG'
|
227
|
+
@@logger.info {"Logger for oci-logging-analytics.log is initialized with log rotation: #{@plugin_log_rotation}"}
|
228
|
+
when 'DEFAULT_CONFIG'
|
229
|
+
@@logger.info {"Logger for oci-logging-analytics.log is initialized with default config values log size: #{@@default_log_size}, number of logs: #{@@default_number_of_logs}"}
|
230
|
+
end
|
231
|
+
if @@logger_config_errors.length > 0
|
232
|
+
@@logger_config_errors. each {|logger_config_error|
|
233
|
+
@@logger.warn {"#{logger_config_error}"}
|
234
|
+
}
|
235
|
+
end
|
236
|
+
if is_valid_log_age(@plugin_log_age)
|
237
|
+
@@logger.warn {"'plugin_log_age' field is deprecated. Use 'plugin_log_file_size' and 'plugin_log_file_count' instead."}
|
238
|
+
end
|
239
|
+
rescue => ex
|
240
|
+
@@logger = log
|
241
|
+
@@logger.error {"Error while initializing logger:#{ex.inspect}"}
|
242
|
+
@@logger.info {"Redirecting oci logging analytics logs to STDOUT"}
|
234
243
|
end
|
235
244
|
end
|
236
245
|
|
@@ -275,8 +284,8 @@ module Fluent::Plugin
|
|
275
284
|
initialize_logger
|
276
285
|
|
277
286
|
initialize_loganalytics_client
|
278
|
-
|
279
|
-
raise Fluent::ConfigError, "Error in config file : Buffer plugin must be of @type file." unless buffer_config['@type'] == 'file'
|
287
|
+
#@@logger.error {"Error in config file : Buffer plugin must be of @type file."} unless buffer_config['@type'] == 'file'
|
288
|
+
#raise Fluent::ConfigError, "Error in config file : Buffer plugin must be of @type file." unless buffer_config['@type'] == 'file'
|
280
289
|
|
281
290
|
is_mandatory_fields_valid,invalid_field_name = mandatory_field_validator
|
282
291
|
if !is_mandatory_fields_valid
|
@@ -288,8 +297,8 @@ module Fluent::Plugin
|
|
288
297
|
unless conf.elements(name: 'buffer').empty?
|
289
298
|
buffer_conf = conf.elements(name: 'buffer').first
|
290
299
|
chunk_limit_size_from_conf = buffer_conf['chunk_limit_size']
|
291
|
-
unless chunk_limit_size_from_conf.nil?
|
292
|
-
|
300
|
+
unless chunk_limit_size_from_conf.nil? && buffer_config['@type'] != 'file'
|
301
|
+
@@logger.debug "chunk limit size as per the configuration file is #{chunk_limit_size_from_conf}"
|
293
302
|
case chunk_limit_size_from_conf.to_s
|
294
303
|
when /([0-9]+)k/i
|
295
304
|
chunk_limit_size_bytes = $~[1].to_i * 1024
|
@@ -299,13 +308,13 @@ module Fluent::Plugin
|
|
299
308
|
chunk_limit_size_bytes = $~[1].to_i * (1024 ** 3)
|
300
309
|
when /([0-9]+)t/i
|
301
310
|
chunk_limit_size_bytes = $~[1].to_i * (1024 ** 4)
|
302
|
-
else
|
303
|
-
raise Fluent::ConfigError, "error parsing chunk_limit_size"
|
311
|
+
#else
|
312
|
+
#raise Fluent::ConfigError, "error parsing chunk_limit_size"
|
304
313
|
end
|
305
314
|
|
306
|
-
|
307
|
-
if !chunk_limit_size_bytes.between?(1048576,
|
308
|
-
raise Fluent::ConfigError, "chunk_limit_size must be between 1MB and
|
315
|
+
@@logger.debug "chunk limit size in bytes as per the configuration file is #{chunk_limit_size_bytes}"
|
316
|
+
if chunk_limit_size_bytes != nil && !chunk_limit_size_bytes.between?(1048576, 4194304)
|
317
|
+
raise Fluent::ConfigError, "chunk_limit_size must be between 1MB and 4MB"
|
309
318
|
end
|
310
319
|
end
|
311
320
|
end
|
@@ -577,7 +586,7 @@ module Fluent::Plugin
|
|
577
586
|
kubernetes_metadata.each do |key, value|
|
578
587
|
if kubernetes_metadata_keys_mapping.has_key?(key)
|
579
588
|
if !is_valid(oci_la_metadata[kubernetes_metadata_keys_mapping[key]])
|
580
|
-
oci_la_metadata[kubernetes_metadata_keys_mapping[key]] = json_message_handler(value)
|
589
|
+
oci_la_metadata[kubernetes_metadata_keys_mapping[key]] = json_message_handler(key, value)
|
581
590
|
end
|
582
591
|
end
|
583
592
|
end
|
@@ -588,14 +597,21 @@ module Fluent::Plugin
|
|
588
597
|
return oci_la_metadata
|
589
598
|
end
|
590
599
|
|
591
|
-
def json_message_handler(message)
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
600
|
+
def json_message_handler(key, message)
|
601
|
+
begin
|
602
|
+
if !is_valid(message)
|
603
|
+
return nil
|
604
|
+
end
|
605
|
+
if message.is_a?(Hash)
|
606
|
+
return Yajl.dump(message) #JSON.generate(message)
|
607
|
+
end
|
608
|
+
return message
|
609
|
+
rescue => ex
|
610
|
+
@@logger.error {"Error occured while generating json for
|
611
|
+
field: #{key}
|
612
|
+
exception : #{ex}"}
|
613
|
+
return nil
|
614
|
+
end
|
599
615
|
end
|
600
616
|
|
601
617
|
def group_by_logGroupId(chunk)
|
@@ -624,6 +640,10 @@ module Fluent::Plugin
|
|
624
640
|
if !record.nil?
|
625
641
|
begin
|
626
642
|
record_hash = record.keys.map {|x| [x,true]}.to_h
|
643
|
+
if record_hash.has_key?("worker_id") && is_valid(record["worker_id"])
|
644
|
+
metricsLabels.worker_id = record["worker_id"]||= '0'
|
645
|
+
@@worker_id = record["worker_id"]||= '0'
|
646
|
+
end
|
627
647
|
is_tag_exists = false
|
628
648
|
if record_hash.has_key?("tag") && is_valid(record["tag"])
|
629
649
|
is_tag_exists = true
|
@@ -702,22 +722,23 @@ module Fluent::Plugin
|
|
702
722
|
if record["oci_la_log_set"] != nil
|
703
723
|
metricsLabels.logSet = record["oci_la_log_set"]
|
704
724
|
end
|
725
|
+
record["message"] = json_message_handler("message", record["message"])
|
726
|
+
|
727
|
+
|
705
728
|
#This will check for null or empty messages and only that record will be ignored.
|
706
729
|
if !is_valid(record["message"])
|
707
730
|
metricsLabels.invalid_reason = OutOracleOCILogAnalytics::METRICS_INVALID_REASON_MESSAGE
|
708
731
|
if is_tag_exists
|
709
|
-
@@logger.warn {"'message' field has empty value, Skipping records associated with tag : #{record["tag"]}."}
|
710
732
|
if invalid_records_per_tag.has_key?(record["tag"])
|
711
733
|
invalid_records_per_tag[record["tag"]] += 1
|
712
734
|
else
|
713
735
|
invalid_records_per_tag[record["tag"]] = 1
|
736
|
+
@@logger.warn {"'message' field is empty or encoded, Skipping records associated with tag : #{record["tag"]}."}
|
714
737
|
end
|
715
738
|
else
|
716
|
-
@@logger.warn {"'message' field
|
739
|
+
@@logger.warn {"'message' field is empty or encoded, Skipping record."}
|
717
740
|
end
|
718
741
|
next
|
719
|
-
else
|
720
|
-
record["message"] = json_message_handler(record["message"])
|
721
742
|
end
|
722
743
|
|
723
744
|
if record_hash.has_key?("kubernetes")
|
@@ -773,7 +794,7 @@ module Fluent::Plugin
|
|
773
794
|
|
774
795
|
tag_metrics_set.each do |tag,metricsLabels|
|
775
796
|
latency_avg = (metricsLabels.latency / metricsLabels.records_per_tag).round(3)
|
776
|
-
@@prometheusMetrics.chunk_time_to_receive.observe(latency_avg, labels: { tag: tag})
|
797
|
+
@@prometheusMetrics.chunk_time_to_receive.observe(latency_avg, labels: { worker_id: metricsLabels.worker_id, tag: tag})
|
777
798
|
end
|
778
799
|
|
779
800
|
lrpes_for_logGroupId = {}
|
@@ -827,17 +848,20 @@ module Fluent::Plugin
|
|
827
848
|
logGroup_metrics_map[metricsLabels.logGroupId] = metricsLabels_array
|
828
849
|
end
|
829
850
|
|
830
|
-
@@prometheusMetrics.records_received.set(value.to_i, labels: {
|
851
|
+
@@prometheusMetrics.records_received.set(value.to_i, labels: { worker_id: metricsLabels.worker_id,
|
852
|
+
tag: key,
|
831
853
|
oci_la_log_group_id: metricsLabels.logGroupId,
|
832
854
|
oci_la_log_source_name: metricsLabels.logSourceName,
|
833
855
|
oci_la_log_set: metricsLabels.logSet})
|
834
856
|
|
835
|
-
@@prometheusMetrics.records_invalid.set(dropped_messages, labels: {
|
857
|
+
@@prometheusMetrics.records_invalid.set(dropped_messages, labels: { worker_id: metricsLabels.worker_id,
|
858
|
+
tag: key,
|
836
859
|
oci_la_log_group_id: metricsLabels.logGroupId,
|
837
860
|
oci_la_log_source_name: metricsLabels.logSourceName,
|
838
861
|
oci_la_log_set: metricsLabels.logSet,
|
839
862
|
reason: metricsLabels.invalid_reason})
|
840
|
-
@@prometheusMetrics.records_valid.set(valid_messages, labels: {
|
863
|
+
@@prometheusMetrics.records_valid.set(valid_messages, labels: { worker_id: metricsLabels.worker_id,
|
864
|
+
tag: key,
|
841
865
|
oci_la_log_group_id: metricsLabels.logGroupId,
|
842
866
|
oci_la_log_source_name: metricsLabels.logSourceName,
|
843
867
|
oci_la_log_set: metricsLabels.logSet})
|
@@ -875,7 +899,7 @@ module Fluent::Plugin
|
|
875
899
|
end
|
876
900
|
end
|
877
901
|
}.real.round(3)
|
878
|
-
@@prometheusMetrics.chunk_time_to_upload.observe(chunk_upload_time_taken, labels: { oci_la_log_group_id: oci_la_log_group_id})
|
902
|
+
@@prometheusMetrics.chunk_time_to_upload.observe(chunk_upload_time_taken, labels: { worker_id: @@worker_id, oci_la_log_group_id: oci_la_log_group_id})
|
879
903
|
|
880
904
|
end
|
881
905
|
ensure
|
@@ -956,7 +980,7 @@ module Fluent::Plugin
|
|
956
980
|
@@logger.debug {"Added entry #{nextEntry} for oci_la_log_set #{oci_la_log_set} into the zip."}
|
957
981
|
zos.put_next_entry(nextEntry)
|
958
982
|
logEventsJsonFinal = LogEventsJson.new(oci_la_global_metadata,lrpes_for_logEvents)
|
959
|
-
zos.write logEventsJsonFinal.to_hash
|
983
|
+
zos.write Yajl.dump(logEventsJsonFinal.to_hash)
|
960
984
|
end
|
961
985
|
}
|
962
986
|
zippedstream.rewind
|
@@ -1002,13 +1026,15 @@ module Fluent::Plugin
|
|
1002
1026
|
opts)
|
1003
1027
|
if !response.nil? && response.status == 200 then
|
1004
1028
|
headers = response.headers
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1029
|
+
if metricsLabels_array != nil
|
1030
|
+
metricsLabels_array.each { |metricsLabels|
|
1031
|
+
@@prometheusMetrics.records_posted.set(metricsLabels.records_valid, labels: { worker_id: metricsLabels.worker_id,
|
1032
|
+
tag: metricsLabels.tag,
|
1033
|
+
oci_la_log_group_id: metricsLabels.logGroupId,
|
1034
|
+
oci_la_log_source_name: metricsLabels.logSourceName,
|
1035
|
+
oci_la_log_set: metricsLabels.logSet})
|
1036
|
+
}
|
1037
|
+
end
|
1012
1038
|
|
1013
1039
|
#zippedstream.rewind #reposition buffer pointer to the beginning
|
1014
1040
|
#zipfile = zippedstream&.sysread&.dup
|
@@ -1087,9 +1113,10 @@ module Fluent::Plugin
|
|
1087
1113
|
error_reason = ex
|
1088
1114
|
@@logger.error {"oci upload exception : Error while uploading the payload. #{ex}"}
|
1089
1115
|
ensure
|
1090
|
-
if error_reason != nil
|
1116
|
+
if error_reason != nil && metricsLabels_array != nil
|
1091
1117
|
metricsLabels_array.each { |metricsLabels|
|
1092
|
-
@@prometheusMetrics.records_error.set(metricsLabels.records_valid, labels: {
|
1118
|
+
@@prometheusMetrics.records_error.set(metricsLabels.records_valid, labels: {worker_id: metricsLabels.worker_id,
|
1119
|
+
tag: metricsLabels.tag,
|
1093
1120
|
oci_la_log_group_id: metricsLabels.logGroupId,
|
1094
1121
|
oci_la_log_source_name: metricsLabels.logSourceName,
|
1095
1122
|
oci_la_log_set: metricsLabels.logSet,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-oci-logging-analytics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oracle
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-04-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -93,14 +93,34 @@ dependencies:
|
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 4.0.0
|
97
97
|
type: :runtime
|
98
98
|
prerelease: false
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 4.0.0
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: yajl-ruby
|
106
|
+
requirement: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.4'
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 1.4.3
|
114
|
+
type: :runtime
|
115
|
+
prerelease: false
|
116
|
+
version_requirements: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - "~>"
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '1.4'
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 1.4.3
|
104
124
|
description: OCI Logging Analytics Fluentd output plugin for ingesting the collected
|
105
125
|
log events to OCI Logging Analytics.
|
106
126
|
email:
|