HTTP

The http output plugin allows to flush your records into a HTTP endpoint. For now the functionality is pretty basic and it issues a POST request with the data records in MessagePack (or JSON) format.

Configuration Parameters

Key

Description

default

Host

IP address or hostname of the target HTTP Server

127.0.0.1

HTTP_User

Basic Auth Username

HTTP_Passwd

Basic Auth Password. Requires HTTP_User to be set

Port

TCP port of the target HTTP Server

80

Proxy

Specify an HTTP Proxy. The expected format of this value is http://host:port. Note that https is not supported yet.

URI

Specify an optional HTTP URI for the target web server, e.g: /something

/

Format

Specify the data format to be used in the HTTP request body, by default it uses msgpack. Other supported formats are json, json_stream and json_lines.

msgpack

header_tag

Specify an optional HTTP header field for the original message tag.

Header

Add a HTTP header key/value pair. Multiple headers can be set.

json_date_key

Specify the name of the date field in output

date

json_date_format

Specify the format of the date. Supported formats are double, epoch, and iso8601 (eg: 2018-05-30T09:39:52.000681Z)

double

TLS / SSL

HTTP output plugin supports TTL/SSL, for more details about the properties available and general configuration, please refer to the TLS/SSL section.

Getting Started

In order to insert records into a HTTP server, you can run the plugin from the command line or through the configuration file:

Command Line

The http plugin, can read the parameters from the command line in two ways, through the -p argument (property) or setting them directly through the service URI. The URI format is the following:

http://host:port/something

Using the format specified, you could start Fluent Bit through:

$ fluent-bit -i cpu -t cpu -o http://192.168.2.3:80/something -m '*'

Configuration File

In your main configuration file, append the following Input & Output sections:

[INPUT]
Name cpu
Tag cpu
[OUTPUT]
Name http
Match *
Host 192.168.2.3
Port 80
URI /something

By default, the URI becomes tag of the message, the original tag is ignored. To retain the tag, multiple configuration sections have to be made based and flush to different URIs.

Another approach we also support is the sending the original message tag in a configurable header. It's up to the receiver to do what it wants with that header field: parse it and use it as the tag for example.

To configure this behaviour, add this config:

[OUTPUT]
Name http
Match *
Host 192.168.2.3
Port 80
URI /something
Format json
header_tag FLUENT-TAG

Provided you are using Fluentd as data receiver, you can combine in_http and out_rewrite_tag_filter to make use of this HTTP header.

<source>
@type http
add_http_headers true
</source>
<match something>
@type rewrite_tag_filter
<rule>
key HTTP_FLUENT_TAG
pattern /^(.*)$/
tag $1
</rule>
</match>

Notice how we override the tag, which is from URI path, with our custom header

Example : Add a header

[OUTPUT]
Name http
Match *
Host 127.0.0.1
Port 9000
Header X-Key-A Value_A
Header X-Key-B Value_B
URI /something