Fluentd
Search…
Docker Image
This article explains how to use the official Fluentd Docker image, maintained by Treasure Data, Inc.

Step 0: Install Docker

Please download and install Docker from here:

Step 1: Pull Fluentd Docker Image

Then, download Fluentd edge-debian's (edge-debian means latest version of Fluentd) image by docker pull command:
1
$ docker pull fluent/fluentd:edge-debian
Copied!
Debian and Alpine Linux version is available for Fluentd image. Debian version is recommended officially since it has jemalloc support. However, the Alpine image is smaller.

Step 2: Launch Fluentd Container

To make the test simple, create the example config below at $(pwd)/tmp/fluentd.conf. This example accepts records from http, and outputs to stdout.
1
# $(pwd)/tmp/fluentd.conf
2
3
<source>
4
@type http
5
port 9880
6
bind 0.0.0.0
7
</source>
8
9
<match **>
10
@type stdout
11
</match>
Copied!
Finally, you can run Fluentd with docker run command:
1
$ docker run -p 9880:9880 -v $(pwd)/tmp:/fluentd/etc fluent/fluentd:edge-debian -c /fluentd/etc/fluentd.conf
2
2021-03-16 09:11:32 +0000 [info]: parsing config file is succeeded path="/fluentd/etc/fluentd.conf"
3
2021-03-16 09:11:32 +0000 [info]: gem 'fluentd' version '1.11.5'
4
2021-03-16 09:11:32 +0000 [warn]: define <match fluent.**> to capture fluentd logs in top level is deprecated. Use <label @FLUENT_LOG> instead
5
2021-03-16 09:11:32 +0000 [info]: using configuration file: <ROOT>
6
<source>
7
@type http
8
port 9880
9
bind "0.0.0.0"
10
</source>
11
<match **>
12
@type stdout
13
</match>
14
</ROOT>
15
2021-03-16 09:11:32 +0000 [info]: starting fluentd-1.11.5 pid=7 ruby="2.6.6"
16
2021-03-16 09:11:32 +0000 [info]: spawn command to main: cmdline=["/usr/local/bin/ruby", "-Eascii-8bit:ascii-8bit", "/usr/local/bundle/bin/fluentd", "-c", "/fluentd/etc/fluentd.conf", "-p", "/fluentd/plugins", "--under-supervisor"]
17
2021-03-16 09:11:33 +0000 [info]: adding match pattern="**" type="stdout"
18
2021-03-16 09:11:33 +0000 [info]: adding source type="http"
19
2021-03-16 09:11:33 +0000 [warn]: #0 define <match fluent.**> to capture fluentd logs in top level is deprecated. Use <label @FLUENT_LOG> instead
20
2021-03-16 09:11:33 +0000 [info]: #0 starting fluentd worker pid=16 ppid=7 worker=0
21
2021-03-16 09:11:33 +0000 [info]: #0 fluentd worker is now running worker=0
22
2021-03-16 09:11:33.025408358 +0000 fluent.info: {"pid":16,"ppid":7,"worker":0,"message":"starting fluentd worker pid=16 ppid=7 worker=0"}
23
2021-03-16 09:11:33.026503372 +0000 fluent.info: {"worker":0,"message":"fluentd worker is now running worker=0"}
Copied!

Step 3: Post Sample Logs via HTTP

Use curl command to post sample logs via HTTP like this:
1
$ curl -X POST -d 'json={"json":"message"}' http://127.0.0.1:9880/sample.test
Copied!
Use docker ps command to retrieve container ID and use docker logs command to check the specific container's log like this:
1
$ docker ps -a
2
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3
775a8e192f2b fluent/fluentd:edge-debian "tini -- /bin/entryp…" About a minute ago Up About a minute 5140/tcp, 24224/tcp, 0.0.0.0:9880->9880/tcp tender_leakey
4
5
$ docker logs 775a8e192f2b | tail -n 1
6
2021-03-16 09:12:15.257351750 +0000 sample.test: {"json":"message"}
Copied!

Next Steps

Now, you know how to use Fluentd via Docker.
Here are some Docker related resources for Fluentd:
Also, refer to the following tutorials to learn how to collect data from various data sources:
If this article is incorrect or outdated, or omits critical information, please let us know. Fluentd is an open-source project under Cloud Native Computing Foundation (CNCF). All components are available under the Apache 2 License.
Last modified 4mo ago