다크 모드
모니터링
모니터링 스택 개요
| 도구 | 용도 | 환경 |
|---|---|---|
| Prometheus | 메트릭 수집 | Dev (ECS 서비스) |
| Grafana | 메트릭 대시보드 | Dev (ECS 서비스) |
| Sentry | 에러 추적/알림 | Dev + Prod |
| CloudWatch Logs | 컨테이너 로그 | Dev + Prod |
Prometheus 메트릭
Dev 환경 구성
Dev 환경에서는 Prometheus와 Grafana가 ECS 서비스로 운영됩니다.
| 서비스 | 포트 | 설정 |
|---|---|---|
prometheus | 9090 | launchType: FARGATE, Service Discovery 비활성화 |
grafana | 3000 | ALB Target Group 연결, 외부 접근 가능 |
정보
모니터링 서비스는 일반 서비스와 다른 ECS 설정을 사용합니다. capacityProviderStrategy 대신 launchType: FARGATE를 직접 지정하고, Service Discovery를 비활성화합니다.
수집 대상
Prometheus는 ECS 서비스의 메트릭 엔드포인트에서 데이터를 스크래핑합니다.
- truloop-core: Ktor/Micrometer 메트릭
- truloop-ai-server: FastAPI/Prometheus 메트릭
- chatter: pydantic-ai 서비스 메트릭
- truloop-media-service: Go 서비스 메트릭
Grafana 대시보드
Dev 환경에서 Grafana에 접근하여 서비스 상태를 시각화합니다.
- 접근: ALB를 통해 외부 접근 가능 (Target Group 연결)
- 인증: Grafana 관리자 비밀번호는 AWS Secrets Manager에 저장 (
grafana-*-admin-password-*패턴)
Sentry 에러 추적
각 서비스에서 발생하는 런타임 에러를 Sentry로 추적합니다.
연동 서비스
| 서비스 | SDK | 주요 추적 항목 |
|---|---|---|
| truloop-core | Sentry Kotlin | API 에러, DB 쿼리 실패, 외부 API 오류 |
| truloop-ai-server | Sentry Python | AI 모델 호출 실패, 비동기 태스크 오류 |
| truloop-assistant | Sentry Python | Agent 실행 오류, Tool 호출 실패 |
| truloop-media-service | Sentry Go | 미디어 업로드/처리 오류 |
| truloop-web-invite | Sentry JavaScript | 클라이언트 런타임 에러 |
정보
Sentry 설정(DSN 등)은 각 서비스의 환경변수로 관리되며, AWS Secrets Manager를 통해 주입됩니다.
CloudWatch Logs
모든 ECS 서비스의 컨테이너 로그는 CloudWatch Logs로 자동 전송됩니다.
로그 그룹 패턴
/ecs/truloop-core-{env}
/ecs/chatter-{env}
/ecs/truloop-ai-server-fastapi-{env}
/ecs/truloop-ai-server-celery-worker-{env}
/ecs/truloop-media-service-{env}ECS 로그 설정
Task Definition에서 awslogs 드라이버를 사용합니다.
json
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/truloop-core-dev",
"awslogs-region": "ap-northeast-2",
"awslogs-stream-prefix": "ecs"
}
}
}주의
CloudWatch Logs 스트림 생성 권한은 ECS Execution Role에 포함되어 있습니다. 새 서비스 추가 시 로그 그룹 생성이 자동으로 이루어집니다.
Health Check
ALB Health Check
ALB는 각 Target Group에 대해 주기적으로 Health Check를 수행합니다.
| 항목 | 설정 |
|---|---|
| 프로토콜 | HTTP |
| 경로 | 서비스별 Health Check 경로 |
| 간격 | 30초 |
| Healthy threshold | 서비스별 설정 |
| Unhealthy threshold | 서비스별 설정 |
ECS Service Health
ECS 서비스는 Deployment Circuit Breaker가 활성화되어 있어, 배포 실패 시 자동 롤백됩니다.
typescript
deploymentCircuitBreaker: {
enable: true,
rollback: true,
}알림 체계
Sentry 알림
- 새로운 에러 발생 시 Slack 알림
- 에러 빈도 임계치 초과 시 경고
AWS 알림
- ECS 서비스 배포 실패 시 GitHub Actions 실패 알림
- RDS/Redis 장애 시 CloudWatch Alarm (서비스별 인프라에서 설정)
변경 이력
| 날짜 | 변경 내용 |
|---|---|
| 2026-03-10 | 소스 코드 검증: truloop-media-service를 Prometheus 수집 대상, Sentry 연동 서비스, CloudWatch 로그 그룹 목록에 추가 |