Azure Blob
Microsoft certified Azure Storage Blob connector
The Azure Blob output plugin allows ingesting your records into Azure Blob Storage service. This connector is designed to use the Append Blob and Block Blob API.
The Fluent Bit plugin works with the official Azure Service and can be configured to be used with a service emulator such as Azurite.
Azure Storage account
Ensure you have an Azure Storage account. Azure Blob Storage Tutorial (Video) explains how to set up your account.
Configuration parameters
Fluent Bit exposes the following configuration properties.
account_name
Azure Storage account name.
none
auth_type
Specify the type to authenticate against the service. Supported values: key
, sas
.
key
shared_key
Specify the Azure Storage Shared Key to authenticate against the service. This configuration property is mandatory when auth_type
is key
.
none
sas_token
Specify the Azure Storage shared access signatures to authenticate against the service. This configuration property is mandatory when auth_type
is sas
.
none
container_name
Name of the container that will contain the blobs.
none
blob_type
Specify the desired blob type. Supported values: appendblob
, blockblob
.
appendblob
auto_create_container
If container_name
doesn't exist in the remote service, enabling this option handles the exception and auto-creates the container.
on
path
Optional. The path to store your blobs. If your blob name is myblob
, specify subdirectories for storage using path
. For example, setting path
to /logs/kubernetes
will store your blob in /logs/kubernetes/myblob
.
none
compress
Sets payload compression in network transfer. Supported value: gzip
none
compress_blob
Enables GZIP compression in the final blockblob
file. This option isn't compatible when blob_type
= appendblob
.
none
emulator_mode
To send data to an Azure emulator service like Azurite, enable this option to format the requests in the expected format.
off
endpoint
When using an emulator, this option lets you specify the absolute HTTP address of such service. For example, http://127.0.0.1:10000
.
none
tls
Enable or disable TLS encryption. Azure service requires this to be set to on
.
off
buffering_enabled
Enable buffering into disk before ingesting into Azure Blob.
false
buffer_dir
Specifies the location of directory where the buffered data will be stored.
/tmp/fluent-bit/azure-blob/
upload_timeout
Optional. Specify a timeout for uploads. Fluent Bit will start ingesting buffer files which have been created more than x
minutes and ago haven't reached upload_file_size
limit yet.
30m
upload_file_size
Specifies the size of files to be uploaded in MB.
200M
azure_blob_buffer_key
Set the Azure Blob buffer key which needs to be specified when using multiple instances of Azure Blob output plugin and buffering is enabled.
key
store_dir_limit_size
Set the max size of the buffer directory.
8G
buffer_file_delete_early
Whether to delete the buffered file early after successful blob creation.
false
blob_uri_length
Set the length of generated blob URI before ingesting to Azure Kusto.
64
unify_tag
Whether to create a single buffer file when buffering mode is enabled.
false
scheduler_max_retries
Maximum number of retries for the scheduler send blob.
3
delete_on_max_upload_error
Whether to delete the buffer file on maximum upload errors.
false
io_timeout
HTTP IO timeout.
60s
Get started
Fluent Bit can deliver records to the official service or an emulator.
Configuration for Azure Storage Service
The following configuration example generates a random message with a custom tag:
service:
flush: 1
log_level: info
pipeline:
inputs:
- name: dummy
dummy: '{"name": "Fluent Bit", "year": 2020}'
samples: 1
tag: var.log.containers.app-default-96cbdef2340.log
outputs:
- name: azure_blog
match: "*"
account_name: YOUR_ACCOUNT_NAME
shared_key: YOUR_SHARED_KEY
path: kubernetes
container_name: logs
auto_create_container: on
tls: on
After you run the configuration file, you will be able to query the data using the Azure Storage Explorer. The example generates the following content in the explorer:

Configuring and using Azure Emulator: Azurite
Install and run Azurite
Install Azurite using
npm
:npm install -g azurite
Run the service:
azurite
The command should return results similar to:
Azurite Blob service is starting at http://127.0.0.1:10000 Azurite Blob service is successfully listening at http://127.0.0.1:10000 Azurite Queue service is starting at http://127.0.0.1:10001 Azurite Queue service is successfully listening at http://127.0.0.1:10001
Configuring Fluent Bit for Azurite
Azurite comes with a default account_name
and shared_key
. Instead of the defaults, be sure to use the specific values provided in the following example:
service:
flush: 1
log_level: info
pipeline:
inputs:
- name: dummy
dummy: '{"name": "Fluent Bit", "year": 2020}'
samples: 1
tag: var.log.containers.app-default-96cbdef2340.log
outputs:
- name: azure_blog
match: "*"
account_name: INSERT_ACCOUNT_NAME
shared_key: INSERT_SHARED_KEY
path: kubernetes
container_name: logs
auto_create_container: on
tls: off
emulator_mode: on
endpoint: http://127.0.0.1:10000
After running the Fluent Bit configuration, you will see the data flowing into Azurite:
$ azurite
Azurite Blob service is starting at http://127.0.0.1:10000
Azurite Blob service is successfully listening at http://127.0.0.1:10000
Azurite Queue service is starting at http://127.0.0.1:10001
Azurite Queue service is successfully listening at http://127.0.0.1:10001
127.0.0.1 - - [03/Sep/2020:17:40:03 +0000] "GET /devstoreaccount1/logs?restype=container HTTP/1.1" 404 -
127.0.0.1 - - [03/Sep/2020:17:40:03 +0000] "PUT /devstoreaccount1/logs?restype=container HTTP/1.1" 201 -
127.0.0.1 - - [03/Sep/2020:17:40:03 +0000] "PUT /devstoreaccount1/logs/kubernetes/var.log.containers.app-default-96cbdef2340.log?comp=appendblock HTTP/1.1" 404 -
127.0.0.1 - - [03/Sep/2020:17:40:03 +0000] "PUT /devstoreaccount1/logs/kubernetes/var.log.containers.app-default-96cbdef2340.log HTTP/1.1" 201 -
127.0.0.1 - - [03/Sep/2020:17:40:04 +0000] "PUT /devstoreaccount1/logs/kubernetes/var.log.containers.app-default-96cbdef2340.log?comp=appendblock HTTP/1.1" 201 -
Last updated
Was this helpful?