Fluentd from ASCII-8BIT to UTF-8 error
728x90

Fluentd 를 실제 서버에 올려놓고 로그 수집을 기다리던 중에 중국어 와 json 로그를 전송하던 중에 \xE6 from ASCII-8BIT to UTF-8 에러가 나와서 로그가 정상적으로 발송되지 않는 현상이 일어났다.

이러한 에러는 서버에서 보내는 로그 형식이 UTF-8 인데 인코딩이 잘못되는 경우이다.

지금 회사의 경우에는 대만 회사여서 중국어가 로그에 포함되는 경우가 있는데 이 때 발생하는 에러 같다.

그래서 태그 안에서 tail 밑에 encoding UTF8을 적어서 하면 중국어는 깨져서 나와도 정상적으로 로그가 발송되는 것이 확인이 되었다.

<source>

   @type tail

   encoding utf8

...

</source>

문제는 json 형식으로 보낼 때 \xE6 에러가 아닌 \xC 계열로 예외가 발생하는데 이 때는 format을 json이 아닌 yajl을 사용하라고 공식문서에 나와있다.

<source>

  @type tail

  foramt yajl

...

</source>

이런 식으로 사용하는게 좋다고 한다..


추가적으로 저렇게 해도 적용이 안된다면

cd ./gem install fluent-plugin-record-modifier

이 플러그인을 설치 후

<filter pattern>
  @type record_modifier

  # set UTF-8 encoding information to string.
  char_encoding utf-8
</filter>

이렇게 설정 해주면 중국어도 깨져서 나오지도 않고 잘 나온다.

728x90

'Fluentd > 적용' 카테고리의 다른 글

Fluentd Http Test  (2) 2022.10.25
Fluentd Config 파일 분리하기  (0) 2022.07.25
Fluentd + Azure Loganalytics  (0) 2022.07.25
Fluentd Installation ( ruby gem )  (0) 2022.07.25
Fluentd access log 500 에러만 남기기  (0) 2022.06.23