티스토리 뷰

Grafana, Loki를 ECS 환경에서 사용하여 모니터링, 로깅, 경보 시스템을 구축하게 된 서사를 먼저 설명한 후 기술 사용한 방법들을 적으면 좋을 것 같아서 따로 빼서 작성해보았다.

 

1️⃣ 배경

사내에서 진행중인 프로젝트의 수가 굉장히 많다. 동시에 돌리는 프로젝트의 개수가 약 10개정도 된다.

그중 프로덕트를 운영 & 개발하는 프로젝트의 백엔드 개발팀장으로 활동한다.

 

신규 피쳐 개발과 기존 피쳐 유지보수를 병행하는 것은 쉽지 않다.

개발 과정에서 우린 프리랜서 개발자들과 함께하고, 연차와 실력도 다양하다.

그들과 작업을 할 때 소통의 과정도 중요하지만 작업한 내용을 매니징 하는것도 꽤 중요하다.

 

개발한 내용을 리뷰하고 머지하여 배포를 하면 리뷰의 과정을 거쳤음에도 불구하고 예상치 못한 에러가 날 때가 있다.

이럴 때 가장 필요한건 모니터링과 로깅이지만 우린 이걸 알면서도 놓치고 있었다.

모니터링, 로깅, 경보 시스템을 구축하는 시간, 연구하는 시간, 테스트해보는 과정이 너무 길고,

그곳에 사용할 리소스를 실제 기능 개발에 더 투입하자는 리더단의 결정으로 인해 사람이 맨파워로 하고 있었다.

 

2️⃣ 문제

이 사람이 하는 작업들을 자동화 한다면 프로젝트 내에서의 비효율이 약 70% 이상 줄어들테고,

도입만 하면 특정 기술을 아는 사람만 작업자로 모실 필요도 없을텐데,,

이 로그들을 직접 열어보고 에러 로그를 찾아 작업자들에게 운반하는 비효율적인 작업을 없애고 싶었다.

또한 에러가 발생한다면 이건 운이 좋아야 QC 단계에 나오지만,

웬만하면 실제 사용자들, 고객에게 에러가 발생해버리기 때문에 빠르게 대응할 필요성도 있다고 생각했다.

 

3️⃣ 시작

회사에서 못하면 개인적으로 해야겠다.

 

워낙 인프라에 관심도 많고, 직접 부딪혀보고 싶은 생각도 컸다.

나와 마음이 맞는 팀원 한명과 함께 매주 스터디를 하면서 모니터링, 로깅, 경보 시스템에 대한 지식을 넓혀갔고,

실습을 병행하면서 우리 서비스에 녹일 방안들을 계속 생각했다.

 

처음에는 여러 기술들을 탐방해보았다.

흔히 쓰는 ELK, EFK, PLG(Grafana, Loki), CloudWatch, 등등

탐방하면서 기술들을 비교하며 어느 기술을 선택하는 것이 좋을지 토론했다.

(시간이 나면 기술 탐방 글도 올리겠다.)

 

가장 중요한 요소는 돈이었다. 💸

돈에도 여러 종류가 있겠지만 도입비용은 우리가 스터디로 할거니 공짜였고 운영비용이 적게 드는가가 중요했다.

(프로덕트에 사용할 예산이 적기에)

부가적인 요소는 시각적인 요소로도 볼 수 있는가 이정도?

 

4️⃣ 결정

고심끝에 우린 Grafana, Loki 를 사용하기로 했다.

운영비용이 공짜라는 것이 큰 메리트였다. (서버 비용 제외)

https://dev-dorydory.tistory.com/57

 

Grafana/Loki를 알아보자

정의 모든 애플리케이션과 인프라의 로그를 저장하고 쿼리하도록 설계된 로그 집계 시스템 개념 및 용어 Distributor 수집되는 로그를 받아 로그의 정확성을 검증한 후 Ingester로 넘김 Ingester 수집된

dev-dorydory.tistory.com

라이트하게 알아본 내용은 여기에 적혀있다.

 

그럼 이 기술을 활용해서 어떤식으로 구축할것인가?

 

일단 이 모니터링, 로깅, 경보 시스템 구축을 하는김에 ECS를 새로 사용하기로 했다. (ECS EC2)

이것도 도입 과정과 선택 이유 등을 나중에 독립된 글로 써보겠다.

 

5️⃣ 작업할 리스트

  • ECS에 Grafana, Loki용 인스턴스 하나, Spring Boot API Server용 인스턴스 하나 생성한다. (총 컨테이너 인스턴스 2개)
  • Grafana, Loki용 컨테이너 인스턴스에는 Grafana Service, Loki Service를 하나씩 만들고 각 태스크는 1개로 유지한다.
  • Spring Boot API Server용 컨테이너 인스턴스에는 API Service를 하나 만들고 로그를 긁어갈 수 있게 사이드카 패턴으로 fluentbit 컨테이너도 띄운다. (태스크 정의에서 설정 가능하며, 다음 글들에 실제 기술 사용 법들을 적을 예정이니 참고 바랍니다.)
  • Spring Boot API Server의 이미지와 Loki의 이미지는 ECR(Elastic Container Registry)에서 관리하며, Grafana의 이미지는 공식 이미지를 사용한다.
  • ECS 인프라 구축과 CI/CD 구축을 테라폼 코드로 작성하여 이로 관리한다.
  • 대시보드나 경보 시스템은 Grafana UI 내에서가 아닌 테라폼으로 프로비저닝 한다.

 

6️⃣ 결과

총 2023년 8월 말부터 시작해서 2023년 11월 말까지 약 3개월동안 스터디를 통해 연구하여 도입까지 완료했고, 

실제로 운영을 하며 유지보수중이다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함