19.4.로그 출력 및 로그 컬렉션 관리하기

  • 로그 필터링은 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 클라우드 스토리지로 보내는 식이다.

links

social