Khi bạn di chuyển workload sang AWS và tăng mức tiêu thụ dịch vụ AWS, điều quan trọng là phải có cái nhìn toàn diện về giá trị của AWS, cũng như theo dõi và quản lý hiệu quả chi phí và mức sử dụng AWS của bạn. AWS cung cấp nhiều dịch vụ gốc như AWS Cost Explorer, AWS Budgets, và AWS Cost Anomaly Detection để cho phép khách hàng trực quan hóa và kiểm soát chi tiêu của họ trong khi báo cáo AWS Cost and Usage Report (CUR) có thể được sử dụng để phân tích sâu dữ liệu về chi phí và mức sử dụng các tài nguyên AWS riêng lẻ.
Amazon Managed Grafana là dịch vụ trực quan hóa dữ liệu được quản lý hoàn toàn, có thể mở rộng quy mô, bảo mật và có tính sẵn sàng cao, cho phép khách hàng truy vấn, tương quan và trực quan hóa ngay lập tức các chỉ số hoạt động, nhật ký và dấu vết cho các ứng dụng của họ từ nhiều nguồn dữ liệu. Amazon Managed Grafana tương thích với Grafana mã nguồn mở và được tích hợp với các nguồn dữ liệu AWS thu thập dữ liệu vận hành, chẳng hạn như Amazon CloudWatch, Amazon OpenSearch Service, Amazon Athena và Amazon Managed Service for Prometheus (AMP). Hơn nữa, nó cung cấp các phần bổ trợ cho cơ sở dữ liệu nguồn mở phổ biến, các công cụ giám sát ISV của bên thứ ba, cũng như các dịch vụ đám mây khác. Với Grafana do Amazon quản lý, bạn có thể dễ dàng hình dung thông tin từ nhiều dịch vụ AWS, tài khoản AWS và Khu vực trong một dashboard Grafana duy nhất.
Athena là một dịch vụ truy vấn tương tác giúp dễ dàng phân tích dữ liệu bằng SQL tiêu chuẩn. Athena không có máy chủ nên không cần quản lý cơ sở hạ tầng và bạn chỉ phải trả tiền cho các truy vấn mà bạn chạy.
Trong bài đăng trên blog này, chúng tôi trình bày cách bạn có thể trực quan hóa và phân tích dữ liệu Chi phí và mức sử dụng AWS của mình bằng Amazon Managed Grafana trong khi sử dụng plugin Amazon Athena.
Tổng quan về giải pháp
Sơ đồ sau đây cho thấy thiết lập hoàn chỉnh mà chúng tôi sẽ giải thích trong bài đăng này

Hình 1. Kiến trúc tổng thể làm nổi bật việc tích hợp Cost and Usage Report (CUR) với Amazon S3, Amazon Athena và Amazon Managed Grafana để trực quan hóa và phân tích chi phí cũng như dữ liệu sử dụng cho các tài nguyên AWS của bạn.
Ở cấp độ cao, trước tiên, chúng tôi sẽ tạo báo cáo AWS Cost and Usage Report (CUR) bằng CloudFormation Template và lưu trữ báo cáo đó trong S3 bucket. Sau đó, chúng tôi sẽ phân tích và truy vấn báo cáo CUR bằng Athena. Cuối cùng, chúng ta sẽ trực quan hóa dữ liệu sử dụng và chi phí từ báo cáo CUR trong Grafana được quản lý của Amazon bằng cách sử dụng Athena plugin.
Bước 1: Thiết lập và tạo Cost and Usage Report
Giải pháp này tận dụng dữ liệu thanh toán có trong AWS Cost and Usage Report (CUR). AWS CUR chia nhỏ chi phí và mức sử dụng ở cấp độ chi tiết thành ARN giờ hoặc tài nguyên và chứa bộ dữ liệu chi phí và mức sử dụng toàn diện nhất hiện có.
Để tạo CUR Report, hãy làm theo hướng dẫn chi tiết tại Creating Cost and Usage Reports. Cân nhắc các tùy chọn sau khi tạo CUR:
- Định cấu hình Amazon S3 bucket mới để lưu trữ AWS CUR. Giả sử demo-cur-report-XXX
- Chọn “Bao gồm ID tài nguyên” ( Include resource IDs ). Nhiều bản ghi thanh toán sẽ tự động bao gồm ID tài nguyên, đây có thể là ngữ cảnh hữu ích khi cố gắng hiểu một phân đoạn trong hóa đơn của bạn.
- Chọn “Tự động làm mới Báo cáo chi phí & mức sử dụng của bạn khi phát hiện thấy các khoản phí cho các tháng trước với các hóa đơn đã thanh toán” ( Automatically refresh your Cost & Usage Report when charges are detected for previous months with closed bills ). Điều này cho phép bạn có đại diện chính xác nhất vì một số khoản tiền hoàn lại, tín dụng và phí AWS Support được tính sau khi tháng kết thúc.

