Chuẩn bị các metric cho Predictive scaling

Chuẩn bị dữ liệu cho Predictive scaling

Vì Predictive scaling cần phải có một lượng dữ liệu trong vòng hơn 2 ngày để có thể đưa ra được các dự đoán vào các ngày tiếp theo, mà ở đây chúng ta lại không có các dữ liệu đó cho nên là chúng ta sẽ cần phải chuẩn bị để giải lập một môi trường

Các bước chuẩn bị

Đầu tên là chúng ta sẽ tạo một folder mới với tên là metric-preparation và chuyển vào trong thư mục này

  mkdir metric-preparation && cd metric-preparation

Sau đó là tải kịch bản để chuẩn bị các dữ liệu

  curl -o prepare-metric-data.sh https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/workshops/efficient-and-resilient-ec2-auto-scaling/prepare-metric-data.sh

role

Sau khi tải xong thì vào trong để thay đổi phần câu lệnh trong kịch bản

  vim prepare-metric-data.sh
  #!/bin/bash
set -e
file=$1
group=$2
echo "=== Format metric file ==="
echo $file
echo $group

l=$(jq length $file)
i=0
while [ $i -lt $l ]
do
time=$(date -d "$[5*$i] minutes ago")
cat $file | jq --argjson i $i --arg t "$time" '.[$i].Timestamp |= $t' > tmp.json && mv tmp.json $file
i=$[$i+1]
done

echo "replace autoscaling group name.."

sed -i $file -e "s/#ASGPLACEHOLDER#/$group/g"

echo "=== Complete ==="

role1

Sau khi chỉnh sửa xong thì giờ chúng ta tiến hành tải các dữ liệu chưa qua xử lý, Trước tiên là metric cho các instances.

  curl -o metric-instances.json https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/workshops/efficient-and-resilient-ec2-auto-scaling/metric-instances.json

Dữ liệu cho CPU

  curl -o metric-cpu.json https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/workshops/efficient-and-resilient-ec2-auto-scaling/metric-cpu.json

role1

Tiến hành sửa đổi lần lượt 2 loại dữ liệu này, đầu tiên là cho CPU trước

  bash prepare-metric-data.sh metric-cpu.json FCJ-Management-ASG && cat metric-cpu.json

createpolicy

Instances

  bash prepare-metric-data.sh metric-instances.json FCJ-Management-ASG && cat metric-instances.json

createpolicy

💡 Note
Ở 2 lệnh ở trên đều xuất hiện tham số FCJ-Management-ASG thì nó chính là tên của Auto Scaling Group mà chúng ta sẽ tạo về sau, nên về sau thì bạn cần sẽ phải tạo ASG với cùng tên như thế. Còn không thì bạn nên thay một cái tên khác từ bây giờ.

Tải dữ liệu lên CloudWatch

Trong Amazon Linux 2023, và dùng đúng AMI thì AWS CLI đã được cài đặt sẵn ở bên trong, lúc này thì chúng ta chỉ cần lấy ra để cấu hình lại các crediential là được. Nên nhớ là bạn phải có một IAM User đủ quyền để tải dữ liệu lên CloudWatch hoặc ít nhất là đủ quyền để làm bài workshop này.

Vào trang IAM, vào thông tin IAM User và ấy Access Key Id và Serect Access Key

  aws configure

Tiến hành cấu hình

createpolicy

Sau đó là tải 2 file dữ liệu mà chúng ta đã chuẩn bị trước đó lên trên CloudWatch

  aws cloudwatch put-metric-data --namespace 'FCJ Management Custom Metrics' --metric-data file://metric-cpu.json
  aws cloudwatch put-metric-data --namespace 'FCJ Management Custom Metrics' --metric-data file://metric-instances.json 

createpolicy

Kiểm tra

Vào trong CloudWatch để kiểm tra kết quả

  • Tìm CloudWatch

  • Click để vào trong CloudWatch Console

    createpolicy

Trong giao diện Console của CloudWatch

  • Chọn All metrics

  • Chọn FCJ Management Custom Metrics

    createpolicy

Chọn AutoScalingGroupName

createpolicy

Chọn tiếp 2 thông số như hình ở dưới, chờ một khoảng thời gian để nhận được kết quả.

createpolicy