- 로그 필터링은 fluentd 설정 파일에서 정의할 수 있다.
- 지난 예제의 설정 파일은 모든 로그를 일래스틱서치로 전송하도록 했지만, 예제 19-4의 설정은 access-log 컴포넌트의 상세한 로그 중 일부에 필터링을 적용했다.
- 필터링된 로그는 stdout 스트림으로 출력되고, 나머지 로그는 일래스틱서치로 전달된다.
예제 19-4 로그의 태그 정보에 따라 출력 방향을 바꾸는 로그 설정
<match gallery.access-log.**>
@type copy
<store>
@type stdout
</store>
</match>
<match gallery.**>
@type copy
<store>
@type elasticsearch
...
- match 블룩은 해당 블록의 필터 파라미터와 태그가 일치하는 로그를 어떻게 처리할 것인지를 정의한다.
- 이 로그 설정을 적용하면 access-log에서 생성된 로그는 일래스틱서치로 전달되는 대신 fluentd 컨테이너의 로그에서만 볼 수 있다.
실습 새로운 로그 설정 파일을 가리키는 오버라이드 컴포즈 파일을 적용하고, image-gallery 애플리케이션을 더 상세한 로그를 생성하는 버전으로 업데이트하라.
# fluentd 로그 설정 업데이트
➜ docker-compose -f fluentd/docker-compose.yml -f fluentd/override-gallery-filtered.yml up -d
# 애플리케이션 로그 설정 업데이트
➜ docker-compose -f image-gallery/docker-compose.yml -f image-gallery/override-logging.yml up -d
- 두 오버라이드 파일의 내용을 확인해 보면, 애플리케이션 설정만 수정됐을 뿐 이미지는 변경하지 않는다.
- access-log 컴포넌트의 로그는 fluentd 컨테이너의 stdout 스트림으로 출력되기 때문에 fluentd 컨테이너의 컨테이너 로그로 확인 가능하다.
- 그 외 컴포넌트에서 생성된 로그는 새로운 메타데이터 필드가 추가된 것을 알 수 있다.
실습 fluentd 컨테이너의 컨테이너 로그를 확인해 access-log 컴포넌트의 로그가 맞는지 확인하라.
➜ docker container logs --tail 1 fluentd_fluentd_1
- 이 방법은 애플리케이션의 핵심 로그와 '있으면 좋은 정도'의 로그를 분리하는 데 유용하다.
- 이를테면 성능과 관련된 가장 중요한 컴포넌트의 로그는 카프카, 사용자 로그는 일래스틱서치, 그 외의 로그는 아마존 S3 클라우드 스토리지로 보내는 식이다.