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을 참고하세요.