Trong quá trình quản lý hạ tầng và ứng dụng trên môi trường cloud, việc giám sát và thu thập các metric đóng vai trò quan trọng để đảm bảo hiệu suất và tính ổn định của hệ thống. Trong ngữ cảnh này, AWS CloudWatch trở thành một công cụ mạnh mẽ giúp chúng ta theo dõi và phân tích dữ liệu từ nhiều nguồn khác nhau.
Hôm nay, chúng ta sẽ đào sâu vào một khía cạnh quan trọng: việc push các metric từ server lên AWS CloudWatch. Điều này không chỉ giúp chúng ta hiểu rõ hơn về hiệu suất của hệ thống mà còn cung cấp cơ sở cho việc đưa ra quyết định thông minh dựa trên dữ liệu thời gian thực.
Lợi ích của việc push metric lên Cloudwatch
- Giám sát toàn diện: Cloudwatch cung cấp giao diện trực quan để theo dõi và phân tích các metric từ nhiều nguồn khác nhau, bao gồm server, ứng dụng, dịch vụ AWS, v.v.
- Khả năng tùy chỉnh: Bạn có thể tạo dashboard riêng để hiển thị các metric quan trọng nhất, giúp bạn dễ dàng theo dõi tình trạng hệ thống.
- Báo động thông minh: Cloudwatch cho phép bạn thiết lập cảnh báo dựa trên các metric, giúp bạn nhận thông báo kịp thời khi có bất kỳ vấn đề nào xảy ra.
- Lưu trữ và truy xuất dữ liệu: Cloudwatch lưu trữ dữ liệu metric trong một thời gian dài, giúp bạn có thể truy xuất và phân tích dữ liệu cho các mục đích khác nhau.
Các metric có thể push lên cloudwatch
Các metric mà bạn có thể push từ Amazon EC2 (Elastic Compute Cloud) lên AWS CloudWatch rất đa dạng và có thể bao gồm nhiều khía cạnh khác nhau của hiệu suất và tài nguyên hệ thống. Dưới đây là một số metric phổ biến mà bạn có thể thu thập:
- CPU Utilization: Metric Name: CPUUtilization
Description: Đo lường mức sử dụng CPU của máy ảo EC2.
- Memory Utilization: Metric Name: MemoryUtilization
Description: Đo lường mức sử dụng bộ nhớ của máy ảo EC2.
- Network Utilization: Metric Name: NetworkIn, NetworkOut
Description: Đo lường lưu lượng mạng đầu vào và đầu ra của máy ảo.
- Disk Utilization: Metric Name: DiskReadBytes, DiskWriteBytes
Description: Đo lường lưu lượng đọc và ghi trên đĩa của máy ảo.
- Status Check Failures: Metric Name: StatusCheckFailed
Description: Đo lường số lần kiểm tra trạng thái máy ảo thất bại.
- Custom Metrics: Bạn cũng có thể định nghĩa và push các metric tùy chỉnh phản ánh yếu tố quan trọng đối với ứng dụng cụ thể của bạn.
Lưu ý rằng quyết định chọn lọc và push metric nào phụ thuộc vào yêu cầu cụ thể của ứng dụng và mục tiêu giám sát của bạn.
Cách push metric lên Cloudwatch
Để push các metric từ server lên AWS CloudWatch, bạn cần sử dụng AWS CLI, SDK, hoặc các công cụ quản lý tài nguyên như Amazon CloudWatch Agent hoặc AWS Systems Manager. Dưới đây là một số cách thực hiện điều này:
Sử dụng AWS CLI:
- Đảm bảo rằng bạn đã cài đặt AWS CLI và đã cấu hình nó với thông tin đăng nhập chính xác.
- Sử dụng lệnh put-metric-data
Ví dụ: aws cloudwatch put-metric-data –namespace MyNamespace –metric-name MyMetric –value 10
Sử dụng Amazon CloudWatch Agent:
- Cài đặt Amazon CloudWatch Agent trên server của bạn và cấu hình nó để theo dõi các metric cụ thể.
- Tạo một tệp cấu hình JSON mô tả metric bạn muốn theo dõi.
Sử dụng AWS SDK:
- Sử dụng AWS SDK cho ngôn ngữ lập trình mà server của bạn hỗ trợ (ví dụ: Python, Node.js, Java).
- Import SDK và sử dụng các hàm API để gửi metric:
import boto3
cloudwatch = boto3.client('cloudwatch')
cloudwatch.put_metric_data(
Namespace='MyNamespace',
MetricData=[
{
'MetricName': 'MyMetric',
'Value': 10,
'Unit': 'Count'
}
]
)
Lưu ý rằng bạn cần cấu hình IAM Role cho server để đảm bảo nó có quyền gửi metric lên CloudWatch. Ngoài ra, xác định rõ tên metric, namespace, giá trị và các thông số khác phụ thuộc vào yêu cầu giám sát của bạn.
Push metric từ EC2 lên cloudwatch bằng Cloudwatch Agent
Mặc định khi tạo EC2, cloudwatch sẽ lấy sẵn 1 số thông tin như CPU, Network,…Còn 1 số thông tin như memory, disk space sẽ phải tự custom push lên cloudwatch.
Ở bài viết này, mình sẽ giới thiệu cách push metric memory, disk space từ EC2 lên Cloudwatch.
Bước 1: Cài đặt Cloudwatch-Agent lên server EC2
Dùng các câu lệnh sau để cài đặt Cloudwatch-Agent:
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
rpm -U ./amazon-cloudwatch-agent.rpm
Bước 2: Tạo file cấu hình json
Ở bước này, ta sẽ tạo file cấu hình json để mô tả những metric muốn đẩy lên cloudwatch. File json này sẽ nằm ở đường dẫn: /opt/aws/amazon-cloudwatch-agent/bin/config.json
Nội dung file trên mô tả việc push 2 metric là memory và disk_used đã sử dụng của EC2 lên cloudwatch. Ta có thể tham khảo các thông số metric ở trang document của AWS: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html
Sau khi cập nhật file json, ta dùng những lệnh sau để service cloudwatch-agent được cập nhật mới:
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
Bước 3: Cập nhật quyền cho EC2
Để có thể push những metric từ server lên Cloudwatch. Server phải có quyền để thực thi lệnh push metric cloudwatch.
- Ta truy cập vào trang IAM Roles, tạo 1 role mới với quyền CloudWatchAgentServerPolicy.
- Sau khi tạo role mới, ta gắn role vừa tạo vào server EC2: Truy cập vào giao diện EC2 -> Instances -> Security -> Modify IAM role -> chọn role cần gắn vào -> Update IAM role
Sau khi thực hiện thành công các bước trên, ta vào trang Cloudwatch -> All metrics -> Custom namespaces để xem dashboard các metric vừa được push lên.
Kết luận:
Push metric từ server lên AWS Cloudwatch là một cách hiệu quả để nâng tầm khả năng giám sát hệ thống. Bài viết này đã cung cấp cho bạn hướng dẫn chi tiết để thực hiện việc này. Hãy áp dụng kiến thức trong bài viết để đảm bảo hệ thống của bạn luôn hoạt động ổn định và hiệu quả.