Hình 2: Tạo AWS Cost and Usage Report
- Chọn “Ghi đè báo cáo hiện có” ( Overwrite existing report ) để lập phiên bản Báo cáo. Toàn bộ dữ liệu của tháng được ghi nhiều lần mỗi ngày khi CUR được gửi. Ghi đè cho phép bạn chỉ có bản sao mới nhất của tháng hiện tại và tránh lưu trữ dữ liệu trùng lặp.
- Chọn “Hàng giờ” ( Hourly ) để nhận được mức độ chi tiết cao nhất hiện có.
- Chọn “Amazon Athena” để Bật tích hợp dữ liệu báo cáo cho. Điều này sẽ tự động chọn loại nén Parquet (Apache), được yêu cầu để Athena chạy các truy vấn hiệu quả cho dashboard Grafana

Hình 3. Tùy chọn S3 Delivery cho AWS Cost and Usage Report
Có thể mất tới 24 giờ để AWS gửi báo cáo đầu tiên của bạn vào S3 bucket.
Bước 2: Truy vấn AWS CUR bằng Athena
Hãy truy vấn và phân tích dữ liệu từ AWS CUR của bạn trong S3 bằng cách sử dụng SQL bản standard trong Amazon Athena.
Để hợp lý hóa và tự động hóa quá trình tích hợp một lần Báo cáo chi phí và mức sử dụng của bạn với Athena, AWS cung cấp template AWS CloudFormation. Điều này sẽ đảm bảo rằng thông tin sử dụng và chi phí mới nhất của bạn luôn có sẵn cho Athena—bạn không cần thực hiện thêm công việc nào khác để chuẩn bị dữ liệu của mình cho việc phân tích. Làm theo hướng dẫn chi tiết về Setting up Athena using AWS CloudFormation templates để hoàn tất quá trình tích hợp với Athena.
Tạo Athena Workgroup cho Grafana Queries và định cấu hình quyền IAM
Athena hỗ trợ Workgroups để phân tách cấu hình khối lượng công việc giữa người dùng hoặc ứng dụng. Giải pháp này sử dụng Workgroup chuyên dụng để đơn giản hóa việc truy cập vào các truy vấn Athena và dữ liệu AWS CUR thô.
Hãy tạo một S3 bucket để lưu trữ kết quả truy vấn của Amazon Managed Grafana. Để tìm hiểu thêm về cách bảo mật S3 bucket, vui lòng tham khảo Security Best Practices for Amazon S3.
- Trong AWS Management Console, trên menu Services, chọn S3.
- Đối với tên S3 bucket, hãy sử dụng tiền tố sau để đảm bảo tính tương thích với các chính sách AWS Identity and Access Management(IAM) do dịch vụ quản lý: grafana-athena-query-results-
Tên S3 bucket ví dụ: grafana-athena-query-results-XXXXXXX
Nếu bạn dự định sử dụng bất kỳ tên S3 bucket nào khác để lưu trữ kết quả truy vấn, thì bạn phải thêm các quyền s3.Get* và s3.List* cho S3 bucket cho IAM role AmazonGrafanaServiceRole-XXXXX như minh họa trong phần sau.

Hình 4. Định cấu hình quyền cho AmazonGrafanaServiceRole
- Đối với AWS Region, hãy đảm bảo rằng bạn tạo S3 bucket trong cùng AWS Region mà bạn dự định triển khai không gian làm việc Grafana do Amazon quản lý
Bây giờ, chúng ta sẽ tạo một Athena Workgroup mới cho các truy vấn Grafana:
- Trong bảng điều khiển, trên menu Services, chọn Athena.
- Trên menu bên trái, chọn Workgroups.
- Chọn Create workgroup
- Nhập tên Workgroup. Ví dụ Grafana.
- Đối với Vị trí của kết quả truy vấn, hãy nhập đường dẫn S3 tới bucket được tạo trong phần ‘Thiết lập và tạo Cost & Usage Report’.
s3://grafana-athena-query-results-XXXXXXXXXX/

Hình 5. Cấu hình Athena Workgroup để lưu trữ kết quả truy vấn trong S3
- Đối với Tags, hãy chọn Add new tag
- Tag Key: GrafanaDataSource
- Tag Value: true
Việc thêm tag có key và value ở trên là cần thiết để sử dụng Amazon Managed Grafana workspace’s service managed IAM policy với Athena workgroup. Chọn Tạo workgroup.

