fluentd 를 사용하여 HIVE 애널리틱스 v2에서 사용하는 사용자 정의 로그를 전송하는 방법입니다.
Fluentd 설치
– td-agent v1.x 버전 설치를 권장 합니다.
– 각 언어 별 td-agent 라이브러리가 제공됩니다. (https://docs.fluentd.org/language-bindings)
td-agent 설치
- http://docs.fluentd.org/articles/install-by-rpm
1 |
$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh |
- td-agent 설정 파일 수정
1 |
$ vim /etc/td-agent/td-agent.conf |
Fluentd 기본 설정 설명
- 로그파일 : 로그파일의 기본경로는 /var/log/td-agent 이며 하위에 td-agent.log 파일이 존재 합니다.
- 이벤트 : Fluentd 에서 이벤트는 record , log 의 의미를 가집니다.
- <source> : 다양한 input을 받기 위해 사용하며, @type을 이용하여 다양한 플러그인을 사용 할 수 있습니다.
- <match> : source 를 통해 전달된 input 이벤트를 처리 합니다.
Fluentd Plugin
- 플러그인 확인 및 설치 : 플러그인 리스트를 확인 후 필요한 플러그인은 설치 후 사용 해야합니다.
( tail , forward , stdout 등 기본 플러그인은 제공 되며, forest 플러그인 등 다른 플러그인은 설치 후 사용해야 합니다.)
1 2 3 4 |
$ td-agent-gem list #플러그인 리스트 확인 # td-agent-gem install [원하는 플러그인] 형식으로 플러그인 설치가 가능합니다. $ td-agent-gem install fluent-plugin-forest # fluent-plugin-forest 플러그인 설치. |
- tag (태크) : 태그는 이벤트를 구성하는 구분값이며, <match>섹션은 태그값과 일치하는 값을 가져와 처리합니다.
1 2 3 4 5 6 7 8 9 10 11 |
# 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 해서 데이터를 읽는데 사용한다 .
1 2 3 4 5 6 7 8 |
<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 노드로부터 데이터를 전달 받기 위해 사용한다.
1 2 3 4 5 |
<source> @type forward port 24224 # 수신할 포트 ( 기본 값 : 24224 ) bind 0.0.0.0 # 수신할 바인드 주소 ( 기본 값 : 0.0.0.0(모든 주소)) </source> |
[Output 플러그인]
Output 플러그인은 <match> 섹션에 정의하며, Buffering과 Flushing에 대한 설정을 <match> 섹션안에 <buffer> 서브 섹션으로 정의한다.
- output_stdout : 이벤트를 표준출력(stdout)으로 내보냄, 주로 디버깅용으로 사용한다.
1 2 3 |
<match **> @type stdout </match> |
- output_forward : 다른 Fluentd 노드로 이벤트를 전달할때 사용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<match **> @type forward <server> name com2us.fluentd1 host [전송받을 서버1 의 도메인] port 24224 weight 50 # <server> 섹션에서 로드 밸런싱 가중치 설정 </server> <server> name com2us.fluentd2 host [전송받을 서버2 의 도메인] port 24224 weight 50 # <server> 섹션에서 로드 밸런싱 가중치 설정 </server> </match> |
- fluent-plugin-forest : tag 명을 사용하여 로그파일을 저장 할 수 있는 기능을 제공 합니다.
(다음과 같이 로컬에 로그를 저장할 수 있도록 설정 할 수 있습니다.)
1 2 3 4 5 6 7 8 9 10 11 |
<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 문법확인하기
1 |
$ td-agent -c /etc/td-agent/td-agent.conf |
- td-agent 재시작
1 |
$ service td-agent restart |