본문 바로가기
IT 클라우드 정보

CloudWatch Logs 요금은 어디서 나올까, 수집·저장·조회 단가와 보존 기간 설정으로 줄이는 순서

by 킴스 클라우드 2026. 11. 5.

EC2 한 대와 Lambda 몇 개를 돌리는데 청구서의 CloudWatch 항목이 생각보다 큰 경우가 있습니다. 지표나 알람 몇 개로는 그런 금액이 나오지 않습니다. 대부분은 로그입니다. Lambda, ECS, RDS처럼 AWS 서비스가 자동으로 보내는 로그와 서버에서 에이전트로 올리는 로그가 모두 CloudWatch Logs에 쌓이고, 그 양에 따라 요금이 붙기 때문입니다.

 

로그 요금은 세 군데에서 나옵니다. 들어온 양(수집), 쌓여 있는 양(저장), 읽은 양(조회)입니다. 이 셋을 나눠서 보면 어디를 손봐야 하는지가 바로 보입니다. 이 글에서는 서울 리전 단가로 세 항목을 계산해 보고, 로그 그룹 설정 두 가지(보존 기간과 로그 클래스)로 얼마나 달라지는지 확인합니다.

 

단가는 AWS Price List 공개 데이터(서울 리전)에서 직접 뽑았고, 로그 양은 계산을 보여 주려고 정한 가정입니다. 실제 서비스에서 측정한 값이 아닙니다.

 

CloudWatch Logs 한 달 요금을 수집, 저장, 조회 세 항목으로 나눈 삽화
로그 요금은 들어온 양, 쌓인 양, 읽은 양 세 가지에 각각 붙습니다

 

세 가지 항목의 서울 리전 단가

항목 청구서 사용 유형 서울 리전 단가 무엇을 재는가
수집(Standard 클래스) DataProcessing-Bytes GB당 0.76달러 로그 그룹에 들어온 양(압축 전 크기)
수집(Essentials 클래스) DataProcessingIA-Bytes GB당 0.38달러 위와 같음, 기능 일부 제외
저장 TimedStorage-ByteHrs GB-월당 0.0314달러 보존 중인 양 × 시간
조회(Logs Insights) DataScanned-Bytes 스캔 GB당 0.0076달러 쿼리가 훑은 양(압축 전 크기)
실시간 보기(Live Tail) Logs-LiveTail 분당 0.01달러 세션 유지 시간, 매월 1,800분 무료

 

수집 단가가 저장 단가의 24배쯤 됩니다. 같은 1GB라도 들어올 때 0.76달러를 내고, 그 뒤로는 한 달 보관에 0.0314달러만 내는 구조입니다. 그래서 로그 요금을 줄일 때는 보존 기간보다 들어오는 양을 줄이는 쪽이 효과가 훨씬 큽니다. 보존 기간은 효과가 작아 보이지만, 아무 설정도 하지 않으면 매달 쌓여서 결국 수집 요금을 넘어서게 됩니다.

 

무료 사용량은 매월 수집·저장·스캔 각각 5GB씩이고 Live Tail은 1,800분입니다. 계정 전체 합산이므로 아래 계산에서는 이미 다른 로그가 쓴다고 보고 빼지 않았습니다. 수집량은 IncomingBytes 지표가 압축 전 바이트로 재며, Logs Insights 요금도 압축 전 크기 기준으로 스캔한 양에 붙는다고 공식 문서에 적혀 있습니다.

 

하루 1GB가 들어오는 서비스로 직접 계산

로그 그룹 전체에 하루 1GB(한 달 30GB)가 들어오고, 문제를 찾느라 Logs Insights로 하루 10GB(한 달 300GB)를 스캔한다고 가정했습니다. 저장량은 들어온 양이 그대로 보관된다고 보고 계산했습니다. 모두 가정입니다.

 

구성 수집 저장 조회 한 달 합계
Standard, 보존 무제한, 3년째 22.80달러 1,080GB → 33.91달러 2.28달러 58.99달러
Standard, 보존 무제한, 1년째 22.80달러 360GB → 11.30달러 2.28달러 36.38달러
Standard, 보존 30일 22.80달러 30GB → 0.94달러 2.28달러 26.02달러
Essentials, 보존 30일 11.40달러 30GB → 0.94달러 2.28달러 14.62달러

 

첫 달에는 어느 구성이든 수집 요금이 거의 전부입니다. 차이는 시간이 지나면서 벌어집니다. 보존 기간을 두지 않으면 저장량이 매달 30GB씩 늘어나 3년째에는 저장 요금 33.91달러가 수집 요금 22.80달러를 넘어섭니다. 보존 30일로 바꾸면 저장 요금은 1달러 아래로 고정됩니다.

 

