see more blog

Amazon CloudWatch Custom Metrics

Amazon CloudWatch Custom Metrics

Trên môi trường AWS, về cơ bản Amazon CloudWatch có thể giám sát thông số CPU, mạng, I/O ổ cứng và trạng thái máy chủ vật lý của các EC2 Instance. Những thông số khác như lưu lượng sử dụng Ram, dung lượng còn lại hay đã sử dụng của ổ cứng… sẽ được giám sát bởi Custom Metrics.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách để cài đặt Amazon CloudWatch Custom Metrics vào Instance và đưa các thông số này hiển thị lên Amazon CloudWatch.

Điểm lại về Amazon CloudWatch

Như đã thảo luận trong bài viết: Giới thiệu về Amazon CloudWatch (Phần 2) | VTI CLOUD

Standard Monitoring và Detailed Monitoring có thời gian giãn cách giữa chi tiết các thông số lần lượt là 5 phút1 phút.

Chúng ta sẽ tạo Custom Metrics để đẩy thông số lên Amazon CloudWatch mỗi phút.

Tất cả những gì ta cần làm đó là đăng nhập vào AWS, chọn Region, tạo một EC2 Instance và đẩy Custom Metrics của Instance đó lên Amazon CloudWatch.

Cách thực hiện tạo Custom Metrics

Để làm được điều này, đầu tiên ta cần quyền giao tiếp với Amazon CloudWatch theo các bước:

A. Tạo một Role cho EC2

  1. Trong bảng điều khiển AWS, vào trang của Identity Access Management (IAM)

  2. Vào tab ‘Roles’ và click vào Create role

    IAM Roles

  3. EC2 là đối tượng sử dụng Role này, chọn EC2 và click Next.

    IAM Roles

  4. Chọn ‘Create Policy

    IAM Roles

  5. Trên trang Create Policy, chọn tab JSON, dán Policy được đưa ở bên dưới vào trường trống và chuyển sang bước tiếp theo.

    IAM Policy

  6. Thêm Tags nếu muốn và click next để review toàn bộ Policy.

    IAM Policy

  7. Bước cuối để tạo một Policy là chọn tên và click Create Policy. Ta có thể xem lại tổng quan các quyền của Policy này ở bảng Summary.

    IAM Policy

  8. Sau thông báo tạo Policy thành công, quay lại trang Create Role, bấm nút refresh ở phía trên bên phải, search tên của Policy vừa tạo, tích vào box và bấm next để gán Policy đó vào Role.

    IAM Roles

  9. Thêm Tags nếu muốn và click next để xem tổng quan lại Role đang tạo.

    IAM Roles

  10. Chọn tên, miêu tả tính năng của Role và click Create role

    IAM Roles

Role vừa tạo được lưu ở IAM > Roles. Ta có thể thấy đây là một tệp JSON cơ bản.

IAM Roles

 

B. Gán Role vừa tạo vào một EC2 Instance

Ta sẽ làm từng bước để gán Role vừa tạo vào một EC2 Instance, và đưa các thông số lên Amazon CloudWatch.

  1. Chuyển sang bảng điều khiển EC2 và tạo một Instance mới.

  2. Chọn Amazon Linux 2 AMI

    Create an Instance

  3. Chọn loại Instance

    Create an Instance

  4. Trong Configure Instance Details, IAM Role, chọn Role vừa tạo.

    Create an Instance

    Ở Advanced Details, User data, ta sẽ chạy một bootstrap script như sau:

    Create an Instance

    #!/bin/bash

    yum update -y

    sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64

    cd /home/ec2-user/

    curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O

    unzip CloudWatchMonitoringScripts-1.2.2.zip

    rm -rf CloudWatchMonitoringScripts-1.2.2.zip

    Cùng phân tích sơ lược về những gì script này sẽ làm:

    Đầu tiên, nó update EC2 Instance, những bản vá bảo mật, packages lên version mới nhất.

    Tiếp theo, script sẽ cài đặt nhiều service perl khác nhau, và chuyển tới thư mục /home/ec2-user/

    Sau cùng, nó download các scripts giám sát của Amazon CloudWatch, giải nén và xóa đi file zip

  5. Tiếp theo, ta thay đổi dung lượng ổ cứng, thêm tags, sửa Security Group nếu muốn hoặc chỉ cần để ở mặc định. Chọn Review and Launch, chọn tạo mới hoặc sử dụng Key pair có sẵn, và click Launch để hoàn tất tạo Instance.

    launch an Instance

  6. Ssh tới Instance vừa tạo.

Trong terminal, dùng lệnh ‘ls’ và ta thấy các thư mục mà bootstrap script đã giải nén và cài đặt.

