Policy di scalabilità predittiva avanzata che utilizza metriche personalizzate per Amazon ECS - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Policy di scalabilità predittiva avanzata che utilizza metriche personalizzate per Amazon ECS

È possibile utilizzare metriche predefinite o personalizzate in una politica di scalabilità predittiva. Le metriche personalizzate sono utili quando le metriche predefinite, come CPU, memoria, ecc.) non sono sufficienti per descrivere sufficientemente il carico dell'applicazione.

Quando si crea una politica di scalabilità predittiva con metriche personalizzate, è possibile specificare altre metriche fornite da. CloudWatch AWS In alternativa, puoi specificare metriche che definisci e pubblichi tu stesso. Puoi anche utilizzare la matematica metrica per aggregare e trasformare le metriche esistenti in una nuova serie temporale che AWS non viene tracciata automaticamente. Un esempio è la combinazione dei valori nei dati calcolando nuove somme o medie, denominate aggregazioni. I dati risultanti sono chiamati aggregato.

La sezione seguente contiene le best practice e alcuni esempi di come costruire la struttura JSON per la policy.

Prerequisiti

Per aggiungere parametri personalizzati alla tua policy di dimensionamento predittivo, devi disporre delle autorizzazioni cloudwatch:GetMetricData.

Per specificare le tue metriche anziché le metriche AWS fornite, devi prima pubblicarle su. CloudWatch Per ulteriori informazioni, consulta Pubblicazione di metriche personalizzate nella Amazon CloudWatch User Guide.

Quando pubblichi i tuoi parametri, assicurati di pubblicare i punti dati con una frequenza minima di cinque minuti. I punti dati vengono recuperati in CloudWatch base alla durata del periodo necessario. Ad esempio, la specifica della metrica di carico utilizza metriche orarie per misurare il carico sull'applicazione. CloudWatch utilizza i dati metrici pubblicati per fornire un unico valore di dati per ogni periodo di un'ora aggregando tutti i punti dati con timestamp che rientrano in ogni periodo di un'ora.

Best practice

Le seguenti best practice consentono di utilizzare i parametri personalizzati in modo più efficace:

  • La metrica più utile per la specifica della metrica di carico è una metrica che rappresenta il carico su un gruppo di Auto Scaling nel suo complesso.

  • La metrica più utile per la scalabilità delle specifiche della metrica è la metrica media del throughput o dell'utilizzo per attività.

  • L'utilizzo di destinazione deve corrispondere al tipo di parametro di dimensionamento. Per una configurazione di policy che utilizza l'utilizzo della CPU, si tratta, ad esempio, di una percentuale target.

  • Se questi suggerimenti non vengono seguiti, i valori futuri previsti della serie temporale probabilmente non saranno corretti. Per verificare che i dati siano corretti, è possibile visualizzare i valori previsti nella console. In alternativa, dopo aver creato la politica di scalabilità predittiva, ispeziona LoadForecast gli oggetti restituiti da una chiamata all'API. GetPredictiveScalingForecast

  • Ti consigliamo vivamente di configurare la scalabilità predittiva in modalità solo previsione in modo da poter valutare la previsione prima che la scalabilità predittiva inizi a scalare attivamente.

Limitazioni

  • Puoi eseguire query su punti dati con un massimo di 10 parametri in un'unica specifica del parametro.

  • Ai fini di questo limite, un'espressione conta come un parametro.

Risoluzione dei problemi di una politica di scalabilità predittiva con metriche personalizzate

Se si verifica un problema durante l'utilizzo di parametri personalizzati, si consiglia di procedere come segue:

  • Se riscontri un problema in una blue/green distribuzione durante l'utilizzo di un'espressione di ricerca, assicurati di aver creato un'espressione di ricerca che cerchi una corrispondenza parziale e non una corrispondenza esatta. È inoltre necessario verificare che la query trovi solo i gruppi di Auto Scaling in esecuzione nell'applicazione specifica. Per ulteriori informazioni sulla sintassi delle espressioni di ricerca, consulta la sintassi delle espressioni di CloudWatch ricerca nella Amazon CloudWatch User Guide.

  • Il put-scaling-policycomando convalida un'espressione quando crei la tua politica di scalabilità. Tuttavia, esiste la possibilità che questo comando non riesca a identificare la causa esatta degli errori rilevati. Per risolvere i problemi, risolvi gli errori che ricevi in risposta a una richiesta al get-metric-datacomando. È inoltre possibile risolvere i problemi relativi all'espressione dalla console. CloudWatch

  • Devi specificare false per ReturnData se MetricDataQueries specifica la funzione SEARCH() da sola senza una funzione matematica come SUM(). Questo perché le espressioni di ricerca possono restituire più serie temporali e una specifica del parametro basata su un'espressione può restituire solo una serie temporale.

  • Tutti i parametri coinvolti in un'espressione di ricerca devono avere la stessa risoluzione.

Esempio di policy di dimensionamento predittivo che combina parametri utilizzando la formula dei parametri (AWS CLI)

A volte, invece di specificare direttamente il parametro, potrebbe essere necessario prima elaborarne i dati in qualche modo. Ad esempio, potresti avere un'applicazione che estrae il lavoro da una coda Amazon SQS e potresti utilizzare il numero di elementi nella coda come policy di dimensionamento predittivo. Il numero di messaggi nella coda non definisce esclusivamente il numero di istanze necessarie. Pertanto, è necessario più lavoro per creare un parametro che si può utilizzare per calcolare il backlog per istanza.

Di seguito viene illustrato un esempio di policy di dimensionamento predittivo per questo scenario. Specifica i parametri di dimensionamento e del carico basati sul parametro ApproximateNumberOfMessagesVisible di Amazon SQS, ovvero il numero di messaggi disponibili per il recupero dalla coda. Utilizza anche il parametro Amazon EC2 Auto Scaling e un'espressione matematica per calcolare il backlog per istanza per la GroupInServiceInstances metrica di scaling.

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 } ] } } ] }

L'esempio restituisce l'ARN della policy.

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