Skip to content

모니터링

모니터링 스택 개요

도구용도환경
Prometheus메트릭 수집Dev (ECS 서비스)
Grafana메트릭 대시보드Dev (ECS 서비스)
Sentry에러 추적/알림Dev + Prod
CloudWatch Logs컨테이너 로그Dev + Prod

Prometheus 메트릭

Dev 환경 구성

Dev 환경에서는 Prometheus와 Grafana가 ECS 서비스로 운영됩니다.

서비스포트설정
prometheus9090launchType: FARGATE, Service Discovery 비활성화
grafana3000ALB 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-coreSentry KotlinAPI 에러, DB 쿼리 실패, 외부 API 오류
truloop-ai-serverSentry PythonAI 모델 호출 실패, 비동기 태스크 오류
truloop-assistantSentry PythonAgent 실행 오류, Tool 호출 실패
truloop-media-serviceSentry Go미디어 업로드/처리 오류
truloop-web-inviteSentry 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 로그 그룹 목록에 추가