Class: Fluent::Plugin::OCILoggingOutput
- Inherits:
-
Output
- Object
- Output
- Fluent::Plugin::OCILoggingOutput
- Includes:
- PublicLoggingSetup, PublicLoggingUtils
- Defined in:
- lib/fluent/plugin/out_oci_logging.rb
Overview
OCI Logging Fluentd Output plugin
Constant Summary collapse
- PAYLOAD_SIZE =
restricting payload size at 9MB
9*1024*1024
Constants included from PublicLoggingSetup
PublicLoggingSetup::AUTO_SIGNER_TYPE, PublicLoggingSetup::LINUX_OCI_CONFIG_DIR, PublicLoggingSetup::PUBLIC_DEFAULT_DEBIAN_CA_PATH, PublicLoggingSetup::PUBLIC_DEFAULT_LINUX_CA_PATH, PublicLoggingSetup::PUBLIC_DEFAULT_UBUNTU_CA_PATH, PublicLoggingSetup::PUBLIC_DEFAULT_WINDOWS_CA_PATH, PublicLoggingSetup::PUBLIC_RESOURCE_PRINCIPAL_ENV_FILE, PublicLoggingSetup::R1_CA_PATH, PublicLoggingSetup::RETRIES, PublicLoggingSetup::USER_CONFIG_PROFILE_NAME, PublicLoggingSetup::USER_SIGNER_TYPE, PublicLoggingSetup::WINDOWS_OCI_CONFIG_DIR
Constants included from PublicLoggingUtils
PublicLoggingUtils::PUBLIC_CLIENT_SPEC_VERSION, PublicLoggingUtils::PUBLIC_LOGGING_PREFIX
Instance Attribute Summary collapse
-
#client ⇒ Object
Returns the value of attribute client.
-
#hostname ⇒ Object
Returns the value of attribute hostname.
Instance Method Summary collapse
- #configure(conf) ⇒ Object
- #start ⇒ Object
-
#write(chunk) ⇒ Object
Sync Buffered Output ############################## Implement write() if your plugin uses a normal buffer.
Methods included from PublicLoggingSetup
#add_rp_env_override, #create_instance_principal_signer, #create_resource_principal_signer, #get_federation_endpoint, #get_host_info_for_non_oci_instance, #get_host_info_for_oci_instance, #get_instance_md, #get_instance_md_with_retry, #get_instance_md_with_url, #get_logging_endpoint, #get_signer, #get_signer_type, #logger, #set_default_ca_file
Methods included from PublicLoggingUtils
#build_request, determine_config_profile_name, determine_linux_config_path, determine_windows_config_path, #encode_to_utf8, #flatten_hash, #get_modified_tag, #get_put_logs_details_request, #send_requests
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
41 42 43 |
# File 'lib/fluent/plugin/out_oci_logging.rb', line 41 def client @client end |
#hostname ⇒ Object
Returns the value of attribute hostname.
41 42 43 |
# File 'lib/fluent/plugin/out_oci_logging.rb', line 41 def hostname @hostname end |
Instance Method Details
#configure(conf) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/fluent/plugin/out_oci_logging.rb', line 47 def configure(conf) super log.debug 'determining the signer type' oci_config, signer_type = get_signer_type(principal_override: @principal_override) signer = get_signer(oci_config, signer_type) log.info "using authentication principal #{signer_type}" @client = OCI::Loggingingestion::LoggingClient.new( config: oci_config, endpoint: get_logging_endpoint(@region, logging_endpoint_override: @logging_endpoint_override), signer: signer, proxy_settings: nil, retry_config: nil ) @client.api_client.request_option_overrides = { ca_file: @ca_file } end |
#start ⇒ Object
66 67 68 69 |
# File 'lib/fluent/plugin/out_oci_logging.rb', line 66 def start super log.debug 'start' end |
#write(chunk) ⇒ Object
Sync Buffered Output ############################## Implement write() if your plugin uses a normal buffer.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/fluent/plugin/out_oci_logging.rb', line 74 def write(chunk) log.debug "writing chunk metadata #{chunk.metadata}", \ dump_unique_id_hex(chunk.unique_id) log_batches_map = {} # For standard chunk format (without #format() method) size = 0 chunk.each do |time, record| begin tag = get_modified_tag(chunk..tag) source_identifier = record.key?('tailed_path') ? record['tailed_path'] : '' content = flatten_hash(record) size += content.to_json.bytesize build_request(time, record, tag, log_batches_map, source_identifier) if size >= PAYLOAD_SIZE log.info "Exceeding payload size. Size : #{size}" send_requests(log_batches_map) log_batches_map = {} size = 0 end rescue StandardError => e log.error(e.) end end # flushing data to LJ unless log_batches_map.empty? log.info "Payload size : #{size}" send_requests(log_batches_map) end end |