Bạn cần giám sát dung lượng RAM trên Amazon EC2 Linux và tận dụng những gì sẵn có của AWS. Bài viết này sẽ hướng dẫn bạn cách để cấu hình CloudWatch để giám sát dung lượng RAM trên Amazon EC2 Linux (Ubuntu). #
CloudWatch là gì? #
CloudWatch là một dịch vụ giám sát các nguồn tài nguyên cloud và ứng dụng chạy trên AWS (Amazon Web Services). Bạn có thể sử dụng dịch vụ này để thu thập và theo dõi các số liệu thống kê, giám sát log file, và cài đặt cảnh báo (ví dụ RAM của server đang sử dụng vượt quá ngưỡng 90% thì sẽ thông báo đến 1 email cụ thể nào đó, để người quản trị kịp thời xử lý), giúp người dùng có thể tối ưu hóa hiệu suất ứng dụng, quản lý việc sử dụng tài nguyên và hiểu rõ tình trạng hoạt động của toàn hệ thống. CloudWatch hỗ trợ giám sát Amazon EC2 instance, Amazon DynamoDB table, và Amazon RDS DB instance.
Cấu hình CloudWatch để giám sát RAM của EC2 Linux (Ubuntu) #
Danh sách các dòng EC2 hỗ trợ:
- Amazon Linux 2
- Amazon Linux AMI 2014.09.2 +
- Red Hat Enterprise Linux 6.9 và 7.4
- SUSE Linux Enterprise Server 12
- Ubuntu Server 14.04 và 16.04
Danh sách các IAM role mà instance cần được gán:
- cloudwatch:PutMetricData
- cloudwatch:GetMetricStatistics
- cloudwatch:ListMetrics
- ec2:DescribeTags
Cài đặt script giám sát dung lượng RAM trên EC2 Linux (Ubuntu) #
1. Tạo IAM Role
Để script giám sát có thể gửi dữ liệu của server về cho CloudWatch, người dùng cần tạo IAM role để gửi metric từ EC2 instance đến CloudWatch. Các bước chuẩn bị như sau:
1.1. Truy cập service IAM.
1.2. Chọn “Roles”.
1.3. Chọn “Create Role”.
1.4. Chọn “EC2” ở mục “Choose a use case”, sau đó nhấn “Next: Permission”.
1.5. Chọn policy “CloudWatchAgentServerPolicy”, sau đó nhấn “Next: Tag”.
1.6. Gán giá trị tag cho Policy (nếu muốn), sau đó nhấn “Next: Review”.
1.7. Gán tên cho role ở mục “Role name”, sau đó nhấn “Create role” để hoàn tất quá trình tạo role.
1.8. Truy cập EC2 Dashboard.
1.9. Chọn EC2 sẽ gán IAM role, sau đó nhấn “Action / Instance settings / Modify IAM role”.
1.10. Chọn IAM role đã tạo ở trên, sau đó nhấn “Save”.
2. Cài đặt các package cần thiết
Đối với một số phiên bản Linux, người dùng cần phải cài đặt thêm một số package Perl để có thể sử dụng script giám sát của CloudWatch.
sudo apt-get update sudo apt-get install -y unzip libwww-perl libdatetime-perl
3. Cài đặt script giám sát lên EC2
3.1. Tải script giám sát của AWS CloudWatch
curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O
3.2. Giải nén tập tin đã tải về
unzip CloudWatchMonitoringScripts-1.2.2.zip && \ rm CloudWatchMonitoringScripts-1.2.2.zip && \ cd aws-scripts-mon
Bên trong thư mục aws-scripts-mon sẽ bao gồm các file:
Tên file | Chức năng |
CloudWatchClient.pm | Module Shared Perl giúp đơn giản hóa việc gọi Amazon CloudWatch từ các script khác. |
mon-put-instance-data.pl | Thu thập các metric trên Amazon EC2 instance (RAM, swap, disk space utilization) và gửi đến CloudWatch. |
mon-get-instance-stats.pl | Truy vấn thông tin đã gửi đến CloudWatch và hiển thị thông tin đã thu thập được từ EC2 instance. |
awscreds.template | Template mẫu để điền thông tin AWS Access key. |
LICENSE.txt | License Apache 2.0. |
NOTICE.txt | Thông tin bản quyền. |
3.3. Kiểm tra kết nối đến CloudWatch
./mon-put-instance-data.pl --mem-util --verify --verbose
Nếu kết quả hiển thị “Verification completed successfully. No actual metrics sent to CloudWatch.” thì bạn đã thiết lập thành công. Nếu không thì bạn cần kiểm tra lại thông tin IAM role đã tạo đã bao gồm policy “CloudWatchAgentServerPolicy” hay chưa?
3.4. Thiết lập crontab để tự động gửi thông tin đến CloudWatch
3.4.1. Chọn các loại thông tin cần giám sát
Format để gửi thông tin đến CloudWatch sẽ bao gồm:
./mon-put-instance-data.pl <option1> <option2> <option3>
Các option liên quan đến RAM bao gồm:
Option | Thông tin |
–mem-util | Thu thập và gửi chỉ số RAM đã sử dụng theo tỷ lệ phần trăm. Chỉ số này là tổng phần trăm RAM mà các ứng dụng và hệ điều hành đã sử dụng, bao gồm cả cache và buffer nếu người dùng sử dụng option “–mem-used-incl-cache-buff“. |
–mem-used | Thu thập và gửi dung lượng RAM đã sử dụng theo đơn vị megabytes. Chỉ số này là tổng dung lượng RAM mà các ứng dụng và hệ điều hành đã sử dụng, bao gồm cả cache và buffer nếu người dùng sử dụng option “–mem-used-incl-cache-buff“. |
–mem-avail |
Thu thập và gửi dung lượng RAM chưa sử dụng theo đơn vị megabytes. Chỉ số này là tổng dung lượng RAM mà các ứng dụng và hệ điều hành chưa sử dụng đến, bao gồm cả cache và buffer nếu người dùng sử dụng option “–mem-used-incl-cache-buff“. |
–mem-used-incl-cache-buff | Dung lượng RAM sẽ được tính dựa trên dung lượng các ứng dụng + hệ điều hành + cache + buffer đã sử dụng. |
–memory-units=UNITS | Đơn vị tính dung lượng, bao gồm: bytes, kilobytes, megabytes, gigabytes. Mặc định sẽ là megabytes. |
Ví dụ:
./mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail
3.4.2. Tạo cronjob để tự động gửi thông tin về CloudWatch
Ví dụ: Cần gửi các chỉ số về dung lượng RAM của EC2 mỗi 5 phút về CloudWatch, bao gồm các chỉ số như: dung lượng RAM đã sử dụng, phần trăm dung lượng RAM đã sử dụng và dung lượng RAM còn trống. Các thông tin này sẽ tính luôn cả cache và buffer.
crontab -l > crontabfile echo"*/5 * * * * <đường dẫn đến thư mục chứa script>/aws-scripts-mon/mon-put-instance-data.pl \ --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail" >> crontabfile crontab crontabfile rm crontabfile
4. Tạo CloudWatch dashboard để hiển thị thông tin
4.1. Truy câp service CloudWatch trên AWS.
4.2. Chọn “Dashboards / Create dashboard” để tạo mới dashboard dùng để hiển thị thông tin RAM vừa thiết lập ở trên.
4.3. Đặt tên cho dashboard, sau đó nhấn “Create”.
4.4. Chọn kiểu dashboard sẽ hiển thị, sau đó nhấn “Next”.
4.5. Chọn “Metrics”, sau đó nhấn “Configure”.
4.6. Điền “Memory” ở mục Filter.
4.7. Chọn “Linux System > InstanceId”.
4.8. Tích chọn các EC2 instance chứa thông tin bạn cần giám sát. Sau đó nhấn “Create widget”.
4.9. Chọn “Save dashboard” để cấu hình dashboard vừa tạo.
Thông tin trên dashboard sẽ được tự động cập nhật sau mỗi 5 phút khi EC2 instance cập nhật thông tin.
Lưu ý: 1 dashboard có thể bao gồm nhiều “widget” hiển thị thông tin, bạn có thể tạo thêm các “widget” để phân chia thông tin hiển thị của các EC2 theo từng phần khác nhau.
Chúc bạn thành công!
Nguồn tham khảo:
Trung tâm đào tạo Viễn thông và Công nghệ thông tin TEL4VN (TEL4VN) chuyên đào tạo các khóa học về DevOps như: Docker, Kubernetes, Ansible, Jenkins, Linux…….Ngoài ra, TEL4VN còn là Trung tâm đào tạo duy nhất về VoIP mã nguồn mở. 🌐Website: https://tel4vn.edu.vn/ |