fluent-plugin-oci-logging-analytics 2.0.6 → 2.0.7

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: da1ab666ee3e8c8dd828f2c929290f652a9c6d8a2bda423970eb809c700639da
4
- data.tar.gz: 14b8caa8d04efb8f3b38043b061dc82c28a4ace4f91661417d9c16a8ced51b37
3
+ metadata.gz: 5b41804c02cd5e1dd39efc4c600f043cbed2a90972aabc39671c830fedcafe67
4
+ data.tar.gz: 24fc404d3f0f4d06f2e9f2167d7bc4fff337a235f9671e7e024ce71763750cb8
5
5
  SHA512:
6
- metadata.gz: d07374a5e2556eaba00f47dd68b967a06b8c1449eb38496dc76e1fc87bf63e400078494f5559b4e52d628344bf730659c3cbdd621d58c88fa74c92a742753992
7
- data.tar.gz: 47ba0f5b4d056c20c4ddc0c8938e3cbc718e65e108235ee41ec6d8d31b24f9d48db6da059840f18ecb01f309c62c2b4929c48002d70e6cd04cafb83d8107cfac
6
+ metadata.gz: a779a1971cabf78edf2c0b14ae6ba06235ce4113fe0ded3b264d626baba6c7f82f3aabdcb029890cb52697b2b01ae119691c7412e7920c79ada71ce8ed060fff
7
+ data.tar.gz: ef679bc249d8d16bc12a447f158c19faea8425c98170aecfbd7053da7d4081876f2b830f7c59dcef50e4abb9422d8e2cac30e91c16bffc4cf8e33072f931fe9c
@@ -1,10 +1,10 @@
1
- ## Copyright (c) 2021, 2022 Oracle and/or its affiliates.
1
+ ## Copyright (c) 2021, 2024 Oracle and/or its affiliates.
2
2
  ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
3
 
4
4
  class LogEvents
5
- attr_accessor :entityId, :entityType, :logSourceName, :logPath, :logRecords , :metadata
5
+ attr_accessor :entityId, :entityType, :logSourceName, :logPath, :logRecords , :metadata, :timezone
6
6
  def initialize(lrpe_key, fluentd_records)
7
- @metadata, @entityId, @entityType, @logSourceName, @logPath = lrpe_key
7
+ @metadata, @entityId, @entityType, @logSourceName, @logPath, @timezone = lrpe_key
8
8
  @logRecords = fluentd_records.map{ |record|
9
9
  record['message']
10
10
  }
@@ -17,8 +17,9 @@ class LogEvents
17
17
  entityType: @entityType,
18
18
  logSourceName: @logSourceName,
19
19
  logPath: @logPath,
20
- logRecords: @logRecords
20
+ logRecords: @logRecords,
21
+ timezone:@timezone
21
22
  }.compact
22
23
  end
23
-
24
+
24
25
  end
@@ -1,4 +1,4 @@
1
- ## Copyright (c) 2021, 2022 Oracle and/or its affiliates.
1
+ ## Copyright (c) 2021, 2024 Oracle and/or its affiliates.
2
2
  ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
3
 
4
4
  require_relative './logEvents'
@@ -20,5 +20,5 @@ class LogEventsJson
20
20
  end
21
21
  }.compact
22
22
  end
23
-
23
+
24
24
  end
@@ -0,0 +1,7 @@
1
+ ## Copyright (c) 2024 Oracle and/or its affiliates.
2
+ ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
+
4
+ module Source
5
+ FLUENTD = :fluentd
6
+ KUBERNETES_SOLUTION = :kubernetes_solution
7
+ end
@@ -1,5 +1,8 @@
1
+ ## Copyright (c) 2021, 2024 Oracle and/or its affiliates.
2
+ ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
+
1
4
  class MetricsLabels
2
- attr_accessor :worker_id, :tag, :logGroupId, :logSourceName, :logSet, :invalid_reason, :records_valid, :records_per_tag, :latency
5
+ attr_accessor :worker_id, :tag, :logGroupId, :logSourceName, :logSet, :invalid_reason, :records_valid, :records_per_tag, :latency,:timezone
3
6
  def initialize
4
7
  @worker_id = nil
5
8
  @tag = nil
@@ -10,5 +13,6 @@ class MetricsLabels
10
13
  @records_valid = 0
11
14
  @records_per_tag = 0
12
15
  @latency = 0
16
+ @timezone = nil
13
17
  end
14
- end
18
+ end
@@ -1,3 +1,6 @@
1
+ ## Copyright (c) 2021, 2024 Oracle and/or its affiliates.
2
+ ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
+
1
4
  require 'prometheus/client'
2
5
  require 'prometheus/client/registry'
3
6
  require 'prometheus/client/gauge'
