Amazon Web Services 한국 블로그
비용 최적화 시리즈 1부: AWS 사용량에 대한 시각화로 비용 최적화 인사이트 얻기
이 글은 AWS Cloud Operations & Migrations Blog에 게시된 Visualize and gain insights into your AWS cost and usage with Amazon Managed Grafana를 한국어로 번역 및 편집하였습니다.
기존 워크로드를 AWS로 마이그레이션 하고 사용량이 증가함에 따라 AWS의 사용 현황을 세부적으로 파악하여 발생되는 비용과 사용량을 효과적으로 관리하는 것이 중요해졌습니다. AWS는 고객의 워크로드에서 발생되는 비용을 시각화하거나 비정상적인 사용량을 감지할 수 있도록 AWS Cost Explorer, AWS Budgets, AWS Cost Anomaly Detection와 같은 다양한 서비스를 기본으로 제공하며, AWS 비용 및 사용량 보고서(CUR)를 사용하여 AWS 리소스들에 대한 세부적인 비용 및 사용량을 분석할 수 있습니다.
Amazon Managed Grafana는 고객이 여러 데이터 소스에서 생성되는 애플리케이션의 운영 메트릭이나 로그들을 즉시 쿼리하고 상호 연계하여 시각화할 수 있는 완전 관리형 데이터 시각화 서비스입니다. Amazon Managed Grafana는 오픈 소스 Grafana와 호환되며 Amazon CloudWatch, Amazon OpenSearch Service, Amazon Athena, Amazon Managed Service for Prometheus (AMP)와 같이 운영 데이터를 수집하는 AWS 데이터 소스와 통합됩니다. 또한, 널리 사용되는 오픈소스 데이터베이스나 3rd party ISV 모니터링 도구, 기타 클라우드 서비스에 대한 플러그인을 제공합니다. Amazon Managed Grafana를 사용하면 여러 AWS 서비스와 AWS 계정 및 리전의 정보를 단일 대시보드에서 쉽게 시각화할 수 있습니다.
Amazon Athena는 표준 SQL을 사용하여 데이터를 쉽게 분석할 수 있는 대화형 쿼리 서비스입니다. Athena는 서버리스 서비스 이므로 관리할 인프라가 없고 실행한 쿼리에 대해서만 비용을 지불하면 됩니다.
본 게시글에서는 Amazon Athena 플러그인을 사용하면서 Amazon Managed Grafana를 통해 AWS 비용 및 사용량 데이터를 시각화하고 분석하는 방법을 안내해 드립니다.
Solution overview
아래 다이어그램은 본 블로그에서 설명하게될 전체 아키텍쳐 입니다.
먼저 CloudFormation 템플릿을 사용하여 AWS 비용 및 사용량 보고서(CUR)를 생성하고 이를 S3 버킷에 저장합니다. 그런 다음 Athena를 사용하여 CUR 보고서를 분석하고 쿼리합니다. 마지막으로, Amazon Managed Grafana에서 Athena 플러그인을 이용해 CUR 보고서의 비용 및 사용량 데이터를 시각화해 보겠습니다.
1단계: 비용 및 사용량 보고서 설정 및 생성
이 솔루션은 AWS 비용 및 사용량 보고서(CUR)에 있는 청구 데이터를 활용합니다. AWS CUR은 비용과 사용량을 시간 또는 리소스 ARN 단위로 세분화하며, 가장 포괄적인 비용 및 사용량 데이터 세트를 포함합니다.
- CUR 보고서를 생성하려면 비용 및 사용량 보고서 생성하기에서 자세한 지침을 따릅니다. CUR을 생성할 때 다음 옵션을 고려해야합니다.:
AWS CUR을 저장할 새 Amazon S3 버킷을 구성합니다. 버킷 이름은demo-cur-report-XXXX<사용자 계정 등>
이라고 지정합니다. - “리소스 ID 포함”을 선택합니다. 많은 청구 레코드에 자동으로 리소스 ID가 포함되므로 청구서의 세그먼트를 이해할 때 유용한 컨텍스트가 될 수 있습니다.
- “마감된 청구서가 있는 이전 달의 요금이 감지되면 비용 및 사용량 보고서 자동으로 새로 고침”을 선택합니다. 이렇게 하면 일부 환불, 크레딧 및 AWS 지원 요금은 해당 월이 마감된 후에 계산되므로 가장 정확하게 표시할 수 있습니다.
- 보고서 버전 관리를 위해 ‘기존 보고서 덮어쓰기(Overwrite existing report)’를 선택합니다. CUR이 제공될 때 전체 월의 데이터가 하루에 여러 번 기록됩니다. 덮어쓰기를 사용하면 현재 월의 최신 사본만 사용할 수 있으며 중복 데이터를 저장하지 않아도 됩니다.
- 사용 가능한 가장 높은 세분성을 받으려면 “시간별(Hourly)”을 선택합니다.
- 보고서 데이터 통합 사용 대상에 대해 “Amazon Athena”를 선택합니다. 그러면 Athena가 Grafana 대시보드에 대한 효율적인 쿼리를 실행하는 데 필요한 (Apache) Parquet 압축 유형이 자동으로 선택됩니다.
- AWS에서 첫 번째 보고서를 생성하고 S3 버킷으로 전송하는데 최대 24시간이 걸릴 수 있습니다.
2단계: Athena를 사용하여 AWS CUR 쿼리하기
Amazon Athena의 표준 SQL을 사용하여 S3에서 AWS CUR의 데이터를 쿼리하고 분석해 보겠습니다.
비용 및 사용량 보고서와 Athena의 일회성 통합을 간소화 및 자동화하기 위해 AWS는 AWS CloudFormation 템플릿을 제공합니다. 이렇게 하면 분석을 위해 데이터를 준비하기 위해 추가 작업을 할 필요 없이 최신 비용 및 사용량 정보를 항상 Athena에서 사용할 수 있습니다. AWS CloudFormation 템플릿을 사용하여 Athena 설정에 대한 자세한 지침에 따라 Athena와의 통합을 완료합니다.
Grafana 쿼리를 위한 Athena 작업 그룹 생성 및 IAM 권한 구성
Athena는 워크그룹을 지원하여 사용자 또는 애플리케이션 간에 워크로드 구성을 분리할 수 있습니다. 이 솔루션은 전용 작업 그룹을 사용하여 Athena 쿼리 및 원본 AWS CUR 데이터에 대한 액세스를 간소화합니다.
Amazon Managed Grafana의 쿼리 결과를 저장하기 위해 S3 버킷을 만들어 보겠습니다. S3 버킷 보안에 대해 자세히 알아보려면 Amazon S3의 보안 모범 사례를 참조합니다.
- AWS 관리 콘솔의 서비스 메뉴에서 S3를 선택합니다.
- S3 버킷 이름에 다음 접두사를 사용하여 서비스 관리형 AWS ID 및 액세스 관리(IAM) 정책과의 호환성을 확인합니다:
grafana-athena-query-results-XXXX
(S3 버킷 이름 예시:grafana-athena-query-results-test-230512
)
다른 S3 버킷 이름을 사용하여 쿼리 결과를 저장하려는 경우, 다음과 같이 IAM 역할 AmazonGrafanaServiceRole-XXXX
에 대한 S3 버킷에 대해 s3.Get*
및 s3.List*
권한을 추가해야 합니다.
- AWS 리전의 경우, Amazon Managed Grafana 작업 공간을 배포하려는 동일한 AWS 리전에서 S3 버킷을 생성해야 합니다.
이제 Grafana 쿼리를 위한 새로운 Athena 작업 그룹을 생성하겠습니다:
- 콘솔의 서비스 메뉴에서
Athena
를 선택합니다. - 왼쪽 메뉴에서
작업 그룹(Workgroups)
을 선택합니다. 작업 그룹 만들기(Create workgroup)
를 선택합니다.- 작업 그룹 이름을 입력합니다. 예:
Grafana
. - 조회 결과 위치는 ‘비용 및 사용량 리포트 설정 및 생성’ 섹션에서 생성한 버킷의 S3 경로를 입력합니다.
- S3 버킷 이름 예시:
s3://grafana-athena-query-results-XXXX
- 작업 그룹 이름을 입력합니다. 예:
- 태그의 경우
새 태그 추가(Add new tag)
를 선택합니다. - 태그 키를 클릭합니다:
GrafanaDataSource
- 태그 값:
true
- 작업 그룹 만들기를 선택합니다.
위의 키와 값으로 태그를 추가하는 것은 Athena 작업 그룹과 함께 Amazon Managed Grafana 작업 공간의 서비스 관리형 IAM 정책을 사용하는 데 필수적입니다.
이제 기능적인 Athena 쿼리 에디터를 사용할 수 있습니다. 이제 새 작업 그룹에서 AWS CUR 데이터에 대해 SQL과 유사한 쿼리를 실행할 수 있습니다. Athena에서 SQL 쿼리를 실행하는 방법에 대한 자세한 내용은 Amazon Athena 쿼리 실행하기를 참조하세요.
3단계: Amazon Managed Grafana 워크스페이스 설정하기
Amazon Managed Grafana를 구성하고 설정하는 방법에 대한 자세한 내용은 Amazon Managed Grafana – 시작하기를 참조하세요. Amazon Managed Grafana를 사용하면 AWS IAM Identity Center 또는 기타 SAML 기반 IdP(신원 공급자)를 통해 사용자 액세스를 구성할 수 있습니다. 이 게시물에서는 Amazon Managed Grafana와 함께 AWS IAM Identity Center 옵션을 사용합니다. 인증 및 권한 부여를 설정하려면 Amazon Managed Grafana 사용자 가이드의 지침에 따라 AWS IAM Identity Center를 활성화하세요.
Amazon Managed Grafana에서 Athena 데이터 소스 구성하기
Amazon Managed Grafana에서 Athena 데이터 소스를 구성하기 전에 S3에서 이미 AWS CUR을 사용할 수 있는지, Amazon Athena를 사용하여 AWS CUR 데이터를 쿼리할 수 있는지 확인하세요.
- 왼쪽 탐색 메뉴의 AWS 로고에서
AWS 서비스(AWS Services)
를 선택합니다. - 그러면 선택할 수 있는 모든 AWS 데이터 소스가 표시되는 화면으로 이동합니다. 목록에서
Athena
를 선택합니다.
- Athena 및 S3 버킷이 설정된 리전을 선택합니다.
- AWS CUR 리포팅을 위해 설정한 Athena 워크그룹에 해당하는 데이터베이스 + 워크스페이스를 확인합니다.
데이터 소스 1개 추가를 선택
합니다. 지정한 작업 그룹이 이전 섹션 ‘Grafana 쿼리를 위한 Amazon Athena 작업 그룹 만들기’에서 만든 작업 그룹인지 확인합니다.- 이제
설정
으로 이동하여저장 및 테스트
를 선택하여 데이터 소스가 예상대로 작동하는지 확인합니다.
AmazonGrafanaServiceRole-XXXX에 대한 IAM 권한 구성
이제 콘솔의 서비스 메뉴에서 IAM을 선택하고 역할에서 AmazonGrafanaServiceRole-XXXX 역할을 검색합니다.
AmazonS3ReadOnlyAccess AWS 관리형 정책을 첨부하여 Amazon Managed Grafana가 AWS CUR 보고서로 S3 버킷을 쿼리할 수 있도록 합니다. IAM 정책을 특정 S3 버킷으로 제한할 수도 있습니다. 자세한 내용은 IAM 정책 작성하기 포스팅에서 확인할 수 있습니다: Amazon S3 버킷에 대한 액세스 권한을 부여하는 방법.
4단계: Grafana 대시보드 시각화하기
Amazon Managed Grafana에는 Athena 데이터 소스에 대한 비용 및 사용량 분석을 위한 기본 Grafana 대시보드가 있습니다.
기본 ‘Athena 비용 및 사용량 보고서 대시보드
기본 Amazon Managed Grafana 대시보드를 가져오려면, Athena 데이터 소스 화면에서 다음과 같이 두 번째 탭 대시보드를 선택합니다.
대시보드를 가져오려면 Athena 비용 및 사용량 보고서 옆의 가져오기를 선택합니다. 대시보드 메뉴에서 ‘브라우저’를 선택하여 모든 그라파나 대시보드를 확인합니다.
AWS CUR 보고서에서 비용 및 사용량 메트릭을 보여주는 Grafana 대시보드를 확인할 수 있습니다.
사용자 지정 비용 및 사용량 SQL 쿼리
고유한 SQL 쿼리를 사용하여 사용자 정의 비용 및 사용량 Grafana 패널과 대시보드를 만들 수도 있습니다. 예를 들어, 다음 쿼리는 각 지역의 AWS 서비스별 연간 누계 비용을 보여줍니다.
이제 새 Amazon Managed Grafana 대시보드를 만들고 새 패널에서 이전 SQL 쿼리를 사용하여 다음과 같이 데이터를 시각화해 보겠습니다.
저장 및 적용을 선택합니다. Grafana 대시보드는 다음과 같이 표시됩니다.
AWS CUR 데이터에 대한 추가 SQL 쿼리는 비용 및 사용량 분석 및 AWS CUR 쿼리 라이브러리에서 확인할 수 있습니다. AWS CUR 쿼리 라이브러리는 비용 및 사용량 보고서(CUR) 데이터를 분석하기 위해 큐레이션된 SQL 쿼리 모음입니다. 비용 분석은 각 비즈니스마다 고유하지만 이러한 쿼리는 특정 요구 사항에 맞게 수정할 수 있도록 고안되었습니다.
비용 및 사용량 보고서(CURE) Grafana 대시보드 생성(선택 사항)
AWS CUR 통합을 통해 Amazon Managed Grafana 기능을 시연하기 위해 Amazon Managed Grafana 환경으로 쉽게 가져올 수 있는 비용 및 사용량 보고서(CURE) 대시보드를 만들었습니다.
CURE 대시보드는 EC2(예약 인스턴스 및 절약 요금제 포함), EBS 스토리지, 데이터 전송 및 RDS에 대한 요약 보기와 세분화된 서비스 수준 보기를 제공하는 사용자 정의 가능한 Amazon Managed Grafana 대시보드입니다. 대시보드를 통해 재무, DevOps 및 IT 팀은 AWS 비용과 사용량을 심층적으로 분석하고 최적화할 수 있습니다. 고객은 서비스 채택에 따라 약간의 노력으로 섹션을 수정하거나 추가할 수 있습니다.
CURE 대시보드를 가져오려면 이 위치에서 JSON 파일 콘텐츠를 다운로드할 수 있습니다.
이제 JSON 파일 콘텐츠를 Amazon Managed Grafana로 가져옵니다. Amazon Managed Grafana 콘솔에 로그인하고 왼쪽 리본 패널에서 +
및 가져오기
버튼을 선택합니다. 패널을 통해 가져오기 json
텍스트 상자에 복사한 JSON 파일 콘텐츠를 붙여넣고 드롭다운에서 AWS Athena 데이터 소스를 선택합니다. 그런 다음 가져오기 버튼을 선택하면 CURE 대시보드가 표시됩니다.
아래 이미지와 유사한 대시보드의 여러 섹션이 표시됩니다. 또한 연결된 AWS 계정, AWS 리전 및 AWS 서비스를 사용하여 필터링하고 모니터링할 수 있습니다.
스토리지
데이터 전송
RDS/Aurora
전체 요약
정리
이 게시물을 위해 생성한 인프라를 삭제할 때까지 비용이 계속 발생합니다. Amazon Managed Grafana 및 S3 콘솔로 이동하여 생성한 Amazon Managed Grafana 작업 공간과 S3 버킷을 삭제합니다.
결론
이 블로그 게시물에서는 Amazon Athena 플러그인을 사용하여 Amazon Managed Grafana로 AWS 비용 및 사용량 보고서(CUR) 데이터를 시각화하고 분석하는 방법을 보여드렸습니다. 또한 자체 SQL 쿼리를 사용하여 특정 비즈니스 사용 사례에 맞는 비용 및 사용량 Grafana 대시보드를 생성하고 개선하는 방법도 보여드렸습니다. 또한 EC2, 스토리지, 데이터 전송, RDS/Aurora 비용을 모니터링하기 위해 큐레이션된 비용 및 사용량 보고서(CURE) 대시보드도 검토했습니다. 데모를 보시려면 Amazon Managed Grafana로 AWS 비용 및 사용량 시각화하기 동영상을 확인하세요. One Observability Workshop에서 AWS 통합 가시성 서비스를 직접 체험해 볼 수 있습니다.