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

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út và 1 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 roleIAM 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 PolicyIAM 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.{ "Version":“2012-10-17”, "Statement":[ { "Action":[ "“cloudwatch":"PutMetricData”", "“ec2":"DescribeTags”" ], "Effect":"Allow", "Resource":[ "*" ] } ]}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 roleIAM 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 AMICreate an Instance
  3. Chọn loại InstanceCreate 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/bashyum update -ysudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64cd /home/ec2-user/curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -Ounzip CloudWatchMonitoringScripts-1.2.2.ziprm -rf CloudWatchMonitoringScripts-1.2.2.zipCù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.