Hình 6. Gắn Tag Athena Workgroup cho GrafanaDataSource
- Chọn Create workgroup
Tại thời điểm này, bạn hiện có một chức năng Athena Query Editor . Từ workgroup mới, giờ đây bạn có thể chạy các truy vấn dạng sql đối với dữ liệu AWS CUR. Để biết thêm thông tin về cách chạy truy vấn SQL trong Athena, hãy xem Running Amazon Athena queries.
Bước 3: Thiết lập Amazon Managed Grafana Workspace
Đảm bảo rằng bạn đã có sẵn AWS CUR trong S3 và bạn có thể truy vấn dữ liệu AWS CUR bằng Amazon Athena trước khi định cấu hình data source Athena trong Amazon Managed Grafana.
Chọn các AWS services từ logo AWS trên menu điều hướng bên trái.
Thao tác này sẽ đưa bạn đến một màn hình hiển thị tất cả các nguồn dữ liệu AWS có sẵn để bạn lựa chọn. Chọn Athena từ danh sách

Hình 7. AWS Data Source trong Amazon Managed Grafana
Chọn region mà bạn đã thiết lập Athena và S3 bucket
Kiểm tra Database + Workspace tương ứng với Athena Workgroup mà bạn đã thiết lập cho báo cáo AWS CUR.

Hình 8. Thêm Data Source trong Amazon Managed Grafana
Chọn Add 1 data source. Đảm bảo rằng Workgroup được chỉ định là nhóm mà chúng ta đã tạo trong phần trước ‘Tạo Workgroup Amazon Athena cho Grafana Queries’.
Bây giờ, hãy chuyển đến settings và chọn Save & test để đảm bảo data source đang hoạt động như mong đợi.

Hình 9. Save và Data Athena Data Source trong Amazon Managed Grafana
Định cấu hình quyền IAM cho AmazonGrafanaServiceRole-XXXXX
Bây giờ, trong bảng điều khiển, trên menu Services, chọn IAM and under Roles, tìm kiếm role AmazonGrafanaServiceRole-XXXXX.
Đính kèm chính sách được quản lý AWS của AmazonS3ReadOnlyAccess để cho phép Amazon Managed Grafana truy vấn bộ chứa S3 bằng báo cáo AWS CUR. Bạn cũng có thể hạn chế chính sách IAM đối với nhóm S3 cụ thể. Bạn có thể tìm hiểu thêm tại bài viết Writing IAM policies: How to Grant Access to an Amazon S3 Bucket.

Hình 10. Cấu hình IAM Permissions cho Amazon Managed Grafana’s Service RoleDashboard trong Amazon Managed Grafana
Bước 4: Trực quan hóa Grafana dashboards
Amazon Managed Grafana có Grafana dashboard mặc định để phân tích Chi phí và Mức sử dụng cho Athena Data Source.
Dashboard ‘Athena Cost and Usage Report’ mặc định
Để có dashboard Amazon Managed Grafana mặc định đó, trong khi vẫn ở trên màn hình Athena Data Source, hãy chọn tab thứ hai Dashboards như minh họa trong phần sau:

Hình 11. Dashboard báo cáo sử dụng và chi phí được quản lý mặc định trong Amazon Managed Grafana
Chọn import bên cạnh athena Cost and Usage Report để nhập dashboard. Chọn ‘Browser’ trong menu Dashboards để xem tất cả các Dashboards Grafana.

Hình 12. Chế độ xem Dashboard trong Amazon Managed Grafana
Bạn có thể thấy dashboard Grafana hiển thị số liệu về chi phí và mức sử dụng từ báo cáo AWS CUR.

Hình 13. Dashboard ‘Chi phí và mức sử dụng’ được sắp xếp mặc định trong Amazon Managed Grafana
Tùy chỉnh Cost and Usage SQL Queries
Bạn cũng có thể tạo các dashboards và Cost and Usage Grafana panels tùy chỉnh bằng cách sử dụng các truy vấn SQL của riêng bạn. Ví dụ: truy vấn sau hiển thị chi phí từ đầu năm đến nay theo dịch vụ AWS cho từng khu vực.
SELECT
bill_payer_account_id,
line_item_product_code,
product_region,
sum(cast(line_item_blended_cost as DECIMAL(16,2))) AS cost,
pricing_term
FROM demo_cur_report
WHERE year = ‘2022’
GROUP BY
bill_payer_account_id,
line_item_product_code,
product_region,
pricing_term
HAVING sum(cast(line_item_blended_cost as DECIMAL(16,2))) > 0
ORDER BY line_item_product_code;
Bây giờ, hãy tạo dashboard Amazon Managed Grafana mới và sử dụng truy vấn SQL trước đó trong Panel mới để trực quan hóa dữ liệu như minh họa trong phần sau:

Hình 14. Khám phá bằng SQL Query tùy chỉnh và data source Athena trong Amazon Managed Grafana
Chọn Save và Apply. Dashboard Grafana của bạn sẽ giống như sau:

