FluentD 學習筆記(一),in Docker Compose
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