Tóm tắt
Thiết lập cảnh báo cho lưu lượng truyền tải mỗi tháng khi vượt quá 50% hoặc 80% của 4TB (giới hạn miễn phí của gói Lightsail 4GB):
- Bước 1: Lấy metric Network In/Out từ CloudWatch. 
- Bước 2: Tạo cron job tính tổng lưu lượng. 
- Bước 3: Tạo cảnh báo (alarm) khi vượt ngưỡng. 
Trước khi bắt đầu, cài AWS CLI
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
1. Khởi tạo IAM User
- Truy cập AWS IAM Console. 
- Chọn Users > Create user. 
- Nhập tên: - lightsail-cloudwatch-agent.
- Chọn Attach policies directly và gán policy - CloudWatchAgentServerPolicy.
- Nhấn Next, thêm tag (tùy chọn), và chọn Create user. 
- Sau khi tạo, chọn user > Create access key. 
- Chọn CLI use case, tải file - .csvchứa- Access keyvà- Secret.
2. Cài đặt và Cấu hình CloudWatch Agent
Bước 1: Cài đặt CloudWatch Agent
sudo apt update
sudo apt install -y wget unzip
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i amazon-cloudwatch-agent.deb
Bước 2: Thiết lập credential profile
aws configure --profile AmazonCloudWatchAgent
- Nhập - Access Keyvà- Secrettừ bước trước.
- Region: - ap-southeast-1
- Output format: để trống hoặc - json.
3. Cấu hình CloudWatch Agent
Bước 1: Tạo file config metric
sudo nano /opt/aws/amazon-cloudwatch-agent/bin/config.json
Dán nội dung sau:
{
  "agent": {
    "metrics_collection_interval": 60,
    "run_as_user": "root",
    "region": "ap-southeast-1"
  },
  "metrics": {
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "net": {
        "measurement": [
          "bytes_recv",
          "bytes_sent"
        ],
        "metrics_collection_interval": 60,
        "resources": [
          "*"
        ],
        "total": true
      }
    }
  }
}
Bước 2: Thiết lập profile sử dụng
sudo nano /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml
Dán nội dung sau:
[credentials]
shared_credential_profile = "AmazonCloudWatchAgent"
Lưu lại bằng tổ hợp Ctrl + O, Enter, sau đó Ctrl + X.
Bước 3: Khởi động Agent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
Kiểm tra trạng thái:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status
4. Kiểm tra Metric Trên CloudWatch
- Vào CloudWatch Console. 
- Chọn Metrics > All metrics > Browse. 
- Kiểm tra tại Custom namespaces > CWAgent. 
Để tìm Instance ID và interface:
aws cloudwatch list-metrics \
  --namespace "CWAgent" \
  --metric-name "net_bytes_recv" \
  --region ap-southeast-1 \
  --output json
5. Cron Job Tính Tổng Lưu Lượng Mỗi Tháng
Bước 1: Tạo script
nano ~/network_monthly_usage.sh
Dán nội dung sau (chỉnh INSTANCE_ID và INTERFACE_NAME):
#!/bin/bash
export AWS_PROFILE=AmazonCloudWatchAgent
INSTANCE_ID="i-07b283c143999f4d0"
INTERFACE_NAME="eth0"
REGION="ap-southeast-1"
START_DATE="$(date -u +%Y-%m-01T00:00:00Z)"
END_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
RECV=$(aws cloudwatch get-metric-data --metric-data-queries "[{\"Id\":\"recv\",\"MetricStat\":{\"Metric\":{\"Namespace\":\"CWAgent\",\"MetricName\":\"net_bytes_recv\",\"Dimensions\":[{\"Name\":\"InstanceId\",\"Value\":\"$INSTANCE_ID\"},{\"Name\":\"interface\",\"Value\":\"$INTERFACE_NAME\"}]} ,\"Period\":86400,\"Stat\":\"Sum\"},\"ReturnData\":true}]" --start-time "$START_DATE" --end-time "$END_DATE" --region "$REGION" --query 'MetricDataResults[0].Values' --output text | awk '{sum+=$1} END {print sum+0}')
SENT=$(aws cloudwatch get-metric-data --metric-data-queries "[{\"Id\":\"sent\",\"MetricStat\":{\"Metric\":{\"Namespace\":\"CWAgent\",\"MetricName\":\"net_bytes_sent\",\"Dimensions\":[{\"Name\":\"InstanceId\",\"Value\":\"$INSTANCE_ID\"},{\"Name\":\"interface\",\"Value\":\"$INTERFACE_NAME\"}]} ,\"Period\":86400,\"Stat\":\"Sum\"},\"ReturnData\":true}]" --start-time "$START_DATE" --end-time "$END_DATE" --region "$REGION" --query 'MetricDataResults[0].Values' --output text | awk '{sum+=$1} END {print sum+0}')
TOTAL_BYTES=$(echo "$RECV + $SENT" | bc)
TOTAL_GB=$(echo "scale=3; $TOTAL_BYTES / 1024 / 1024 / 1024" | bc)
aws cloudwatch put-metric-data \
  --namespace "Custom/MonthlyNetworkTraffic" \
  --metric-name "TotalNetworkTrafficBytes" \
  --value "$TOTAL_BYTES" \
  --unit Bytes \
  --region "$REGION"
echo "Total monthly traffic so far for $INSTANCE_ID ($INTERFACE_NAME): ${TOTAL_GB} GiB"
echo "Metric pushed to CloudWatch: Custom/MonthlyNetworkTraffic → TotalNetworkTrafficBytes"
Cấp quyền thực thi:
chmod +x ~/network_monthly_usage.sh
Bước 2: Tạo cron job
crontab -e
Thêm dòng sau (chạy mỗi phút):
* * * * * /bin/bash /home/ubuntu/network_monthly_usage.sh >> /home/ubuntu/network_usage.log 2>&1
Kiểm tra log:
tail -n 50 /home/ubuntu/network_usage.log
6. Tạo Alarm Cảnh Báo
- Truy cập CloudWatch Console. 
- Vào Alarms > All alarms > Create alarm > Select metric. 
- Chọn namespace: - Custom/MonthlyNetworkTraffic.
- Chọn metric: - TotalNetworkTrafficBytes.
- Thiết lập threshold: 
-   Statistic: Average
-   Period: 1 minute
-   Threshold type: Static
-   Condition: Greater than or equal to `2199023255552` (Bytes = 50% của 4TB)
- Chọn gửi cảnh báo qua email với SNS:
-   Chọn Create new topic
-   Đặt tên và nhập email nhận cảnh báo
-   Xác nhận email khi nhận được
- Đặt tên cho alarm, xác nhận và tạo.
7. Tạo Alarm thứ hai (80%)
Lặp lại các bước trên, thay giá trị ngưỡng thành 3518437208883 Bytes (~80% của 4TB).
✅ Kết luận
- Khi lưu lượng vượt ngưỡng 50% hoặc 80%/tháng, hệ thống sẽ gửi cảnh báo email.
 

 
                       
    
Top comments (0)