CloudWatch Logs 전달 문제 해결

CloudWatch Logs 전달 문제 해결

출처: 문서

본문

CloudWatch Logs 로그 그룹에 로그가 나타나지 않음

전달을 구성했는데 CloudWatch Logs 로그 그룹에 로그가 보이지 않으면 다음을 확인하세요.

  • 전달이 활성 상태인지 확인합니다. aws logs describe-deliveries를 실행해 전달 상태가 ACTIVE인지 확인합니다.
  • 전달 소스를 확인합니다. aws logs describe-delivery-sources를 실행해 소스 버킷 ARN과 로그 유형(S3_SERVER_ACCESS_LOGS)이 올바른지 확인합니다.
  • 소스 버킷에 트래픽이 있는지 확인합니다. 서버 접근 로그는 소스 버킷에 요청이 있을 때만 생성됩니다. 버킷에 트래픽이 없으면 로그가 생성되지 않습니다.
  • 로그 그룹 리전을 확인합니다. 로그 그룹은 소스 버킷과 같은 AWS 리전에 있어야 합니다.
  • 초기 전달 시간을 허용합니다. 설정 후 첫 로그가 나타나기까지 몇 분이 걸릴 수 있습니다.

S3 Tables 통합이 채워지지 않음

CloudWatch Logs에는 로그가 나타나는데 S3 Tables 통합이 비어 있으면 다음을 확인하세요.

  • 통합이 존재하는지 확인합니다. CloudWatch 콘솔의 Settings, Global에서 S3 Table Integration이 나열되는지 확인합니다.
  • 소스가 연결되어 있는지 확인합니다. aws logs list-sources-for-s3-table-integration --integration-arn integration-arn을 실행해 전달 소스 이름과 유형이 목록에 나타나는지 확인합니다.
  • 서비스 역할 권한을 확인합니다. 통합에 사용되는 IAM 역할에 로그 그룹 ARN 범위의 logs:integrateWithS3Table 권한이 있어야 합니다. "S3 Tables 통합 활성화(선택)"를 참고하세요.
  • aws-cloudwatch 테이블 버킷이 존재하는지 확인합니다. Amazon S3 콘솔에서 Table buckets으로 이동해 aws-cloudwatch 버킷을 찾습니다. 존재하지 않으면 통합이 성공적으로 완료되지 않았을 수 있습니다.
  • 데이터가 나타나는 데 시간을 허용합니다. 통합이 CloudWatch Logs 전달보다 뒤처질 수 있습니다. 데이터는 보통 CloudWatch Logs로의 첫 전달 후 1시간 안에 나타납니다.
  • 통합이 새 데이터만 처리하는지 확인합니다. S3 Tables 통합은 연결이 생성되기 전의 로그를 역채우기하지 않습니다. 연결 후 추가된 로그 이벤트만 S3 Tables로 전달됩니다.

권한 오류

다음은 일반적인 권한 오류와 해결 방법이에요.

  • PutDeliverySource에서 Access Denied – 호출자에게 logs:PutDeliverySource와 s3:AllowVendedLogDeliveryForResource 권한이 필요해요.
  • CreateDelivery에서 Access Denied – 호출자에게 logs:CreateDelivery 권한이 필요해요.
  • CreateS3TableIntegration에서 Access Denied – 호출자에게 observabilityadmin:CreateS3TableIntegration 권한과 s3tables:CreateTableBucket, s3tables:PutTableBucketEncryption, s3tables:PutTableBucketPolicy 권한이 필요해요.
  • 로그 그룹의 AWS KMS 오류 – 로그 그룹이 AWS KMS 암호화를 사용한다면 AWS KMS 키 정책이 CloudWatch Logs 서비스 보안 주체에게 접근을 부여하는지 확인하세요. "암호화"를 참고하세요.
  • S3 Tables 통합의 AWS KMS 오류 – 로그 그룹이 AWS KMS 암호화를 사용하고 S3 Tables 통합이 활성화되어 있다면 AWS KMS 키 정책이 systemtables.cloudwatch.amazonaws.com과 maintenance.s3tables.amazonaws.com 둘 다에 접근을 부여하는지 확인하세요. "암호화"를 참고하세요.
  • Athena에서 조회할 때 Access Denied – 쿼리를 실행하는 IAM 보안 주체가 aws-cloudwatch 테이블 버킷과 S3 Tables 카탈로그에 접근할 권한이 있는지 확인하세요. AWS Lake Formation을 사용한다면 SELECT 및 DESCRIBE 권한 부여가 되어 있는지 확인하세요.

전달이 예기치 않게 중지됨

로그가 이전에는 전달됐는데 중지됐다면 다음을 확인하세요.

  • 소스 버킷 삭제됨. 소스 버킷이 삭제되면 전달이 중지됩니다. 버킷을 다시 만들면 새 전달을 다시 만들어야 합니다.
  • 로그 그룹 삭제됨. 로그 그룹이 삭제되면 전달이 중지됩니다. 새 로그 그룹을 만들고 전달 목적지를 업데이트하세요.
  • IAM 권한 회수됨. 전달에 필요한 권한이 제거되면 전달이 중지될 수 있습니다. 전달 구성에 필요한 권한이 여전히 있는지 확인하세요.
  • 서비스 할당량. 계정의 전달 한도에 대한 CloudWatch Logs 서비스 할당량을 확인하세요. 최대 전달 수에 도달했을 수 있습니다.

수집 비용 관리

CloudWatch Logs 수집 비용이 예상보다 높으면 다음을 고려하세요.

  • 보존 기간을 줄입니다. 로그 그룹에 더 짧은 보존 기간을 설정해 저장 비용을 줄이세요. CloudWatch Logs는 보존 기간을 초과하는 데이터를 자동으로 삭제해요.
  • 소스 버킷 트래픽을 검토합니다. 트래픽이 많은 버킷은 더 많은 로그를 생성해요. 모든 소스 버킷에 CloudWatch Logs 전달이 필요한지, 일부 버킷에는 무료인 일반 용도 버킷 전달 경로로 충분한지 고려하세요.
  • 볼륨 기반 요금을 사용합니다. CloudWatch Logs 벤디드 로그 수집 요금은 볼륨에 따라 계층화돼요. 볼륨이 높을수록 GB당 요율이 낮아져요. 현재 요율은 CloudWatch pricing을 참고하세요.

더 알아보기 (Learn more)