Vào trong thư mục đó, ta có thể chú ý tới 2 file: mon-get-instance-stats.pl và mon-put-instance-data.pl

AWS CloudWatch Custom Metrics

Tiếp theo, để đẩy thông tin lên Amazon CloudWatch ta sử dụng lệnh:

sudo /home/ec2-user/aws-scripts-mon/mon-put-instance-data.pl –mem-util –mem-used –mem-avail –disk-space-util –disk-space-avail –disk-path=/

AWS CloudWatch Custom Metrics

Lệnh này sẽ gửi các thông số % lưu lượng Ram, Ram đang sử dụng và lượng còn lại, đồng thời các thông số % lưu lượng ổ cứng, dung lượng ổ cứng còn lại cũng được đưa lên.

 

Sau khoảng 1 phút, ta có thể thấy một Metric mới ở mục Custom Namespaces có tên Linux System.

Với Custom Metrics, data có độ chi tiết 1 phút được định nghĩa là Standard Resolution.

Trong đó sẽ có 5 metrics của Instance mà ta vừa đẩy lên.

AWS CloudWatch Custom Metrics

Về cơ bản, ban đầu ta sẽ thấy duy nhất một điểm thông tin (Datapoint) vì tất cả các bước bên trên chỉ giúp ta đưa các metrics lên Amazon CloudWatch 01 lần.

Điều ta cần làm là sẽ đẩy các metrics đó lên mỗi phút bằng cách chỉnh sửa file crontab qua câu lệnh:

sudo nano /etc/crontab

sau đó, đưa câu lệnh ở dưới vào file crontab

*/1 * * * * root /home/ec2-user/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --disk-space-util --disk-space-avail --disk-path=/

AWS CloudWatch Custom Metrics

Câu lệnh ở phía sau dấu * sẽ được tự động chạy mỗi phút dưới quyền root và đẩy thông tin lên Amazon CloudWatch.

Về cơ bản trong file crontab, ta có thể cấu hình để câu lệnh chạy mỗi phút, mỗi ngày, mỗi tuần hay mỗi tháng.

 

Sau một thời gian, quay lại bảng điều khiển Amazon CloudWatch, chọn một Custom Metric bất kỳ và ta sẽ thấy Metric này đã bắt đầu thu nhập thêm các datapoints mới. Lưu ý rằng nếu không bật tính năng Detailed Monitoring, ta sẽ chỉ nhận được các datapoint mới mỗi 5 phút.

AWS CloudWatch Custom Metrics 
AWS CloudWatch Custom Metrics
 

Một điều nổi bật về Amazon CloudWatch là ta có thể cài đặt những scripts trên vào chính các máy chủ vật lý và gửi thông số về Amazon CloudWatch, từ đó Amazon CloudWatch có thể được sử dụng để quản lý các máy chủ của Data Center và trong môi trường AWS.

Bên cạnh đó, với những ứng dụng cần thời gian phản ứng nhanh với các thông số phần cứng, ta sẽ cần thời gian giãn cách giữa mỗi lần thu thập datapoint thấp hơn 1 phút. Để làm được điều này, mời các bạn đón đọc chủ đề tiếp theo về Amazon CloudWatch Custom Metrics – High Resolution.

 

Về VTI Cloud

VTI Cloud là Đối tác cấp cao (Advanced Consulting Partner) của AWS, với đội ngũ hơn 50+ kỹ sư về giải pháp được chứng nhận bởi AWS. Với mong muốn hỗ trợ khách hàng trong hành trình chuyển đổi số và dịch chuyển lên đám mây AWS, VTI Cloud tự hào là đơn vị tiên phong trong việc tư vấn giải pháp, phát triển phần mềm và triển khai hạ tầng AWS cho khách hàng tại Việt Nam và Nhật Bản.

Xây dựng các kiến trúc an toàn, hiệu suất cao, linh hoạt, và tối ưu chi phí cho khách hàng là nhiệm vụ hàng đầu của VTI Cloud trong sứ mệnh công nghệ hóa doanh nghiệp.

Ngoài ra, VTI Cloud có hỗ trợ xây dựng cộng đồng VIET-AWS. Đây là một trong các nhóm AWS User Groups phát triển nhanh chóng và được Amazon công nhận trong khu vực Asia Pacific (Việt Nam).

VIET-AWS là nơi kết nối, trao đổi hỗ trợ giữa các bạn Solutions Architect, DevOps, SysOps và các bạn sinh viên mới chập chững tiếp xúc dịch vụ điện toán đám mây của Amazon Web Services (AWS). Cùng VTI Cloud tham gia VIET-AWS: https://www.facebook.com/groups/vietawscommunity

 

Related news

what’s up at VTI