Fluentd
file outputのオプションについて、time_slice_formatがよくわからなかったので挙動を確認してみた。
デフォルトだと%Y%m%dだが、挙動確認のため意図的に%Y%m%d%H%Mに変更する。
※なお、%Y%m%d%H%M%Sまで指定可能
.
├── docker
│ └── fluentd
│ ├── Dockerfile
│ └── etc
│ └── fluent.conf
└── docker-compose.yml
docker/fluentd/etc/fluent.conf
<source>
@type forward
@id input1
@label @mainstream
port 24224
</source>
<filter **>
@type stdout
</filter>
<label @mainstream>
<match nginx>
@type file
@id output_nginx
path /fluentd/log/nginx.*.log
symlink_path /fluentd/log/nginx.log
append true
time_slice_format %Y%m%d%H%M # ココ!!
time_slice_wait 1m
time_format %Y%m%dT%H%M%S%z
</match>
<match **>
@type file
@id output_other
path /fluentd/log/data.*.log
symlink_path /fluentd/log/data.log
append true
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%z
</match>
</label>
docker/fluentd/Dockerfile
FROM fluent/fluentd:v1.11.2-1.0
COPY docker/fluentd/etc/fluent.conf /fluentd/etc/fluent.conf
version: '3'
services:
nginx:
image: nginx:latest
environment:
- TZ=Asia/Tokyo
ports:
- '8080:80'
links:
- fluentd
logging:
driver: fluentd
options:
fluentd-address: localhost:24224
tag: nginx
fluentd:
build:
context: .
dockerfile: docker/fluentd/Dockerfile
environment:
- TZ=Asia/Tokyo
ports:
- '24224:24224'
- '24224:24224/udp'
1分でバッファファイルからフォーマット通りのファイルに変更されることを確認
# time_slice_formatの指定時間内はバッファファイル
/fluentd/log $ ls -lha
total 20
drwxr-xr-x 1 fluent fluent 4.0K Aug 8 05:11 .
drwxr-xr-x 1 fluent fluent 4.0K Aug 5 22:19 ..
-rw-r--r-- 1 fluent nogroup 401 Aug 8 05:11 nginx.b5ac56c0fae21db227b1f693e482e1e51.log
-rw-r--r-- 1 fluent nogroup 79 Aug 8 05:11 nginx.b5ac56c0fae21db227b1f693e482e1e51.log.meta
lrwxrwxrwx 1 fluent nogroup 56 Aug 8 05:11 nginx.log -> /fluentd/log/nginx.b5ac56c0fae21db227b1f693e482e1e51.log
# time_slice_formatの指定時間経過後はフォーマット通りのファイル名に更新される
/fluentd/log $ ls -lha
total 16
drwxr-xr-x 1 fluent fluent 4.0K Aug 8 05:13 .
drwxr-xr-x 1 fluent fluent 4.0K Aug 5 22:19 ..
-rw-r--r-- 1 fluent nogroup 401 Aug 8 05:13 nginx.202008080511.log
lrwxrwxrwx 1 fluent nogroup 56 Aug 8 05:11 nginx.log -> /fluentd/log/nginx.b5ac56c0fae21db227b1f693e482e1e51.log
今回は極端な例なので分単位にしたが、デフォルト通り1時間単位で良さそう。