Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan ekspresi matematika metrik
Bagian berikut memberikan informasi dan contoh kebijakan penskalaan prediktif yang menunjukkan bagaimana Anda dapat menggunakan matematika metrik dalam kebijakan Anda.
Topik
Memahami matematika metrik
Jika yang ingin Anda lakukan hanyalah mengumpulkan data metrik yang ada, matematika CloudWatch metrik menghemat upaya dan biaya penerbitan metrik lain. CloudWatch Anda dapat menggunakan metrik apa pun yang AWS menyediakan, dan Anda juga dapat menggunakan metrik yang Anda tentukan sebagai bagian dari aplikasi Anda. Misalnya, Anda mungkin ingin menghitung backlog SQS antrian Amazon per instance. Anda dapat melakukannya dengan mengambil perkiraan jumlah pesan yang tersedia untuk diambil dari antrian dan membagi nomor tersebut dengan kapasitas berjalan grup Auto Scaling.
Untuk informasi selengkapnya, lihat Menggunakan matematika metrik di Panduan CloudWatch Pengguna Amazon.
Jika Anda memilih untuk menggunakan ekspresi matematika metrik dalam kebijakan penskalaan prediktif Anda, pertimbangkan poin-poin berikut:
-
Operasi matematika metrik menggunakan titik data dari kombinasi unik nama metrik, namespace, dan kunci dimensi/pasangan nilai metrik.
-
Anda dapat menggunakan operator aritmatika (+ - */^), fungsi statistik (seperti AVG atauSUM), atau fungsi lain yang mendukung. CloudWatch
-
Anda dapat menggunakan metrik dan hasil ekspresi matematika lainnya dalam rumus ekspresi matematika.
-
Ekspresi matematika metrik Anda dapat terdiri dari agregasi yang berbeda. Namun, ini adalah praktik terbaik untuk hasil agregasi akhir yang digunakan
Average
untuk metrik penskalaan danSum
untuk metrik beban. -
Setiap ekspresi yang digunakan dalam spesifikasi metrik pada akhirnya harus mengembalikan satu deret waktu.
Untuk menggunakan matematika metrik, lakukan hal berikut:
-
Pilih satu atau beberapa CloudWatch metrik. Kemudian, buat ekspresi. Untuk informasi selengkapnya, lihat Menggunakan matematika metrik di Panduan CloudWatch Pengguna Amazon.
-
Verifikasi bahwa ekspresi matematika metrik valid dengan menggunakan CloudWatch konsol atau CloudWatch GetMetricDataAPI.
Contoh kebijakan penskalaan prediktif yang menggabungkan metrik menggunakan metrik matematika ()AWS CLI
Terkadang, alih-alih menentukan metrik secara langsung, Anda mungkin perlu terlebih dahulu memproses datanya dengan cara tertentu. Misalnya, Anda mungkin memiliki aplikasi yang menarik pekerjaan dari SQS antrian Amazon, dan Anda mungkin ingin menggunakan jumlah item dalam antrian sebagai kriteria untuk penskalaan prediktif. Jumlah pesan dalam antrian tidak hanya menentukan jumlah instance yang Anda butuhkan. Oleh karena itu, lebih banyak pekerjaan diperlukan untuk membuat metrik yang dapat digunakan untuk menghitung backlog per instance. Untuk informasi selengkapnya, lihat Kebijakan penskalaan berdasarkan Amazon SQS.
Berikut ini adalah contoh kebijakan penskalaan prediktif untuk skenario ini. Ini menentukan metrik penskalaan dan pemuatan yang didasarkan pada SQS ApproximateNumberOfMessagesVisible
metrik Amazon, yang merupakan jumlah pesan yang tersedia untuk diambil dari antrian. Ini juga menggunakan GroupInServiceInstances
metrik EC2 Auto Scaling Amazon dan ekspresi matematika untuk menghitung backlog per instance untuk metrik penskalaan.
aws autoscaling put-scaling-policy --policy-name my-sqs-custom-metrics-policy
\
--auto-scaling-group-name my-asg
--policy-type PredictiveScaling \
--predictive-scaling-configuration file://config.json
{
"MetricSpecifications": [
{
"TargetValue": 100
,
"CustomizedScalingMetricSpecification": {
"MetricDataQueries": [
{
"Label": "Get the queue size (the number of messages waiting to be processed)",
"Id": "queue_size
",
"MetricStat": {
"Metric": {
"MetricName": "ApproximateNumberOfMessagesVisible
",
"Namespace": "AWS/SQS
",
"Dimensions": [
{
"Name": "QueueName
",
"Value": "my-queue
"
}
]
},
"Stat": "Sum
"
},
"ReturnData": false
},
{
"Label": "Get the group size (the number of running instances)",
"Id": "running_capacity
",
"MetricStat": {
"Metric": {
"MetricName": "GroupInServiceInstances
",
"Namespace": "AWS/AutoScaling
",
"Dimensions": [
{
"Name": "AutoScalingGroupName
",
"Value": "my-asg
"
}
]
},
"Stat": "Sum
"
},
"ReturnData": false
},
{
"Label": "Calculate the backlog per instance",
"Id": "scaling_metric
",
"Expression": "queue_size / running_capacity
",
"ReturnData": true
}
]
},
"CustomizedLoadMetricSpecification": {
"MetricDataQueries": [
{
"Id": "load_metric
",
"MetricStat": {
"Metric": {
"MetricName": "ApproximateNumberOfMessagesVisible
",
"Namespace": "AWS/SQS
",
"Dimensions": [
{
"Name": "QueueName
",
"Value": "my-queue
"
}
],
},
"Stat": "Sum
"
},
"ReturnData": true
}
]
}
}
]
}
Contoh mengembalikan kebijakanARN.
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy",
"Alarms": []
}
Contoh kebijakan penskalaan prediktif untuk digunakan dalam skenario penerapan biru/hijau ()AWS CLI
Ekspresi penelusuran menyediakan opsi lanjutan di mana Anda dapat melakukan kueri metrik dari beberapa grup Auto Scaling dan melakukan ekspresi matematika pada mereka. Ini sangat berguna untuk penerapan biru/hijau.
catatan
Penerapan biru/hijau adalah metode penerapan di mana Anda membuat dua grup Auto Scaling yang terpisah namun identik. Hanya satu dari kelompok yang menerima lalu lintas produksi. Lalu lintas pengguna awalnya diarahkan ke grup Auto Scaling sebelumnya (“biru”), sedangkan grup baru (“hijau”) digunakan untuk pengujian dan evaluasi versi baru aplikasi atau layanan. Lalu lintas pengguna dialihkan ke grup Auto Scaling hijau setelah penerapan baru diuji dan diterima. Anda kemudian dapat menghapus grup biru setelah penerapan berhasil.
Saat grup Auto Scaling baru dibuat sebagai bagian dari penerapan biru/hijau, riwayat metrik setiap grup dapat secara otomatis disertakan dalam kebijakan penskalaan prediktif tanpa Anda harus mengubah spesifikasi metriknya. Untuk informasi selengkapnya, lihat Menggunakan kebijakan penskalaan prediktif EC2 Auto Scaling dengan penerapan Biru/Hijau
Contoh kebijakan berikut menunjukkan bagaimana hal ini dapat dilakukan. Dalam contoh ini, kebijakan menggunakan CPUUtilization
metrik yang dipancarkan oleh Amazon. EC2 Ini menggunakan GroupInServiceInstances
metrik EC2 Auto Scaling Amazon dan ekspresi matematika untuk menghitung nilai metrik penskalaan per instance. Ini juga menentukan spesifikasi metrik kapasitas untuk mendapatkan GroupInServiceInstances
metrik.
Ekspresi pencarian menemukan instance di beberapa grup Auto Scaling berdasarkan kriteria pencarian yang ditentukan. CPUUtilization
Jika nanti Anda membuat grup Auto Scaling baru yang cocok dengan kriteria penelusuran yang sama, instance di grup Auto Scaling baru akan disertakan secara otomatis. CPUUtilization
aws autoscaling put-scaling-policy --policy-name my-blue-green-predictive-scaling-policy
\
--auto-scaling-group-name my-asg
--policy-type PredictiveScaling \
--predictive-scaling-configuration file://config.json
{
"MetricSpecifications": [
{
"TargetValue": 25
,
"CustomizedScalingMetricSpecification": {
"MetricDataQueries": [
{
"Id": "load_sum
",
"Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 300))
",
"ReturnData": false
},
{
"Id": "capacity_sum
",
"Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))
",
"ReturnData": false
},
{
"Id": "weighted_average
",
"Expression": "load_sum / capacity_sum
",
"ReturnData": true
}
]
},
"CustomizedLoadMetricSpecification": {
"MetricDataQueries": [
{
"Id": "load_sum
",
"Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 3600))
"
}
]
},
"CustomizedCapacityMetricSpecification": {
"MetricDataQueries": [
{
"Id": "capacity_sum
",
"Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))
"
}
]
}
}
]
}
Contoh mengembalikan kebijakanARN.
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-blue-green-predictive-scaling-policy",
"Alarms": []
}