@@ -92,6 +92,8 @@ class OutOracleOCILogAnalytics < Output
9292 config_param :endpoint , :string , :default => nil
9393 desc 'AuthType to be used.'
9494 config_param :auth_type , :string , :default => 'InstancePrincipal'
95+ desc 'OCI Domain'
96+ config_param :oci_domain , :string , :default => nil
9597 desc 'Enable local payload dump.'
9698 config_param :dump_zip_file , :bool , :default => false
9799 desc 'Payload zip File Location.'
@@ -249,34 +251,62 @@ def initialize_loganalytics_client()
249251 if is_valid ( @config_file_location )
250252 @auth_type = "ConfigFile"
251253 end
254+
252255 case @auth_type
253- when "InstancePrincipal"
254- instance_principals_signer = OCI ::Auth ::Signers ::InstancePrincipalsSecurityTokenSigner . new
255- if is_valid ( @endpoint )
256- @@loganalytics_client = OCI ::LogAnalytics ::LogAnalyticsClient . new ( config : OCI ::Config . new , endpoint : @endpoint , signer : instance_principals_signer )
257- @@logger . info { "loganalytics_client initialised with endpoint: #{ @endpoint } " }
258- else
259- @@loganalytics_client = OCI ::LogAnalytics ::LogAnalyticsClient . new ( config : OCI ::Config . new , signer : instance_principals_signer )
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
269- when "ConfigFile"
270- my_config = OCI ::ConfigFileLoader . load_config ( config_file_location : @config_file_location , profile_name : @profile_name )
271- if is_valid ( @endpoint )
272- @@loganalytics_client = OCI ::LogAnalytics ::LogAnalyticsClient . new ( config : my_config , endpoint : @endpoint )
273- @@logger . info { "loganalytics_client initialised with endpoint: #{ @endpoint } " }
274- else
275- @@loganalytics_client = OCI ::LogAnalytics ::LogAnalyticsClient . new ( config :my_config )
276- end
256+ when "InstancePrincipal"
257+ instance_principals_signer = nil
258+ la_endpoint = nil
259+ if is_valid ( @oci_domain )
260+ fedration_endpoint = "https://auth.#{ @oci_domain } /v1/x509"
261+ instance_principals_signer = OCI ::Auth ::Signers ::InstancePrincipalsSecurityTokenSigner . new (
262+ federation_endpoint : fedration_endpoint )
263+ @@logger . info "Custom Federation Endpoint: #{ fedration_endpoint } "
277264 else
278- raise Fluent ::ConfigError , "Invalid authType @auth_type, authType must be either InstancePrincipal or ConfigFile."
279- abort
265+ instance_principals_signer = OCI ::Auth ::Signers ::InstancePrincipalsSecurityTokenSigner . new
266+ end
267+ if is_valid ( @endpoint )
268+ la_endpoint = @endpoint
269+ @@logger . info "Initializing loganalytics_client with endpoint: #{ la_endpoint } "
270+ elsif is_valid ( @oci_domain )
271+ la_endpoint = "https://loganalytics.#{ @oci_domain } "
272+ @@logger . info "Initializing loganalytics_client with custom domain endpoint: #{ la_endpoint } "
273+ end
274+ @@loganalytics_client = OCI ::LogAnalytics ::LogAnalyticsClient . new (
275+ config : OCI ::Config . new ,
276+ endpoint : la_endpoint ,
277+ signer : instance_principals_signer )
278+ @@logger . info 'loganalytics_client initialized.'
279+ when "WorkloadIdentity"
280+ la_endpoint = nil
281+ workload_identity_signer = OCI ::Auth ::Signers ::oke_workload_resource_principal_signer
282+ if is_valid ( @endpoint )
283+ la_endpoint = @endpoint
284+ @@logger . info "Initializing loganalytics_client with endpoint: #{ @endpoint } "
285+ elsif is_valid ( @oci_domain )
286+ la_endpoint = "https://loganalytics.#{ @oci_domain } "
287+ @@logger . info "Initializing loganalytics_client with custom domain endpoint: #{ la_endpoint } "
288+ end
289+ @@loganalytics_client = OCI ::LogAnalytics ::LogAnalyticsClient . new (
290+ config : OCI ::Config . new ,
291+ endpoint : la_endpoint ,
292+ signer : workload_identity_signer )
293+ @@logger . info 'loganalytics_client initialized.'
294+ when "ConfigFile"
295+ my_config = OCI ::ConfigFileLoader . load_config (
296+ config_file_location : @config_file_location ,
297+ profile_name : @profile_name )
298+ la_endpoint = nil
299+ if is_valid ( @endpoint )
300+ la_endpoint = @endpoint
301+ @@logger . info "Initializing loganalytics_client with endpoint: #{ la_endpoint } "
302+ elsif is_valid ( @oci_domain )
303+ la_endpoint = "https://loganalytics.#{ @oci_domain } "
304+ @@logger . info "Initializing loganalytics_client with custom domain endpoint: #{ la_endpoint } "
305+ end
306+ @@loganalytics_client = OCI ::LogAnalytics ::LogAnalyticsClient . new ( config : my_config , endpoint : la_endpoint )
307+ @@logger . info 'loganalytics_client initialised'
308+ else
309+ raise Fluent ::ConfigError , "Invalid authType: #{ @auth_type } , valid inputs are - InstancePrincipal, ConfigFile, WorkloadIdentity"
280310 end
281311
282312 if is_valid ( @proxy_ip ) && is_number ( @proxy_port )
@@ -288,13 +318,18 @@ def initialize_loganalytics_client()
288318 end
289319
290320 rescue => ex
291- @@logger . error { "Error occurred while initializing LogAnalytics Client:
292- authType: #{ @auth_type } ,
293- errorMessage: #{ ex } " }
321+ @@logger . error { "Error occurred while initializing LogAnalytics Client:
322+ authType: #{ @auth_type } ,
323+ errorMessage: #{ ex } " }
294324 end
295325
296326 def configure ( conf )
297327 super
328+
329+ if is_valid ( @oci_domain ) && !@oci_domain . match ( /\S .oci.\S / )
330+ raise Fluent ::ConfigError , "Invalid oci_domain: #{ @oci_domain } , valid fmt: <oci-region>.oci.<oci-domain> | ex: us-ashburn-1.oci.oraclecloud.com"
331+ end
332+
298333 @@prometheusMetrics = PrometheusMetrics . instance
299334 initialize_logger
300335
0 commit comments