본문 바로가기

Docker

[Docker] Docker Filebeat를 이용하여 spring boot 로그 시각화

반응형

선행으로 보면 도움 되는 글

 

Docker Filebeat 설치

docker pull docker.elastic.co/beats/filebeat:7.15.2

docker 를 통해 pull 받는다. (생략 가능)

위와 같은 로그들이 출력되면 설치가 정상적으로 진행된 것이다.

 

Docker Filebeat 환경 설정 파일 작성(yml)

curl -L -O https://raw.githubusercontent.com/elastic/beats/7.15/deploy/docker/filebeat.docker.yml

위 명령어를 통해 환경 설정 파일을 다운로드한다.

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

#filebeat.autodiscover:
#  providers:
#    - type: docker
#      hints.enabled: true

processors:
- add_cloud_metadata: ~

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /hostFiles/logs/*.log

output.elasticsearch:
  hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
  • filebeat.config.modules
    • path - 사용할 모듈의 설정 파일 경로 지정
    • reload.enabled - 활성화 시 주기적으로 설정 파일 변경 사항 확인
  • filebeat.autodiscover.providers - 현재 상태로 filebeat를 실행하면 elasticsearch, kibana의 모든 로그를 수집하여 로그파일이 어마어마하게 많이 잡힌다.(참고) -> 해당 부분이 input 부분을 덮어버리므로 해당부분을 사용하지 않고 input을 작성
  • processors.add_cloud_metadata - filebaet가 로그를 수집할 때 추가할 메타데이터를 아래와 같이 정의 -> 추가된 정보를 통해 kibana에서 실시간 검색 및 분석에 활용 가능
{
  "provider": "ec2"
}
  • filebeat.inputs - 모듈을 사용하지 않고 수동으로 입력을 구성
    • type - 수집할 데이터 유형
    • paths - 수집할 데이터의 경로
  • output.elasticsearch - elasticsearch로 출력 환경 구성 (공식 문서 참고)
    • hosts. elasticsearch 주소 및 포트
반응형

Filebeat container 실행

다음 명령어를 통해 filebaet container를 실행한다.

docker run -d --name filebeat \
--network test-network \
--user=root \
-v /Users/burger/Desktop/Docker/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro \
-v /Users/burger/Desktop/Docker:/hostFiles/logs \
-v /var/lib/docker/containers:/var/lib/docker/containers:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
docker.elastic.co/beats/filebeat:7.15.2 \
-E output.elasticsearch.hosts=easticsearch:9200
  • --user = root - root 권한으로 filebeat실행
  • -v - filebeat 환경 설정 파일 바인딩 마운트
  • -E -  로그를 전달할 elasticsearch 주소 및 포트

Kibana를 통해 로그 인덱스 확인

먼저 elasticsearch + kibana를 docker compose로 실행하고 input path로 지정한 경로에 log파일을 생성한다.

spring boot를 통해 생성된 로그파일

spring boot slf4j를 통해 남긴 로그 파일이다. kibana를 통해 인덱스를 확인해보면

kibana

filebeat에서 elasticsearch로 전달된 로그 파일이 Kibana 인덱스에 생성되었다.

반응형