FluentD 學習筆記(一),in Docker Compose

陳兆煇 Harvey
4 min readNov 27, 2018

--

因為在專案使用到 FluentD , 順便就當作自己的學習歷程 , 記錄下來

使用的是 Docker Compose
原因是管理 container 比較簡單,相同的Compose可以直接定義內網去做連接,較為方便

目錄結構 :

fluentd
+ -- docker-compose.yaml
+ -- logs
| + -- 存放logs的地方,不會因為container 停止而消失
+ -- etc
+ -- fluentd.conf

Fluentd 設定檔 :

#fluentd.conf<source>
@type forward
port 24225
bind 0.0.0.0
</source>
<source>
@type http
port 24224
bind 0.0.0.0
</source>
<match test*>
@type file
path /fluentd/log/iamd.*.log
symlink_path /fluentd/log/test.log
append true
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%z
buffer_path /fluentd/log/test.*.log
</match>
<match **>
@type file
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
buffer_path /fluentd/log/data.*.log
</match>

source 指連線的方式以及連接的 port
match 指遇到指定的post 方式會以設定的方式儲存

curl -X POST -d ‘json={“json”:”message”}’ http://localhost:9880/test

會對應到 <match test*> 會依照底下的設定做儲存

Docker-Compose 設定檔 :

#docker-compose.ymlversion: "3"
services:
fluentd:
image: fluent/fluentd:v1.3.0
volumes:
- ./conf:/fluentd/etc
- ./logs:/fluentd/log
network_mode: host
restart: always

Docker-Compose 設定,感覺就是將原本使用 docker 指令行,變成 yml的格式
fluentd 服務的名稱
image 使用的映像檔
volumes 對應資料夾 (本機資料夾:container資料夾) , 在docker-compse 可以使用相對路徑
network_mode 可以設定是對外或者只有內網,使用 host 本機可以連線到container
restart 錯誤時會自動重啟

測試 :

curl -X POST -d ‘json={“json”:”message”}’ http://localhost:24224/test

log 會記錄在 logs 資料夾內
檔案名稱會像 data.xxxxxxxxxxxxx.log
根據 config 設定 , 每10分鐘會存入 data.日期.log

--

--