Giám sát Amazon EC2 bằng CloudWatch

2020.07.03

Amazon EC2 cho phép bạn quay vòng các máy chủ cho ứng dụng của mình mà không phải thực sự quản lý phần cứng vật lý. Tuy nhiên, vì nó là một dịch vụ được quản lý, bạn có ít khả năng hiển thị hơn với các công cụ giám sát truyền thống. Do đó, việc tận dụng các công cụ giám sát có sẵn trong AWS càng trở nên quan trọng hơn. Trong bài đăng này, chúng tôi sẽ giải thích cách sử dụng CloudWatch để theo dõi EC2 và những gì quan trọng cần xem.

1. Amazon CloudWatch

Amazon CloudWatch là dịch vụ giám sát các tài nguyên và dịch vụ khác chạy trên AWS.

AWS CloudWatch là một dịch vụ dành riêng cho AWS Cloud (Native). Dịch vụ CloudWatch được quản lý hoàn toàn bởi chính AWS, loại bỏ mọi vấn đề và chi phí cấp phép. Nó giám sát hầu hết các dịch vụ trên AWS và cho phép chúng ta tạo các báo động tùy chỉnh và xác định các hành động tiếp theo, theo nhu cầu của chúng ta.

Bạn có thể theo dõi các Instance của mình bằng Amazon CloudWatch, thu thập và xử lý dữ liệu thô từ Amazon EC2 thành các số liệu thời gian thực có thể đọc được. Các thống kê này được ghi lại trong khoảng thời gian 15 tháng, để bạn có thể truy cập thông tin lịch sử và có được góc nhìn tốt hơn về cách ứng dụng hoặc dịch vụ web của bạn hoạt động.

Theo mặc định, Amazon EC2 gửi dữ liệu số liệu đến CloudWatch trong khoảng thời gian 5 phút. Để gửi dữ liệu số liệu cho phiên bản của bạn đến CloudWatch trong khoảng thời gian 1 phút, bạn có thể bật theo dõi chi tiết về trường hợp đó. Để biết thêm thông tin, hãy xem Bật hoặc tắt theo dõi chi tiết cho các phiên bản của bạn.

Bảng điều khiển CloudWatch có thể được truy cập tại đây https://console.aws.amazon.com/cloudwatch/home?

2. Metrics

Metrics là những biểu đồ thể hiện số liệu của tài nguyên chạy trên AWS. CloudWatch giám sát các dịch vụ khác bằng các Metrics.

CloudWatch cho phép giám sát các dịch vụ như EBS, EC2, S3,... trong bài viết này mình tập trung vào EC2.

Với mục đích giám sát, các EC2 Instances gửi những số liệu về hiệu suất làm việc một cách định kì đến CloudWatch. Các Amazon EC2 Metrics là các biểu đồ được đánh dấu mốc thời gian chứa những bộ thông tin khác nhau.

  • Với Basic monitoring, EC2 thu thập số liệu mỗi phút và xuất bản số liệu tới CloudWatch mỗi 5 phút một cách miễn phí.
  • Với Detailed monitoring, EC2 thu thập số liệu mỗi phút và xuất bản số liệu tới CloudWatch từng phút một, tất nhiên bạn cần bật chức năng này lên và sẽ tốn thêm chi phí.

Metrics CloudWatch cho EC2 có thể được xem bình thường thông qua phần Metrics của CloudWatch:

Ngoài ra cũng có thể sử dụng tab Monitoring trong phần console của EC2. Tab này hiển thị Metrics cho mỗi instance.

Một số Metrics thường dùng dành cho EC2 có thể kể đến:

  • CPUUtilization: Tỷ lệ phần trăm của các đơn vị tính EC2 được phân bổ hiện đang được sử dụng trên Instance. Số liệu này xác định sức mạnh xử lý cần thiết để chạy một ứng dụng trên một Instance được chọn.
  • NetworkIn: Số lượng Bytes nhận được từ tất cả network interfaces của instance. Metrics này xác định lưu lượng truy cập mạng của 1 instance.
  • NetworkOut: Số lượng Bytes được gửi đi từ tất cả các network interface của instance. Metrics này xác định lưu lượng mạng đi ra từ 1 instance.
  • StatusCheckFails: Báo cáo xem instance đã vượt qua cả kiểm tra instance status check and the system status check trong 1 phút vừa qua. Số liệu này có thể là 0 (passed) hoặc 1 (failed).
  • ImageId: Lọc ra data bạn yêu cầu cho tất cả instance chạy bởi cùng 1 AMI
  • ResourceCount: Số lượng tài nguyên được chỉ định đang chạy trong tài khoản của bạn. Các tài nguyên được xác định bởi các kích thước được liên kết với số liệu. Thống kê hữu ích nhất cho số liệu này là MAXIMUM, đại diện cho số lượng tài nguyên tối đa được sử dụng trong khoảng thời gian 1 phút.

