td-agent.conf 는 fluentd 의 설정 파일이다.
1. 어떤 경로를 통해서 input 이 들어왔는지 체크하고,
2. 특정 경로나 tag 별로 데이터를 수집하여,
3. 어디로 수집된 데이터를 보낼 것인지 등을 설정한다.
$ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test | cs |
이전 예제에서 처럼 HTTP input 에서 POST 메소드로 데이터를 json 포맷으로 변환하였고, 아래와 같이 td-agent.log 파일에 기록되었다.
2017-04-05 07:05:41 +0000 debug.test: {"json":"message"} | cs |
이것은 /etc/td-agent/td-agent.conf 설정 파일에 위처럼 동작하도록 기본값이 설정되어 있기 때문이다.
설정 파일인 /etc/td-agent/td-agent.conf 를 열어보자.
<match debug.**> @type stdout </match> <source> @type forward </source> <source> @type http port 8888 </source> | cs |
하나의 <match> 지시자와 두개의 <source> 지시자가 보인다.
<source> 는 어떤 방식의 이벤트를 받을지 결정하는 지시자이다.
@type 에 특정 input 플러그인(위 예제에는 forward, http) 을 지정하여 그 방식의 이벤트만 받겠다는 것이다.
http 는 HTTP 8888 포트를, forward 는 TCP 24224 포트(default) 를 Listen 하고 있다.
그렇게 입력된 이벤트 중 <match> 지시자에 일치하는 tag(위 예제에는 debug.** 에 해당하는 모든 tag) 를 output 플러그인인 stdout 처리하도록 되어 있다.
이 stdout 플러그인은 /var/log/td-agent/td-agent.log 파일에 기록되며 디버깅에 유용하다.
아래와 같이 fluent-cat 디버깅 도구를 이용하여 forward 입력 플러그인으로 메시지를 보낼 수 있다.
echo '{"json":"message"}' | /opt/td-agent/embedded/bin/fluent-cat debug.test 2017-04-05 07:15:23 +0000 debug.test: {"json":"message"} | cs |
output 형태는 다음과 같이 세 부분으로 구성된다.
- time : 2017-04-05 07:05:41 +0000
- tag : debug.test
- message : {"json":"message"}
tag 는 <match>, <filter> 등의 지시자를 사용하여 구분할 때 주로 사용하며, message 형태는 항상 JSON 이다.
output plugin 을 살펴보고, 입력된 이벤트로부터 더 다양한 처리를 할 수 있다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.