같은 가정에서 하루 10GB가 들어오는 서비스는 Standard·보존 30일 구성이 한 달 239.70달러(수집 228.00 + 저장 9.42 + 조회 2.28)입니다. 이 정도면 로그 요금이 t3.medium 서버 여섯 대 값보다 큽니다. 이때 할 일은 보존 기간 조정이 아니라, 어느 로그 그룹이 하루 10GB를 만드는지 찾아서 수집량 자체를 줄이는 것입니다.

 

보존 기간 설정에 따라 로그 저장량과 월 저장 요금이 달라지는 비교 도식
보존 기간을 두지 않으면 저장량이 매달 늘어나 요금도 함께 커집니다

 

보존 기간: 기본값이 무제한이라는 점

로그 그룹을 만들면 보존 기간이 만료 안 함(Never expire)으로 시작합니다. Lambda가 자동으로 만드는 /aws/lambda/함수이름 로그 그룹도 마찬가지입니다. 설정을 바꾸지 않으면 3년 전 테스트 함수의 로그까지 계속 보관하고 매달 저장 요금을 냅니다. 보존 기간은 1일부터 10년 사이에서 로그 그룹마다 따로 고를 수 있고, 언제든 바꿀 수 있습니다.

 

하루 1GB 가정 보존 중인 양 월 저장 요금 이런 로그에
7일 7GB 0.22달러 개발·테스트 환경, 디버그 로그
30일 30GB 0.94달러 일반 애플리케이션 로그
90일 90GB 2.83달러 분기 단위로 돌아보는 운영 로그
1년 365GB 11.46달러 감사·규정상 1년 보관이 필요한 로그
무제한(3년째) 1,080GB 33.91달러 의도한 경우가 아니면 바꿀 것

 

바꾸는 방법은 CloudWatch 콘솔의 로그 그룹 목록에서 보존 열의 값을 눌러 기간을 고르면 끝입니다. 다만 기간을 줄여도 지난 로그가 바로 지워지지는 않습니다. 공식 문서는 만료 뒤 삭제까지 보통 72시간까지 걸린다고 적고 있고, 만료 표시가 된 로그는 실제 삭제 전이라도 저장 요금에서 빠집니다.

 

1년 이상 보관해야 하는 로그라면 CloudWatch에 두는 대신 S3로 내보내는 방법도 있습니다. S3 Standard는 GB-월당 0.025달러로 CloudWatch 저장(0.0314달러)보다 조금 싸고, Glacier 계열로 옮기면 더 내려갑니다. 다만 내보내기 작업은 로그가 들어온 뒤 최대 12시간이 지나야 가능하고 계정당 한 번에 하나만 돌릴 수 있어, 정기 보관 용도라면 구독 필터로 보내는 편이 맞다고 문서는 안내합니다.

 

로그 클래스: Essentials로 수집 요금 절반

로그 그룹을 만들 때 클래스를 고를 수 있습니다. Standard는 모든 기능을 쓸 수 있고, Essentials(옛 이름 Infrequent Access)는 수집 단가가 절반이지만 기능 일부가 빠집니다. AWS 문서는 두 클래스가 수집 요금만 다르고 저장·조회 요금은 같다고 적고 있습니다. 만든 뒤에는 클래스를 바꿀 수 없으므로 만들 때 정해야 합니다.

 

기능 Standard Essentials
Logs Insights 쿼리·필드 자동 발견 가능 가능(일부 명령 제외)
S3 내보내기·KMS 암호화·민감 정보 마스킹 가능 가능
지표 필터(로그에서 지표 만들기) 가능 불가
구독 필터(Lambda·Firehose로 실시간 전달) 가능 불가
Live Tail·이상 탐지·필드 인덱스 가능 불가
GetLogEvents·FilterLogEvents API 가능 불가(Insights로 조회)
Container Insights·Lambda Insights 로그 수집 가능 불가

 

고르는 기준은 간단합니다. 그 로그로 알람을 만들거나(지표 필터) 다른 곳으로 실시간 전달해야 하면 Standard입니다. 문제가 생겼을 때 들어가서 검색만 하면 되는 로그, 예를 들어 접근 기록이나 배치 작업 출력이라면 Essentials로 충분합니다. 위 표의 하루 1GB 가정에서 Essentials는 한 달 11.40달러를 아낍니다.

 

AWS 서비스가 대신 만들어 보내는 로그(VPC 흐름 로그, Route 53 쿼리 로그 등)는 사용 유형이 VendedLog-Bytes로 따로 잡히고, 양이 많아지면 단가가 내려갑니다. 서울 리전 Standard 기준 첫 10TB는 GB당 0.76달러로 같지만 다음 20TB는 0.38달러, 그다음 20TB는 0.152달러, 50TB를 넘으면 0.076달러입니다. Essentials 클래스로 받으면 첫 10TB가 0.38달러부터 시작합니다. 흐름 로그를 감사용으로만 쌓는다면 CloudWatch 대신 S3로 바로 보내는 선택지도 문서가 권합니다.

 

