이번 게시글에서는 ECS 환경에서 Filebeat, Logstash, ElasticSearch, Kibana를 이용하여 로그를 수집해본 프로젝트를 구축한 경험에 대해서 기술하겠다. Filebeat, Logstash, ElasticSearch, Kibana 환경 구축에 대한 내용은 다른 좋은 글에서 많이 다루고 있으니, 이번 게시글에서는 ECS 환경에서 구축한 경험에 대해서 중점적으로 기술하겠다.
먼저 Task Definition에서 사용할 두개의 image를 ECR에 푸쉬해야 한다.
WAS와 Filebeat의 이미지를 푸쉬하여 Private Repository에 저장해준다.
다음으로, Task Definition에서 ECR의 이미지를 이용하여 Task를 정의해야 한다. Task Definition은 간단히 설명하면 Docker Compose와 비슷한 역할을 수행한다.
먼저 WAS 컨테이너를 정의한다. 이 때 필요한 포트, 메모리, CPU 등의 리소스 설정을 해준다.
다음으로 Filebeat 컨테이너를 정의한다. Filebeat는 로그를 수집하여 Logstash로 전송하는 역할을 한다.
Filebeat 컨테이너와 WAS 컨테이너 간의 볼륨을 마운트하여 로그 파일을 공유한다. 이를 통해 Filebeat가 WAS 로그 파일을 읽을 수 있게 된다.
ECS 클러스터에서 Task를 실행시키면, 정의한 Task Definition에 따라 컨테이너들이 배포된다. 이를 통해 애플리케이션과 로그 수집 환경을 구성할 수 있다.
Task가 정상적으로 실행되고, EC2 인스턴스에 할당된 것을 확인할 수 있다.
Kibana를 통해 수집된 로그를 시각화하고 분석할 수 있다. 이를 통해 시스템의 상태를 모니터링하고 문제를 해결할 수 있다.
이상으로 ECS 환경에서 Filebeat, Logstash, ElasticSearch, Kibana를 이용한 로그 수집 프로젝트 구축 경험에 대해 정리해보았다. 특히, WAS와 Filebeat 컨테이너 간의 로그 파일 공유 부분에서 많은 고민을 했다. 나와 같은 고민을 하는 사람들에게 이 글이 도움이 되길 바란다.