Minio - Fluent Bit

Description

The Minio Plugin allows to send files to Minio. It uses the GO interface provided by Fluent Bit.

Difference with Fluent Bit S3 Plugin

The S3 plugin sends data as JSON to S3 or Minio but does not send files (e.g yaml, images etc.).

Parameters

ParameterDescriptionTypeDefault
plugin_pathShared library path compiled by go.str"{package_share_directory}/flb_plugins/lib/out_minio.so"
endpointEndpoint for the S3 API. An endpoint can contain scheme and port.str"127.0.0.1:9000"
access_key_idAccess keys are long-term credentials for an IAM user or the AWS account root user.strN/A (mandatory)
secret_access_keySecret-like password to connect along he access key id.strN/A (mandatory)
use_sslIf set to true, https is used instead of http. Default is true.str"true"
create_bucketWhether the bucket will be created.str"true"
bucketBucket name.str"dc_bucket"
upload_fieldsFields containing remote paths, separated by dots.list[str]N/A (mandatory)
src_fieldsFields containing local paths, separated by dots.list[str]N/A (mandatory)

Node configuration

...
flb_minio:
  verbose_plugin: false
  time_format: "iso8601"
  plugin: "dc_destinations/FlbMinIO"
  inputs: ["/dc/measurement/camera", "/dc/measurement/map"]
  endpoint: 127.0.0.1:9000
  access_key_id: XEYqG4ZcPY5jiq5i
  secret_access_key: ji011KCtI82ZeQS6UwsQAg8x9VR4lSaQ
  use_ssl: false
  create_bucket: true
  bucket: "mybucket"
  src_fields:
    [
      "local_paths.inspected"
      "local_paths.minio.pgm"
      "local_paths.minio.yaml"
    ]
  upload_fields: # Remote paths created by the measurement node configuration
    [
      "remote_paths.minio.inspected",
      "remote_paths.minio.pgm"
      "remote_paths.minio.yaml"
    ]
...

Parameter handling

flowchart TB

  subgraph ros2_plugin["Measurement plugin"]
    direction LR
    mp_src_fields["['local_paths.inspected', 'local_paths.minio.pgm', 'local_paths.minio.yaml']"]
    mp_upload_fields["['remote_paths.inspected', 'remote_paths.minio.pgm', 'remote_paths.minio.yaml']"]
  end

  subgraph flb_plugin["Fluent Bit plugin"]
    direction LR
    flb_src_fields["'local_paths.inspected, local_paths.minio.pgm, local_paths.minio.yaml'"]
    flb_upload_fields["'remote_paths.inspected, remote_paths.minio.pgm, remote_paths.minio.yaml'"]

    flb_split_src_fields["['local_paths.inspected', 'local_paths.minio.pgm', 'local_paths.minio.yaml']"]
    flb_split_upload_fields["['remote_paths.inspected', 'remote_paths.minio.pgm', 'remote_paths.minio.yaml']"]
  end

  mp_src_fields--"to string"-->flb_src_fields
  mp_upload_fields--"to string"-->flb_upload_fields
  flb_src_fields--"to go array"-->flb_split_src_fields
  flb_upload_fields--"to go array"-->flb_split_upload_fields