어느 로그 그룹이 범인인지 찾기

청구서에는 CloudWatch 한 줄로만 보이므로 어느 로그 그룹이 많이 쓰는지는 따로 찾아야 합니다. 두 가지 길이 있습니다.

 

  • CloudWatch 지표: 네임스페이스 AWS/Logs의 IncomingBytes를 LogGroupName 차원으로 그려 보면 로그 그룹별 수집량이 바로 나옵니다. 1시간 합계를 GB로 바꾸고 0.76을 곱하면 그 그룹의 시간당 수집 요금입니다.
  • Cost Explorer: 서비스를 CloudWatch로 거르고 차원을 사용 유형(Usage Type)으로 두면 DataProcessing-Bytes, TimedStorage-ByteHrs, DataScanned-Bytes가 각각 얼마인지 나뉩니다. 차원을 리소스로 두면 로그 그룹 단위로 보이는데, 이때는 최근 14일만 조회됩니다.

 

수집량이 큰 그룹을 찾았다면 그다음은 로그를 덜 보내는 일입니다. 공식 비용 문서가 권하는 방법은 두 가지입니다. 하나는 필요한 이벤트만 남기고 장황한 형식을 줄이는 것, 다른 하나는 CloudWatch 에이전트의 로그 필터 표현식으로 조건에 맞는 줄만 올리는 것입니다. 애플리케이션이 디버그 수준 로그를 운영 환경에서도 찍고 있다면 로그 수준 하나만 올려도 수집량이 크게 줄어듭니다. Lambda 로그의 구조와 요금 계산은 Lambda 요금 글에, Cost Explorer 보는 법은 비용 할당 태그 글에 정리해 두었습니다.

 

조회 요금이 의외로 커지는 경우

Logs Insights는 쿼리가 훑은 양에 요금이 붙습니다. 단가는 스캔 GB당 0.0076달러로 작지만, 기간을 30일로 넓게 잡고 로그 그룹 여러 개를 한꺼번에 조회하면 한 번에 수백 GB를 스캔할 수 있습니다. 위 가정처럼 하루 10GB면 한 달 2.28달러지만, 대시보드에 쿼리를 붙여 두고 새로 고칠 때마다 전체 기간을 다시 스캔하면 그 몇 배가 됩니다.

 

  • 쿼리 시간 범위를 필요한 만큼만 좁힙니다. 스캔량은 범위에 비례합니다.
  • 쿼리를 취소해도 그때까지 스캔한 양은 청구되며, 실패한 쿼리는 청구되지 않습니다(AWS FAQ).
  • 쿼리 결과는 7일간 보관되므로 같은 결과를 다시 보려면 기록에서 열면 됩니다. 다시 실행하면 다시 스캔합니다.
  • Live Tail은 매월 1,800분(하루 약 1시간)까지 무료이고 넘으면 분당 0.01달러입니다. 하루 2시간씩 켜 두면 한 달 18달러입니다.

 

로그에서 지표를 뽑아 알람을 거는 지표 필터 방식은 Logs Insights 스캔 요금이 들지 않습니다. 같은 조건을 매번 쿼리로 확인하고 있다면 지표 필터로 바꾸는 편이 싸고, 설정 순서는 CloudWatch 지표·알람·로그 글에 있습니다.

 

로그 그룹 하나당 점검할 네 가지

  • 보존 기간이 만료 안 함으로 남아 있지 않은가 → 용도에 맞게 7일~1년으로 바꾼다
  • 하루 수집량(IncomingBytes)이 예상보다 크지 않은가 → 로그 수준·필터로 들어오는 양을 줄인다
  • 알람·실시간 전달이 필요 없는 로그인데 Standard로 만들지 않았는가 → 새로 만들 때 Essentials를 고른다
  • Insights 쿼리를 넓은 범위로 반복 실행하고 있지 않은가 → 범위를 좁히고 반복 조건은 지표 필터로 옮긴다

 

단가 출처는 Amazon CloudWatch 요금 페이지와 AWS Price List 공개 데이터(서울 리전, 2026년 10월 7일 게시본)입니다. 규칙은 로그 클래스 문서, 로그 그룹 보존 기간 문서, CloudWatch 비용 분석 문서, Logs Insights 문서에서 확인했습니다. 금액은 달러 그대로이고 부가세는 별도입니다. 요금은 바뀔 수 있으니 결제 전에 공식 요금 페이지를 확인하세요.