View a markdown version of this page

Kebijakan penskalaan prediktif lanjutan menggunakan metrik khusus untuk Amazon ECS - Amazon Elastic Container Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kebijakan penskalaan prediktif lanjutan menggunakan metrik khusus untuk Amazon ECS

Anda dapat menggunakan metrik yang telah ditentukan atau kustom dalam kebijakan penskalaan prediktif. Metrik khusus berguna ketika metrik yang telah ditentukan sebelumnya, seperti CPU, memori, dll) tidak cukup untuk menggambarkan beban aplikasi Anda secara memadai.

Saat membuat kebijakan penskalaan prediktif dengan metrik khusus, Anda dapat menentukan CloudWatch metrik lain yang disediakan oleh AWS. Atau, Anda dapat menentukan metrik yang Anda tentukan dan publikasikan sendiri. Anda juga dapat menggunakan matematika metrik untuk menggabungkan dan mengubah metrik yang ada menjadi deret waktu baru yang AWS tidak dilacak secara otomatis. Contohnya adalah menggabungkan nilai dalam data Anda dengan menghitung jumlah atau rata-rata baru yang disebut agregasi. Data yang dihasilkan disebut agregat.

Bagian berikut berisi praktik terbaik dan contoh cara membangun struktur JSON untuk kebijakan.

Prasyarat

Untuk menambahkan metrik khusus ke kebijakan penskalaan prediktif, Anda harus memiliki cloudwatch:GetMetricData izin.

Untuk menentukan metrik Anda sendiri alih-alih metrik yang AWS disediakan, Anda harus terlebih dahulu mempublikasikan metrik Anda ke CloudWatch. Untuk informasi selengkapnya, lihat Menerbitkan metrik khusus di Panduan CloudWatch Pengguna Amazon.

Jika Anda mempublikasikan metrik Anda sendiri, pastikan untuk mempublikasikan titik data pada frekuensi minimal lima menit. Poin data diambil CloudWatch berdasarkan lamanya periode yang dibutuhkannya. Misalnya, spesifikasi metrik beban menggunakan metrik per jam untuk mengukur beban pada aplikasi Anda. CloudWatch menggunakan data metrik yang dipublikasikan untuk memberikan nilai data tunggal untuk periode satu jam dengan menggabungkan semua titik data dengan cap waktu yang termasuk dalam setiap periode satu jam.

Praktik terbaik

Praktik terbaik berikut dapat membantu Anda menggunakan metrik khusus dengan lebih efektif:

  • Metrik yang paling berguna untuk spesifikasi metrik beban adalah metrik yang mewakili beban pada grup Penskalaan Otomatis secara keseluruhan.

  • Metrik yang paling berguna untuk skala spesifikasi metrik penskalaan adalah throughput atau pemanfaatan rata-rata per metrik tugas.

  • Pemanfaatan target harus sesuai dengan jenis metrik penskalaan. Untuk konfigurasi kebijakan yang menggunakan pemanfaatan CPU, ini adalah persentase target, misalnya.

  • Jika rekomendasi ini tidak diikuti, nilai masa depan yang diperkirakan dari deret waktu mungkin akan salah. Untuk memvalidasi bahwa data benar, Anda dapat melihat nilai perkiraan di konsol. Atau, setelah Anda membuat kebijakan penskalaan prediktif, periksa LoadForecast objek yang dikembalikan oleh panggilan ke GetPredictiveScalingForecast API.

  • Kami sangat menyarankan Anda mengonfigurasi penskalaan prediktif dalam mode hanya perkiraan sehingga Anda dapat mengevaluasi perkiraan sebelum penskalaan prediktif mulai melakukan penskalaan secara aktif.

Batasan

  • Anda dapat menanyakan titik data hingga 10 metrik dalam satu spesifikasi metrik.

  • Untuk tujuan batas ini, satu ekspresi dihitung sebagai satu metrik.

Memecahkan masalah kebijakan penskalaan prediktif dengan metrik khusus

Jika terjadi masalah saat menggunakan metrik khusus, sebaiknya lakukan hal berikut:

  • Jika Anda mengalami masalah dalam blue/green penerapan saat menggunakan ekspresi pencarian, pastikan Anda membuat ekspresi penelusuran yang mencari kecocokan sebagian dan bukan kecocokan yang tepat. Anda juga harus memeriksa bahwa kueri hanya menemukan grup Auto Scaling yang berjalan di aplikasi tertentu. Untuk informasi selengkapnya tentang sintaks ekspresi CloudWatch pencarian, lihat sintaks ekspresi pencarian di Panduan CloudWatch Pengguna Amazon.

  • Perintah put-scaling-policy memvalid asi ekspresi saat Anda membuat kebijakan penskalaan. Namun, ada kemungkinan bahwa perintah ini mungkin gagal mengidentifikasi penyebab pasti dari kesalahan yang terdeteksi. Untuk memperbaiki masalah, memecahkan masalah kesalahan yang Anda terima dalam respons dari permintaan ke perintah get-metric-data. Anda juga dapat memecahkan masalah ekspresi dari CloudWatch konsol.

  • Anda harus menentukan false untuk ReturnData if MetricDataQueries menentukan fungsi SEARCH () sendiri tanpa fungsi matematika seperti SUM (). Ini karena ekspresi pencarian mungkin mengembalikan beberapa deret waktu, dan spesifikasi metrik berdasarkan ekspresi hanya dapat mengembalikan satu deret waktu.

  • Semua metrik yang terlibat dalam ekspresi pencarian harus memiliki resolusi yang sama.

Contoh kebijakan penskalaan prediktif yang menggabungkan metrik menggunakan matematika metrik (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 antrian Amazon SQS, 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.

Berikut ini adalah contoh kebijakan penskalaan prediktif untuk skenario ini. Ini menentukan metrik penskalaan dan memuat yang didasarkan pada ApproximateNumberOfMessagesVisible metrik Amazon SQS, yang merupakan jumlah pesan yang tersedia untuk diambil dari antrian. Ini juga menggunakan GroupInServiceInstances metrik Amazon EC2 Auto Scaling dan ekspresi matematika untuk menghitung backlog per instance untuk metrik penskalaan.

aws application-autoscaling put-scaling-policy --policy-name my-sqs-custom-metrics-policy \ --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json --service-namespace ecs \ --resource-id service/MyCluster/test \ "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 ARN kebijakan.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy", "Alarms": [] }