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ú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
-
Trong bảng điều khiển AWS, vào trang của Identity Access Management (IAM)
-
Vào tab ‘Roles’ và click vào Create role
-
EC2 là đối tượng sử dụng Role này, chọn EC2 và click Next.
-
Chọn ‘Create Policy’
-
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":
"*"
]
}
]
}
-
Thêm Tags nếu muốn và click next để review toàn bộ Policy.
-
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.
-
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.
-
Thêm Tags nếu muốn và click next để xem tổng quan lại Role đang tạo.
-
Chọn tên, miêu tả tính năng của Role và click Create role
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.
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.
-
Chuyển sang bảng điều khiển EC2 và tạo một Instance mới.
-
Chọn Amazon Linux 2 AMI
-
Chọn loại Instance
-
Trong Configure Instance Details, IAM Role, chọn Role vừa tạo.
Ở Advanced Details, User data, ta sẽ chạy một bootstrap script như sau:
#!/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
-
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.
-
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
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=/
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.
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=/
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.
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.