Push các metric từ server lên AWS Cloudwatch

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.

AWS Cloudwatch

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

Tạo file cấu hình 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
thông số metric ở trang document của AWS

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.
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
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.

 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ả.

Tư vấn - Báo giá
Mở rộng quy mô doanh nghiệp của bạn với ONETECH!
Hãy liên hệ với chúng tôi để được cung cấp các dịch vụ phát triển phần mềm chất lượng cao với chi phí hợp lý nhất. Các kỹ sư của chúng tôi sẽ giúp bạn phát triển một giải pháp phù hợp để vượt lên đối thủ cạnh tranh của mình.
Mọi thông tin tư vấn và báo giá đều miễn phí.

    「Chính sách bảo mật」Nếu bạn đồng ý với những điều trên, vui lòng nhấp vào nút "Gửi"
    Một email trả lời tự động sẽ được gửi đến địa chỉ email bạn đã nhập, vì vậy hãy kiểm tra điều đó.
    Tư vấn - Báo giá
    Mở rộng quy mô doanh nghiệp của bạn với ONETECH!
    Hãy liên hệ với chúng tôi để được cung cấp các dịch vụ phát triển phần mềm chất lượng cao với chi phí hợp lý nhất. Các kỹ sư của chúng tôi sẽ giúp bạn phát triển một giải pháp phù hợp để vượt lên đối thủ cạnh tranh của mình.
    Mọi thông tin tư vấn và báo giá đều miễn phí.

      「Chính sách bảo mật」Nếu bạn đồng ý với những điều trên, vui lòng nhấp vào nút "Gửi"
      Một email trả lời tự động sẽ được gửi đến địa chỉ email bạn đã nhập, vì vậy hãy kiểm tra điều đó.
      liên hệ