Docker
[Docker] Docker Filebeat를 이용하여 spring boot 로그 시각화
burgerkim
2021. 11. 29. 14:06
선행으로 보면 도움 되는 글
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 slf4j를 통해 남긴 로그 파일이다. kibana를 통해 인덱스를 확인해보면
filebeat에서 elasticsearch로 전달된 로그 파일이 Kibana 인덱스에 생성되었다.