Devops/Logging

[Fluentd] filter_parser plugin에 대하여

chronosa 2020. 5. 23. 13:10

아래의 fluentd configuration은 udp 5140 port로 listening을 하여

syslog type의 input을 받고 이를 두 차례 parsing 하여 stdout 하는 설정입니다.

<source>
  @type syslog
  port 5140
  tag nginx.access
  <parse>
    @type syslog
  </parse>
</source>

<filter **>
  @type stdout
</filter>

<filter nginx.access.**>
  @type parser
  key_name message
  reserve_data true

  <parse>
    @type nginx
  </parse>

</filter>

<filter **>
  @type stdout
</filter>

syslog로 가져왔을 때 두차례나 parsing이 필요했다.

아직 입문이라 어떻게 할 지 당황했는데, 아래 출처의 블로그를 보고 해결할 수 있었다.

 

또한 tag가 nginx.access가 아닌 nginx.access.local7.info가 되는데

이것은 input syslog plugin이 규칙에 따라 자동으로 생성한 것이라고 한다.(참조)

 

key_name 또한 공식 document을 참조하여 message 부분만을 parsing 하도록 하였고

이때 reserve_data를 false로 하면 해당 parsing의 결과로 생성되는 필드만 다음 스텝으로 넘어가게 된다. 

 

reserve_data true인 경우

2020-05-23 04:03:06.000000000 +0000 nginx.access.local7.info: {"host":"28da686c17fc","ident":"nginx_access","message":"172.22.0.1 - - [23/May/2020:04:03:06 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"curl/7.58.0\" \"-\""}
2020-05-23 04:03:06.000000000 +0000 nginx.access.local7.info: {"host":"-","ident":"nginx_access","message":"172.22.0.1 - - [23/May/2020:04:03:06 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"curl/7.58.0\" \"-\"","remote":"172.22.0.1","user":"-","method":"GET","path":"/","code":"200","size":"612","referer":"-","agent":"curl/7.58.0","http_x_forwarded_for":"-"}

reserve_data false인 경우

2020-05-23 04:08:29.000000000 +0000 nginx.access.local7.info: {"host":"28da686c17fc","ident":"nginx_access","message":"172.22.0.1 - - [23/May/2020:04:08:29 +0000] \"GET / HTTP/1.1\" 200 612 \"-\" \"curl/7.58.0\" \"-\""}
2020-05-23 04:08:29.000000000 +0000 nginx.access.local7.info: {"remote":"172.22.0.1","host":"-","user":"-","method":"GET","path":"/","code":"200","size":"612","referer":"-","agent":"curl/7.58.0","http_x_forwarded_for":"-"}

 

출처

https://jonnung.dev/system/2018/04/06/fluentd-log-collector-part1/

'Devops > Logging' 카테고리의 다른 글

Docker 자동으로 기동시키기  (0) 2021.02.08
[Fluentd] Life cycle, 컴포넌트, 데이터구조  (0) 2020.05.23