Fluentd 사용하기
fluentd 를 사용하여 HIVE 애널리틱스 v2에서 사용하는 사용자 정의 로그를 전송하는 방법입니다.
Fluentd 설치¶
Note
td-agent v1.x 버전 설치를 권장 합니다.
각 언어 별 td-agent 라이브러리가 제공됩니다. (https://docs.fluentd.org/language-bindings)
td-agent 설치¶
- http://docs.fluentd.org/articles/install-by-rpm
- td-agent 설정 파일 수정
Fluentd 기본 설정 설명¶
- 로그파일 : 로그파일의 기본경로는 /var/log/td-agent 이며 하위에 td-agent.log 파일이 존재 합니다.
- 이벤트 : Fluentd 에서 이벤트는 record , log 의 의미를 가집니다.
- <source> : 다양한 input을 받기 위해 사용하며, @type을 이용하여 다양한 플러그인을 사용 할 수 있습니다.
- <match> : source 를 통해 전달된 input 이벤트를 처리 합니다.
Fluentd Plugin¶
- 플러그인 확인 및 설치 : 플러그인 리스트를 확인 후 필요한 플러그인은 설치 후 사용 해야합니다.
- (tail , forward , stdout 등 기본 플러그인은 제공 되며, forest 플러그인 등 다른 플러그인은 설치 후 사용해야 합니다.)
#플러그인 리스트 확인
$ td-agent-gem list # td-agent-gem install [원하는 플러그인] 형식으로 플러그인 설치가 가능합니다.
# fluent-plugin-forest 플러그인 설치.
$ td-agent-gem install fluent-plugin-forest
- tag (태크) : 태그는 이벤트를 구성하는 구분값이며, <match>섹션은 태그값과 일치하는 값을 가져와 처리합니다.
# tag 사용 예시
<source>
@type tail
tag ha2union.game.com2us # in_tail 플러그인으로 전달된 이벤트에는 다음 태그가 붙음
path /var/log/sample.log
</source>
# source를 통해 전송된 input 이벤트는 이벤트의 태그와 매핑되는 match 태그로 전송됩니다.
<match ha2union.game.com2us>
@type stdout
<match>
[Input 플러그인]¶
- in_tail : 대표적인 in_tail 플러그인은 파일을 tail 해서 데이터를 읽는데 사용한다 .
<source>
@type tail
path /var/log/com2us.log # 파일등을 읽을 경로
pos_file /var/log/fluent/com2us_posfile.log.pos # 마지막으로 읽은 위치를 기록함
tag ha2union.game.com2us # 이벤트의 태그, 전달될 이벤트에 태그가 붙음
</source>
# pos_file : fluentd가 재 실행 되었을 때 파일의 마지막에 읽은 부분부터 다시 처리함.
- in_forward : 보통 다른 Fluentd 노드로부터 데이터를 전달 받기 위해 사용한다.
<source>
@type forward
port 24224 # 수신할 포트 ( 기본 값 : 24224 )
bind 0.0.0.0 # 수신할 바인드 주소 ( 기본 값 : 0.0.0.0(모든 주소))
</source>
[Output 플러그인]¶
Note
Output 플러그인은 < match > 섹션에 정의하며, Buffering과 Flushing에 대한 설정을 < match > 섹션안에 < buffer > 서브 섹션으로 정의한다.
- output_stdout : 이벤트를 표준출력(stdout)으로 내보냄, 주로 디버깅용으로 사용한다.
- output_forward : 다른 Fluentd 노드로 이벤트를 전달할때 사용한다.
<match **>
@type forward
<server>
name com2us.fluentd1
host [전송받을 서버1 의 IP or 도메인]
port 24224
weight 50 # <server> 섹션에서 로드 밸런싱 가중치 설정
</server>
<server>
name com2us.fluentd2
host [전송받을 서버2 의 IP or 도메인]
port 24224
weight 50 # <server> 섹션에서 로드 밸런싱 가중치 설정
</server>
</match>
- fluent-plugin-forest : tag 명을 사용하여 로그파일을 저장 할 수 있는 기능을 제공 합니다.
- (다음과 같이 로컬에 로그를 저장할 수 있도록 설정 할 수 있습니다.)
<store>
@type forest
subtype file
<template>
time_slice_format %Y%m%d%H
time_slice_wait 10s
path /com2us/log/td-agent/data/${tag}/${tag}.*.log
compress gz
format json
</template>
</store>
Fluentd 사용 예시¶
Fluentd 를 사용하여 아래와 같은 방식으로 로그전송이 가능합니다. 아래 링크를 클릭하여 자세한 내용을 확인하세요.
설정 수정 적용¶
- td-agent.conf 문법확인하기
- td-agent 재시작