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.
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. Please consider not setting this and use | ​ |
uri | Specify an optional HTTP URI for the target web server, e.g: /something | / |
compress | Set payload compression mechanism. Option available is 'gzip' | ​ |
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 and gelf. | msgpack |
allow_duplicated_headers | Specify if duplicated headers are allowed. If a duplicated header is found, the latest key/value set is preserved. | true |
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 time key in the output record. To disable the time key just set the value to | 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 |
gelf_timestamp_key | Specify the key to use for | ​ |
gelf_host_key | Specify the key to use for the | ​ |
gelf_short_messge_key | Specify the key to use as the | ​ |
gelf_full_message_key | Specify the key to use for the | ​ |
gelf_level_key | Specify the key to use for the | ​ |
HTTP output plugin supports TTL/SSL, for more details about the properties available and general configuration, please refer to the TLS/SSL section.
In order to insert records into a HTTP server, you can run the plugin from the command line or through the configuration file:
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 '*'
In your main configuration file, append the following Input & Output sections:
[INPUT]Name cpuTag cpu​[OUTPUT]Name httpMatch *Host 192.168.2.3Port 80URI /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 httpMatch *Host 192.168.2.3Port 80URI /somethingFormat jsonheader_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 httpadd_http_headers true</source>​<match something>@type rewrite_tag_filter<rule>key HTTP_FLUENT_TAGpattern /^(.*)$/tag $1</rule></match>
Notice how we override the tag, which is from URI path, with our custom header
[OUTPUT]Name httpMatch *Host 127.0.0.1Port 9000Header X-Key-A Value_AHeader X-Key-B Value_BURI /something
Suggested configuration for Sumo Logic using json_lines
with iso8601
timestamps. The PrivateKey
is specific to a configured HTTP collector.
[OUTPUT]Name httpMatch *Host collectors.au.sumologic.comPort 443URI /receiver/v1/http/[PrivateKey]Format json_linesJson_date_key timestampJson_date_format iso8601
A sample Sumo Logic query for the CPU input. (Requires json_lines
format with iso8601
date format for the timestamp
field).
_sourcecategory="my_fluent_bit"| json "cpu_p" as cpu| timeslice 1m| max(cpu) as cpu group by _timeslice