AWS logs, cloudwatch 명령어 사용

오픈소스·2025년 7월 13일

🔍 AWS CLI를 이용한 Lambda Timeout 모니터링 시스템 분석 가이드

문제 해결 과정에서 사용한 AWS CLI 명령어들을 단계별로 설명드리겠습니다.

🔍 1단계: 기본 리소스 존재 확인

로그 그룹 확인

# timeout 관련 모든 로그 그룹 조회
aws logs describe-log-groups \
  --log-group-name-prefix "/aws/lambda/timeout" \
  --region ap-northeast-2 \
  --query 'logGroups[].{LogGroupName:logGroupName,CreationTime:creationTime,MetricFilterCount:metricFilterCount}'

메트릭 필터 확인

# 특정 로그 그룹의 메트릭 필터 조회
aws logs describe-metric-filters \
  --log-group-name "/aws/lambda/timeout-v2-dev-TimeoutTest" \
  --region ap-northeast-2

CloudWatch 알람 확인

# TimeoutTest 관련 모든 알람 조회
aws cloudwatch describe-alarms \
  --alarm-name-prefix "LambdaTimeoutAlarm" \
  --region ap-northeast-2 \
  --query 'MetricAlarms[?contains(AlarmName, `TimeoutTest`)].{AlarmName:AlarmName,MetricName:MetricName,Namespace:Namespace}'

🔍 2단계: 메트릭 데이터 확인

CloudWatch 메트릭 조회

# v2 메트릭 데이터 확인 (24시간)
aws cloudwatch get-metric-statistics \
  --namespace "LambdaTimeouts" \
  --metric-name "timeout-v2-dev-TimeoutTest" \
  --dimensions \
  --start-time "2025-07-12T00:00:00" \
  --end-time "2025-07-13T00:00:00" \
  --period 3600 \
  --statistics Sum \
  --region ap-northeast-2

모든 메트릭 목록 확인

# LambdaTimeouts 네임스페이스의 모든 메트릭
aws cloudwatch list-metrics \
  --namespace "LambdaTimeouts" \
  --region ap-northeast-2

🔍 3단계: 로그 분석

최신 로그 스트림 찾기

# 최신 3개 로그 스트림 조회
aws logs describe-log-streams \
  --log-group-name "/aws/lambda/timeout-v2-dev-TimeoutTest" \
  --order-by LastEventTime \
  --descending \
  --max-items 3 \
  --region ap-northeast-2

실제 로그 내용 확인

# 특정 로그 스트림의 이벤트 조회
aws logs get-log-events \
  --log-group-name "/aws/lambda/timeout-v2-dev-TimeoutTest" \
  --log-stream-name "2025/07/12/[6]abc1d4cd56d04c8fad395f55c1c5081d" \
  --region ap-northeast-2

로그 필터링 (특정 패턴 검색)

# timeout 패턴으로 로그 검색
aws logs filter-log-events \
  --log-group-name "/aws/lambda/timeout-v2-dev-TimeoutTest" \
  --start-time $(date -d '1 hour ago' +%s)000 \
  --filter-pattern '"Status: timeout"' \
  --region ap-northeast-2

🔍 4단계: 메트릭 필터 패턴 테스트

실제 로그로 패턴 검증

# 메트릭 필터 패턴이 로그와 매치되는지 테스트
aws logs test-metric-filter \
  --filter-pattern '"Status: timeout"' \
  --log-event-messages 'REPORT RequestId: xxx...Status: timeout' \
  --region ap-northeast-2

실제 로그 메시지로 자동 테스트

# 최신 로그로 패턴 테스트 (한 줄로)
aws logs test-metric-filter \
  --filter-pattern '"Status: timeout"' \
  --log-event-messages "$(aws logs get-log-events --log-group-name "/aws/lambda/timeout-v2-dev-TimeoutTest" --log-stream-name "로그스트림명" --region ap-northeast-2 --query 'events[-1].message' --output text)" \
  --region ap-northeast-2

🔍 5단계: 알람 히스토리 분석

알람 상태 변화 히스토리

# 특정 알람의 최근 10개 히스토리 조회
aws cloudwatch describe-alarm-history \
  --alarm-name "LambdaTimeoutAlarm - timeout-v2-dev-TimeoutTest" \
  --region ap-northeast-2 \
  --max-records 10 \
  --query 'AlarmHistoryItems[].{Timestamp:Timestamp,HistoryItemType:HistoryItemType,HistoryData:HistoryData}'

알람 상세 설정 확인

# 알람의 현재 설정과 상태
aws cloudwatch describe-alarms \
  --alarm-names "LambdaTimeoutAlarm-V2 - timeout-v2-dev-TimeoutTest" \
  --region ap-northeast-2 \
  --query 'MetricAlarms[0].{Period:Period,Statistic:Statistic,StateValue:StateValue,AlarmConfigurationUpdatedTimestamp:AlarmConfigurationUpdatedTimestamp}'

📊 유용한 시간 관련 명령어

시간 변환

# Unix timestamp를 사람이 읽을 수 있는 형식으로
date -d @1752196796 '+%Y-%m-%d %H:%M:%S UTC'

# 1시간 전 timestamp (밀리초)
date -d '1 hour ago' +%s)000

# 현재 시간을 ISO 형식으로
date -u +%Y-%m-%dT%H:%M:%S

🔧 실전 문제 해결 시퀀스

# 1. 전체 상황 파악
aws logs describe-log-groups --log-group-name-prefix "/aws/lambda/timeout" --region ap-northeast-2

# 2. 메트릭 필터 확인
aws logs describe-metric-filters --log-group-name "/aws/lambda/timeout-v2-dev-TimeoutTest" --region ap-northeast-2

# 3. 알람 상태 확인
aws cloudwatch describe-alarms --alarm-name-prefix "LambdaTimeoutAlarm" --region ap-northeast-2 --output table

# 4. 최신 로그 확인
aws logs describe-log-streams --log-group-name "/aws/lambda/timeout-v2-dev-TimeoutTest" --order-by LastEventTime --descending --max-items 1 --region ap-northeast-2

# 5. 메트릭 데이터 확인
aws cloudwatch get-metric-statistics --namespace "LambdaTimeouts" --metric-name "timeout-v2-dev-TimeoutTest" --dimensions --start-time "2025-07-12T00:00:00" --end-time "2025-07-13T00:00:00" --period 3600 --statistics Sum --region ap-northeast-2

# 6. 알람 히스토리 확인
aws cloudwatch describe-alarm-history --alarm-name "문제가_된_알람명" --region ap-northeast-2 --max-records 5

💡 팁과 주의사항

  1. 시간대: 모든 AWS 시간은 UTC 기준
  2. 권한: CloudWatch 및 CloudWatch Logs 읽기 권한 필요
  3. 필터 패턴: 특수문자(:, " 등) 사용 시 따옴표 주의
  4. 출력 형식: --output table, --output json, --output text 활용
  5. 쿼리: --query 옵션으로 필요한 필드만 추출 가능

이 명령어들을 순서대로 실행하시면 Lambda timeout 모니터링 시스템의 전체 상황을 파악하고 문제를 진단할 수 있습니다.

0개의 댓글