# td-agent 4
$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent4.sh | sh
# td-agent 3
$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
/etc/td-agent
경로에 있으며 실행방법은 다음과 같습니다.$ td-agent -c [설정파일]
$ td-agent -c /etc/td-agent/td-agent.conf
fluentd 설정파일은 top-bottom 형식으로 관리됩니다. filter는 아래에서 설명하겠지만 일반적인 로그의 처리순서는 source => filter => match 이므로 각 섹션의 정의 순서도 같아야 합니다.
Logstash 처럼 fluentd 도 설정파일에 따라 source, match 들을 구성할수 있습니다.
여기부터 설명하는 설정파일은 /etc/td-agent
경로에 in_http.conf 파일을 만들어서 진행합니다.
http input을 사용하는 간단한 예제입니다. 8888 포트로부터 오는 request를 수신하도록 설정했습니다.
<source>
@type http
port 8888
bind 0.0.0.0
</source>
<match test.cycle>
@type stdout
</match>
<source>
@type http
port 8888
bind 0.0.0.0
</source>
<match test.cycle>
@type stdout
</match>
$ curl -i -X POST -d 'json={"action":"login","user":2}' http://localhost:8888/test.cycle
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: Keep-Alive
Content-Length: 0
2021-07-08 13:39:43.919733335 +0900 test.cycle: {"action":"login","user":2}
fluentd 의 이벤트는 세가지로 구성되었습니다.
<source>
@type http
port 8888
bind 0.0.0.0
</source>
<filter test.cycle>
@type grep
<exclude>
key action
pattern ^logout$
</exclude>
</filter>
<match test.cycle>
@type stdout
</match>
$ curl -i -X POST -d 'json={"action":"login","user":2}' http://localhost:8888/test.cycle
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: Keep-Alive
Content-Length: 0
2021-07-08 13:46:40.735012664 +0900 test.cycle: {"action":"login","user":2}
$ curl -i -X POST -d 'json={"action":"logout","user":2}' http://localhost:8888/test.cycle
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: Keep-Alive
Content-Length: 0
<source>
@type http
bind 0.0.0.0
port 8888
@label @STAGING
</source>
<filter test.cycle>
@type grep
<exclude>
key action
pattern ^login$
</exclude>
</filter>
<label @STAGING>
<filter test.cycle>
@type grep
<exclude>
key action
pattern ^logout$
</exclude>
</filter>
<match test.cycle>
@type stdout
</match>
</label>