@@ -92,6 +92,8 @@ class OutOracleOCILogAnalytics < Output
92
92
config_param :endpoint , :string , :default => nil
93
93
desc 'AuthType to be used.'
94
94
config_param :auth_type , :string , :default => 'InstancePrincipal'
95
+ desc 'OCI Domain'
96
+ config_param :oci_domain , :string , :default => nil
95
97
desc 'Enable local payload dump.'
96
98
config_param :dump_zip_file , :bool , :default => false
97
99
desc 'Payload zip File Location.'
@@ -249,34 +251,62 @@ def initialize_loganalytics_client()
249
251
if is_valid ( @config_file_location )
250
252
@auth_type = "ConfigFile"
251
253
end
254
+
252
255
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 } "
277
264
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"
280
310
end
281
311
282
312
if is_valid ( @proxy_ip ) && is_number ( @proxy_port )
@@ -288,13 +318,18 @@ def initialize_loganalytics_client()
288
318
end
289
319
290
320
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 } " }
294
324
end
295
325
296
326
def configure ( conf )
297
327
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
+
298
333
@@prometheusMetrics = PrometheusMetrics . instance
299
334
initialize_logger
300
335
0 commit comments