이전 강의에서는 Grafana, Loki, Promtail을 사용하여 마이크로서비스의 로그를 수집하는 방법을 구현했습니다. 중요한 점은 마이크로서비스 자체에는 어떠한 변경도 가하지 않았다는 것입니다. 다음은 현재까지의 요약 및 다음에 다룰 내용을 소개하겠습니다.
1. 도커 이미지 생성
s11
태그로 모든 6개의 마이크로서비스에 대한 도커 이미지를 생성했습니다.
- 이 이미지들은 이제 배포를 위한 준비가 완료되었습니다.
2. Docker Compose 실행
prod
프로필에서 docker-compose up -d
명령을 실행했습니다.
- 이 명령어는 Grafana, Loki, Promtail, Minio를 포함하여 필요한 모든 컨테이너를 시작합니다.
- YAML 파일의 들여쓰기 문제를 수정한 후 모든 서비스가 성공적으로 시작되었습니다.
3. 로그 수집의 실제 활용
- Postman을 사용하여 다양한 API 요청을 테스트했고, 이를 통해 여러 마이크로서비스에서 로그가 생성되었습니다.
- 로그 수집이 없을 경우, 개발자는 각 마이크로서비스의 로그를 개별적으로 확인해야 하는데, 이는 매우 번거롭고 시간이 많이 걸리는 작업입니다.
4. Grafana를 통한 로그 탐색
localhost:3000
에서 실행 중인 Grafana를 통해 Loki와 Promtail이 수집한 로그를 검색하고 분석할 수 있습니다.
- Grafana에는 Loki를 위한 데이터 소스가 사전 설정되어 있어 모든 마이크로서비스의 로그에 쉽게 접근할 수 있습니다.
- 로그를 컨테이너 이름으로 필터링하거나, "line contains" 등의 검색 옵션을 사용하여 특정 로그 항목을 찾을 수 있습니다.
- 이러한 중앙 집중식 로그 수집 접근 방식은 디버깅 및 마이크로서비스의 내부 상태를 이해하는 과정을 크게 간소화합니다.
5. 로컬 로그 저장
- 로그는
prod
프로필의 도커 설정 내 .data
디렉토리에 로컬로 저장됩니다.
- 이 디렉토리는 Minio 컨테이너에 마운트되어 있으며, 저장소 역할을 합니다.
- 프로덕션 환경에서는 이 로컬 저장소를 AWS S3와 같은 클라우드 저장소 솔루션으로 대체할 수 있습니다.
6. 다음 단계: 메트릭
- 관찰 가능성의 첫 번째 기둥인 로그를 다루었으니, 이제 메트릭라는 두 번째 기둥을 탐구할 준비가 되었습니다.
- 메트릭를 통해 마이크로서비스의 성능과 상태를 실시간으로 모니터링할 수 있으며, 이를 통해 시스템 최적화 및 확장에 대한 인사이트를 얻을 수 있습니다.
다음 강의에서는 메트릭스를 어떻게 구현하고 활용할 수 있는지에 대해 자세히 다루도록 하겠습니다.