Hình 15. Lưu và áp dụng – Dashboard mức sử dụng và chi phí tùy chỉnh trong Amazon Managed Grafana
Đối với các truy vấn SQL bổ sung đối với dữ liệu AWS CUR, bạn có thể xem Cost and Usage Analysis và AWS CUR Query Library. AWS CUR Query Library là tập hợp các truy vấn SQL được tuyển chọn để phân tích dữ liệu Cost and Usage Report (CUR) của bạn. Mặc dù phân tích chi phí là duy nhất cho mỗi doanh nghiệp nhưng những truy vấn này nhằm mục đích sửa đổi để phù hợp với nhu cầu cụ thể của bạn.
Tạo Cost and Usage Report (CURE) Grafana Dashboard (Tùy chọn)
Để chứng minh khả năng của Amazon Managed Grafana với tích hợp AWS CUR, chúng tôi đã tạo Dashboard Cost and Usage REport (CURE) có thể dễ dàng nhập vào môi trường Amazon Managed Grafana của bạn.
CURE Dashboard là dashboard Amazon Managed Grafana có thể tùy chỉnh, cung cấp chế độ xem tóm tắt cũng như chế độ xem cấp độ dịch vụ chi tiết cho EC2 (bao gồm Reserved Instances và Saving Plan), EBS Storage, Data Transfer và RDS. Dashboard cho phép các Financial, DevOps và IT teams của bạn tìm hiểu sâu về chi phí và mức sử dụng AWS cũng như tối ưu hóa. Với ít nỗ lực, khách hàng có thể sửa đổi hoặc thêm các phần bổ sung dựa trên việc sử dụng dịch vụ của họ.
Để import dashboard CURE, bạn có thể tải xuống nội dung tệp JSON ở đây:
curl -S https://github.com/aws-observability/observability-best-
practices/raw/main/sandbox/cure-grafana-
dashboard/AmazonManagedGrafanaCUREDashboard.json -o
AmazonManagedGrafanaCUREDashboard.json
Bây giờ, hãy import nội dung tệp JSON vào Amazon Managed Grafana. Đăng nhập vào Amazon Managed Grafana của Amazon và chọn nút + và import trên bảng bên trái. Dán nội dung tệp JSON đã sao chép vào text box import via panel json và data source AWS Athena từ trình đơn thả xuống. Sau đó, chọn nút import để xem dashboard CURE.
Bạn sẽ thấy các phần khác nhau của dashboard tương tự như các hình ảnh bên dưới. Ngoài ra, bạn có thể lọc và giám sát bằng tài khoản AWS được liên kết, AWS regions, và AWS Services.
EC2

Hình 16. Dashboard Cost and Usage Report (CURE) trong Amazon Managed Grafana cho các phiên bản EC2
Storage

Hình 17. Dashboard Cost and Usage Report (CURE) trong Amazon Managed Grafana để Data Transfer trong AWS
Data Transfer

Hình 18. Dashboard Cost and Usage Report (CURE) trong Amazon Managed Grafana để Data Transfer trong AWS
RDS/Aurora

Hình 19. Dashboard Cost and Usage Report (CURE) trong Amazon Managed Grafana cho các phiên bản RDS/Aurora
Summary – Overall

Hình 20. Dashboard Cost and Usage Report (CURE) trong Amazon Managed Grafana để biết Tóm tắt tổng thể
Clean up
Bạn sẽ tiếp tục chịu chi phí cho đến khi xóa cơ sở hạ tầng mà bạn đã tạo cho bài đăng này. Điều hướng đến bảng điều khiển Amazon Managed Grafana và S3 để xóa workspace Amazon Managed Grafana và các S3 buckets.
Kết luận
Trong bài đăng trên blog này, chúng tôi đã trình bày cách bạn có thể trực quan hóa và phân tích dữ liệu báo cáo AWS Cost and Usage report (CUR) với Amazon Managed Grafana bằng cách sử dụng plugin Amazon Athena. Chúng tôi cũng đã chỉ ra cách bạn có thể sử dụng các truy vấn SQL của riêng mình để tạo và nâng cao dashboard Grafana về chi phí và mức sử dụng cho trường hợp sử dụng kinh doanh cụ thể của bạn. Chúng tôi cũng đã xem xét dashboard Cost and Usage Report (CURE) được tuyển chọn để theo dõi chi phí EC2, Storage, Data Transfer, và RDS/Aurora. Để xem demo, hãy xem video này Visualize Your AWS Cost and Usage with Amazon Managed Grafana. Bạn có thể trải nghiệm thực tế với AWS observability services at One Observability Workshop.
Bài được dịch từ bài viết trên AWS Blogs, bạn có thể xem bài viết gốc tại đây.