본문 바로가기
Data Engineering/Fluentd

Fluent Bit에서 특정 패턴 Exclude 하기

by 홍띠 2023. 7. 23.

Grep Filter

Fluent bit에서 제공하는 필터 중 하나. Grep Filter를 이용해서 특정 패턴의 데이터를 Select 하거나 Exclude 할 수 있다.

Grep Filter는 아래와 같은 구조를 기본으로 사용 가능하다.

[FILTER]
    Name    			grep
    Match   			#tag
    Regex or Exclude 	# Pattern 지정
  • Regex: 지정하는 패턴을 Select 함. 해당 패턴의 데이터만 추출 됨
  • Exclude: 지정하는 패턴을 Exclude 함. 해당 패턴의 데이터들은 제거됨.

필수로 지정해야 하는 파라미터 외에도 한개의 Optional 파라미터를 더 지원한다.

  • Logical_Op: 논리 연산자 지정(AND, OR, legacy). Default는 legacy이며, including- AND, excluding- OR 사용.

공식 문서는 아래 링크를 참고하면 된다.

https://docs.fluentbit.io/manual/pipeline/filters/grep

 

Grep - Fluent Bit: Official Manual

[2023/01/22 09:46:49] [ info] [storage] ver=1.2.0, type=memory, sync=normal, checksum=off, max_chunks_up=128

docs.fluentbit.io

 

Grep Filter Exclude 예시

필터링 하고 싶은 데이터 예:

{"log": "[INFO ] 2023-03-29 15:17:30.024 [scheduling-1] sqltiming - SELECT * FROM t_message WHERE update_date >= (NOW() - INTERVAL '20 SECONDS') \n {executed in 19 msec}\n"}

 

Grep필터를 이용해서 위의 예시와 같은 쿼리의 로그를 Exclude 하도록 conf 파일을 작성한다.

[FILTER]
    Name    grep
    Match   example.*
    Exclude log \[INFO \].+\[scheduling\-1\] sqltiming \- SELECT \* FROM t\_message WHERE update\_date \>\= \(NOW\(\) \- INTERVAL \'20 SECONDS\'\)

Exclude 파라미터를 이용해서 "log" 키의 value가 지정된 표현식에 매치되는 데이터는 제외되고 수집된다.