본문 바로가기
Observability/Logs

[Fluent-Bit] Parser Timezone 적용

by dev_ss 2024. 9. 11.

 

 

 

Fluent-bit에서 Parser를 이용할 때, 이는 기본적으로  UTC를 기준으로 Timezone을 사용한다.

 

 

https://docs.fluentbit.io/manual/v/dev-2.2/pipeline/parsers/configuring-parser

 

Configuring Parser | Fluent Bit: Official Manual

Specify the data type of parsed field. The syntax is types : : ... . The supported types are string(default), integer, bool, float, hex. The option is supported by ltsv, logfmt and regex.

docs.fluentbit.io

[Timezone 관련 옵션 부분]

 

 

그렇기에 로그를 남기는 시간이 UTC가 아니라면, 시간에 대하여 오차가 발생하게 된다.

 

 

해당 사례의 예시를 들어본다면,

 

2024-09-11 10:59:02.920527123이라는 KST(Asia/Seoul) Timezone의 로그가 있고, 이를 Fluent-Bit에서 ES로 전송할 때,

10시 59분이라는 시간은 UTC로 취급되어 ES에 저장된 데이터를 Kibana로 확인할 때, Browser Time(KST)으로 설정이 되어 있다면, 9시간이 추가된 19시 59분으로 나올 것이다.

 

Timezone의 차이로 9시간의 오차가 발생하는 것이다. 

 

 

 

이와 관련된 옵션이 위의 Time_Offset이다.

 

UTC 기준으로 변경되는 부분을 -와 +로 추가하면 된다.

 

 

로그에 기록된 시간이 Asia/Seoul이라면 아래와 같이 Fluent-Bit에서 사용하는 Config의 옵션 중 Parser 부분에 추가만 해주면 된다.

 

# parser.conf 예제

    [PARSER]
      Name parser
      Format Regex
      Regex /^(?<time>[0-9:-]* [^ ]*) (?<type>[\Sa-zA-Z]*[^ ]) (?<trace>[\S]*[^ ]) (?<log>[^~]*)?$/
      Time_Key time
      Time_Format %Y-%m-%d %H:%M:%S.%L
      Time_Keep On
      ## 추가된 부분 ##
      Time_Offset +0900

 

 

 

 

 

반응형