@@ -35,4 +38,4 @@ class PrometheusMetrics
35
38
  registry.register(@chunk_time_to_receive) unless registry.exist?('oci_la_fluentd_output_plugin_chunk_time_to_receive')
36
39
  registry.register(@chunk_time_to_upload) unless registry.exist?('oci_la_fluentd_output_plugin_chunk_time_to_post')
37
40
  end
38
- end
41
+ end
@@ -1,4 +1,4 @@
1
- ## Copyright (c) 2021, 2022 Oracle and/or its affiliates.
1
+ ## Copyright (c) 2021, 2024 Oracle and/or its affiliates.
2
2
  ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
3
 
4
4
  require 'fluent/plugin/output'
@@ -7,11 +7,13 @@ require 'zip'
7
7
  require 'yajl'
8
8
  require 'yajl/json_gem'
9
9
 
10
+ # require 'tzinfo'
10
11
  require 'logger'
11
12
  require_relative '../dto/logEventsJson'
12
13
  require_relative '../dto/logEvents'
13
14
  require_relative '../metrics/prometheusMetrics'
14
15
  require_relative '../metrics/metricsLabels'
16
+ require_relative '../enums/source'
15
17
 
16
18
  # Import only specific OCI modules to improve load times and reduce the memory requirements.
17
19
  require 'oci/auth/auth'
@@ -36,7 +38,6 @@ require 'oci/version'
36
38
  require 'oci/waiter'
37
39
  require 'oci/retry/retry'
38
40
  require 'oci/object_storage/object_storage'
39
-
40
41
  module OCI
41
42
  class << self
42
43
  attr_accessor :sdk_name
@@ -97,7 +98,8 @@ module Fluent::Plugin
97
98
  config_param :zip_file_location, :string, :default => nil
98
99
  desc 'The kubernetes_metadata_keys_mapping.'
99
100
  config_param :kubernetes_metadata_keys_mapping, :hash, :default => {"container_name":"Container","namespace_name":"Namespace","pod_name":"Pod","container_image":"Container Image Name","host":"Node"}
100
-
101
+ desc 'opc-meta-properties'
102
+ config_param :collection_source, :string, :default => Source::FLUENTD
101
103
 
102
104
  #****************************************************************
103
105
  desc 'The http proxy to be used.'
@@ -256,6 +258,14 @@ module Fluent::Plugin
256
258
  else
257
259
  @@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config: OCI::Config.new, signer: instance_principals_signer)
258
260
  end
261
+ when "WorkloadIdentity"
262
+ workload_identity_signer = OCI::Auth::Signers::oke_workload_resource_principal_signer
263
+ if is_valid(@endpoint)
264
+ @@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config: OCI::Config.new, endpoint: @endpoint, signer: workload_identity_signer)
265
+ @@logger.info {"loganalytics_client initialised with endpoint: #{@endpoint}"}
266
+ else
267
+ @@loganalytics_client = OCI::LogAnalytics::LogAnalyticsClient.new(config: OCI::Config.new, signer: workload_identity_signer)
268
+ end
259
269
  when "ConfigFile"
260
270
  my_config = OCI::ConfigFileLoader.load_config(config_file_location: @config_file_location, profile_name: @profile_name)
261
271
  if is_valid(@endpoint)
@@ -628,6 +638,8 @@ module Fluent::Plugin
628
638
  latency = 0
629
639
  records_per_tag = 0
630
640
 
641
+
642
+
631
643
  tag_metrics_set = Hash.new
632
644
  logGroup_labels_set = Hash.new
633
645
 
@@ -637,8 +649,8 @@ module Fluent::Plugin
637
649
  tags_per_logGroupId = Hash.new
638
650
  tag_logSet_map = Hash.new
639
651
  tag_metadata_map = Hash.new
652
+ timezoneValuesByTag = Hash.new
640
653
  incoming_records = 0
641
-
642
654
  chunk.each do |time, record|
643
655
  incoming_records += 1
644
656
  metricsLabels = MetricsLabels.new
@@ -722,6 +734,8 @@ module Fluent::Plugin
722
734
  end
723
735
  next
724
736
  end
737
+
738
+ # metricsLabels.timezone = record["oci_la_timezone"]
725
739
  metricsLabels.logGroupId = record["oci_la_log_group_id"]
726
740
  metricsLabels.logSourceName = record["oci_la_log_source_name"]
727
741
  if record["oci_la_log_set"] != nil
@@ -770,6 +784,25 @@ module Fluent::Plugin
770
784
  tags_per_logGroupId[record["oci_la_log_group_id"]] = record["tag"]
771
785
  end
772
786
  end
