반응형

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>
반응형
,