3. Dashboards

Dashboards là các trang chủ của CloudWatch có thể tùy chỉnh trong mà bạn có thể sử dụng để giám sát tài nguyên của mình trong một màn hình duy nhất, ngay cả những tài nguyên được trải rộng trên các Regions khác nhau. Bạn có thể sử dụng Dashboards để tạo chế độ xem tùy chỉnh về số liệu và báo động cho tài nguyên AWS của mình.

Bạn có thể tạo các Dashboard dành riêng cho EC2 instance của bạn với những Metrics tuỳ chọn.

Ví dụ như dưới đây, mình tạo dashboard EC2-Monitoring với các Metrics là: CPUUtilization, CPUCreditBalance, Networkin, Networkout, ...

4. Events

Events là các sự kiện cho thấy sự thay đổi trong môi trường AWS của bạn. Tài nguyên AWS có thể tạo Event khi trạng thái của chúng thay đổi.

Amazon CloudWatch Events cung cấp luồng sự kiện hệ thống gần như real-time mô tả các thay đổi trong AWS. Bạn có thể sử dụng những Rules (Quy tắc) đươn giản để thiết lập các sự kiện và gắn chúng với 1 hoặc nhiều hàm hoặc luồn đích.

Rules Là những quy tắc khớp với các sự kiện và định tuyến chúng đến các mục tiêu để xử lý. Một rule duy nhất có thể định tuyến đến nhiều mục tiêu, tất cả đều được xử lý song song.

Các mục tiêu có thể là các dịch vụ của AWS như:

  • Amazon EC2 instances
  • AWS Lambda functions
  • Streams in Amazon Kinesis Data Streams
  • Delivery streams in Amazon Kinesis Data Firehose
  • Log groups in Amazon CloudWatch Logs
  • Amazon ECS tasks
  • Systems Manager Run Command
  • Systems Manager Automation
  • AWS Batch jobs
  • Step Functions state machines
  • Pipelines in CodePipeline
  • CodeBuild projects
  • Amazon Inspector assessment templates
  • Amazon SNS topics
  • Amazon SQS queues

Với EC2, bạn có thể tạo các Event như

  • Event khi Autoscaling Group mở rộng lên
  • EC2 thay đổi trạng thái
  • Amazon EC2 Spot Instance bị gián đoạn
  • ...

5. Logs

CloudWatchLogs giúp bạn theo dõi, lưu trữ và truy cập các tệp logs của mình từ các dịch vụ như Amazon EC2, AWS CloudTrail, Route 53 và các nguồn khác.

CloudWatch Logs cho phép bạn tập trung logs từ tất cả các hệ thống, ứng dụng và dịch vụ AWS mà bạn sử dụng. Sau đó, bạn có thể dễ dàng xem chúng, tìm kiếm chúng bằng code lỗi hoặc mẫu lỗi cụ thể, lọc chúng dựa trên các trường cụ thể hoặc lưu trữ chúng một cách an toàn để phân tích trong tương lai.

Bạn có thể cài đặt CloudWatch Logs giám sát 1 instance đang chạy hoặc có thể cài đặt từ khi khởi tạo instance.

Bạn có thể tham khảo thêm cách cài đặt tại đây: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html

6. Alarm

CloudWatch Alarm là những cảnh báo cho phép bạn truy cập CloudWatch Metrics và nhận thông báo khi số liệu nằm ngoài các mức (ngưỡng cao hoặc thấp) mà bạn định sẵn, sau đó quyết định một hành động tiếp theo một cách tự động. Bạn có thể đính kèm nhiều Alarms cho mỗi Metric và mỗi Alarm có thể có nhiều hành động.

Ví dụ như trường hợp dưới đây, chúng ta có thể tạo một alarm với Metrics CPUUtilization của EC2 Instance như sau:

  • Chọn điều kiện cảnh báo, ở đây mình chọn là >90%

 

  • Thiết lập thông báo và hành động sau khi Alarm được kích hoạt. Thông báo thông qua SNS topic và đồng thời kích hoạt hành động như Stop, terminate hay reboot instance như sau:

Alarm sau khi được tạo sẽ hiển thị như sau, với trường hợp này, khi CPU đạt tới ngưỡng màu đỏ (90%) thì Alarm sẽ được kích hoạt và Action thiết lập phía trên được thực thi (Stop Instance)

7. Kết luận

Như vậy mình đã giới thiệu một cách khái quát các khái niệm, chức năng và cách sử dụng của Amazon CloudWatch. Hy vọng sẽ có ích cho những bạn mới tìm hiểu về dịch vụ này.

Xin chào và hẹn gặp lại!