787
+ # validating the timezone field
788
+ if !timezoneValuesByTag.has_key?(record["tag"])
789
+ begin
790
+ timezoneIdentifier = record["oci_la_timezone"]
791
+ unless is_valid(timezoneIdentifier)
792
+ record["oci_la_timezone"] = nil
793
+ else
794
+ isTimezoneExist = timezone_exist? timezoneIdentifier
795
+ unless isTimezoneExist
796
+ @@logger.warn { "Invalid timezone '#{timezoneIdentifier}', using default UTC." }
797
+ record["oci_la_timezone"] = "UTC"
798
+ end
799
+
800
+ end
801
+ timezoneValuesByTag[record["tag"]] = record["oci_la_timezone"]
802
+ end
803
+ else
804
+ record["oci_la_timezone"] = timezoneValuesByTag[record["tag"]]
805
+ end
773
806
 
774
807
  records << record
775
808
  ensure
@@ -916,6 +949,14 @@ module Fluent::Plugin
916
949
  end
917
950
  end
918
951
  end
952
+ def timezone_exist?(tz)
953
+ begin
954
+ TZInfo::Timezone.get(tz)
955
+ return true
956
+ rescue TZInfo::InvalidTimezoneIdentifier
957
+ return false
958
+ end
959
+ end
919
960
 
920
961
  # Each oci_la_log_set will correspond to a separate file in the zip
921
962
  # Only MAX_FILES_PER_ZIP files are allowed per zip.
@@ -958,6 +999,21 @@ module Fluent::Plugin
958
999
 
959
1000
  # takes a fluentD chunk and converts it to an in-memory zipfile, populating metrics hash provided
960
1001
  # Any exception raised is passed into the metrics hash, to be re-thrown from write()
1002
+ def getCollectionSource(input)
1003
+ collections_src = []
1004
+ if !is_valid input
1005
+ collections_src.unshift("source:#{Source::FLUENTD}")
1006
+ else
1007
+ if input == Source::FLUENTD.to_s or input == Source::KUBERNETES_SOLUTION.to_s
1008
+ collections_src.unshift("source:#{input}")
1009
+ else
1010
+ # source not define ! using default source 'fluentd'
1011
+ collections_src.unshift("source:#{Source::FLUENTD}")
1012
+ end
1013
+ end
1014
+ collections_src
1015
+ end
1016
+
961
1017
  def get_zipped_stream(oci_la_log_group_id,oci_la_global_metadata,records_per_logSet_map)
962
1018
  begin
963
1019
  current, = Time.now
@@ -970,8 +1026,9 @@ module Fluent::Plugin
970
1026
  record['oci_la_metadata'],
971
1027
  record['oci_la_entity_id'],
972
1028
  record['oci_la_entity_type'],
973
- record['oci_la_log_source_name'] ,
974
- record['oci_la_log_path']
1029
+ record['oci_la_log_source_name'],
1030
+ record['oci_la_log_path'],
1031
+ record['oci_la_timezone']
975
1032
  ]}.map { |lrpe_key, records_per_lrpe|
976
1033
  number_of_records += records_per_lrpe.length
977
1034
  LogEvents.new(lrpe_key, records_per_lrpe)
@@ -1021,9 +1078,10 @@ module Fluent::Plugin
1021
1078
  # upload zipped stream to oci
1022
1079
  def upload_to_oci(oci_la_log_group_id, number_of_records, zippedstream, metricsLabels_array)
1023
1080
  begin
1081
+ collection_src_prop = getCollectionSource @collection_source
1024
1082
  error_reason = nil
1025
1083
  error_code = nil
1026
- opts = {payload_type: "ZIP"}
1084
+ opts = { payload_type: "ZIP", opc_meta_properties:collection_src_prop}
1027
1085
 
1028
1086
  response = @@loganalytics_client.upload_log_events_file(namespace_name=@namespace,
1029
1087
  logGroupId=oci_la_log_group_id ,
@@ -0,0 +1,8 @@
1
+ ## Copyright (c) 2024 Oracle and/or its affiliates.
2
+ ## The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/
3
+
4
+ # frozen_string_literal: true
5
+
6
+ module Version
7
+ VERSION = "2.0.7".freeze
8
+ end
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.6
4
+ version: 2.0.7
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: 2024-02-05 00:00:00.000000000 Z
12
+ date: 2024-10-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -131,9 +131,11 @@ extra_rdoc_files: []
131
131
  files:
132
132
  - lib/fluent/dto/logEvents.rb
133
133
  - lib/fluent/dto/logEventsJson.rb
134
+ - lib/fluent/enums/source.rb
134
135
  - lib/fluent/metrics/metricsLabels.rb
135
136
  - lib/fluent/metrics/prometheusMetrics.rb
136
137
  - lib/fluent/plugin/out_oci-logging-analytics.rb
138
+ - lib/fluent/version/version.rb
137
139
  homepage:
138
140
  licenses:
139
141
  - UPL-1.0