Linux 환경의 경우, fluentd native나 td-agent 모두 stable 버전으로 제공되는데,
Windows 환경의 경우는 공식홈에서 밀고 있는 td-agent 조차 베타버전으로 제공이 되고 있는 상황이고,
Document를 샅샅히 뒤져보다보면, nxlog 라는 놈을 하나 소개해준다. (http://docs.fluentd.org/v0.12/articles/windows)
실제로 테스트를 해봐도 tg-agent랑 nxlog 둘다 써봤지만, 제대로되는 게 nxlog 뿐인것 같다.
하지만, nxlog에서는 fluentd의 forward protocol을 지원하지 않아, tcp를 이용해서 전송을 해야 했다.
1. 서버 설치 (docker)
### docker-compose.yml
version: '2'
services:
fluentd-recv:
container_name: 'fluentd-recv'
image: fluent/fluentd
volumes:
- ./conf:/fluentd/etc
ports:
- 5170:5170
### conf/fluent.conf
# Input
<source>
@type tcp # tcp 프로토콜로 데이터를 받는다.
port 5170
tag testlog # testlog라는 식별자를 추가한다.
format json # json 포맷만 받음.
</source>
# Output
<match testlog> # testlog tag를 가진 데이터만 처리함
@type file # 파일로 저장
path /fluentd/recv/*
</match>
2. nxlog (Client) 설치
link : http://nxlog.co/products/nxlog-community-edition/download
위 링크에서 다운받아서, 설치하고 나면 C:\Program Files(x86)\nxlog 경로에 있는 nxlog.conf를 아래와 같이 수정한다.
### nxlog.conf
define ROOT C:\Program Files (x86)\nxlog
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log
<Input in>
Module im_file # fluentd의 input tail plugin의 역할을 함
File 'D:\fluentd_test\send\\*.json' # 해당 경로에 있는 파일들을 감시한다. (와일드카드를 사용하려면 \를 하나 더 붙여줘야 된다.)
SavePos TRUE # 파일의 position 관리 enable / disable
InputType LineBased # 파일 내용의 라인 단위로 파싱한다.
</Input>
<Output out>
Module om_tcp # in으로 들어온 파일을 tcp형태로 전송한다.
Host 192.168.0.10 # 전송할 서버 정보 입력
Port 5170
</Output>
<route 1> # 위에 설정한 내용들을 어떻게 동작시킬지 지정한다.
Path in => out # in으로 받아서 out으로 보낸다.
</route>
### 전송이 됬는지 안됬는지 판단이 어려우므로 테스트 시 추가한 설정 (선택사항) ###
# 파일을 tcp로 보내고 난 뒤, 내용을 지정한 경로에 파일로 저장한다.
<Output outfile>
Module om_file
File 'D:\fluentd_test\send\backup.log'
</Output>
<route 2> # Route 1과 마찬가지로 동작방식 지정
Path in => outfile
</route>