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à.
Utilizzare le espressioni matematiche del parametro
La sezione seguente fornisce informazioni ed esempi di policy di scalabilità predittiva che mostrano come utilizzare la formula dei parametri nella policy.
Argomenti
Comprendere la matematica dei parametri
Se tutto ciò che vuoi fare è aggregare i dati metrici esistenti, CloudWatch Metric Math ti consente di risparmiare lo sforzo e il costo della pubblicazione di un'altra metrica su. CloudWatch Puoi utilizzare qualsiasi metrica AWS fornita e puoi anche utilizzare le metriche che definisci come parte delle tue applicazioni. Ad esempio, potresti voler calcolare il backlog delle SQS code di Amazon per istanza. È possibile eseguire questa operazione prendendo il numero approssimativo di messaggi disponibili per il recupero dalla coda e dividendo tale numero per la capacità operativa del gruppo con scalabilità automatica.
Per ulteriori informazioni, consulta Using metric Math nella Amazon CloudWatch User Guide.
Se scegli di utilizzare un'espressione matematica dei parametri nella policy di dimensionamento predittivo, considera i seguenti punti:
-
Le operazioni di matematica dei parametri utilizzano i punti dati della combinazione univoca di nome del parametro, spazio dei nomi e coppie di parametri chiave/valore delle dimensioni.
-
Puoi utilizzare qualsiasi operatore aritmetico (+ - */^), funzione statistica (come AVG orSUM) o altra funzione che supporti. CloudWatch
-
È possibile utilizzare i parametri e i risultati di altre espressioni matematiche nelle formule dell'espressione matematica.
-
Le espressioni matematiche dei parametri possono essere costituite da aggregazioni diverse. Tuttavia, per il risultato finale dell'aggregazione è una best practice utilizzare
Average
per il parametro di dimensionamento eSum
per il parametro del carico. -
Qualsiasi espressione utilizzata in una specifica dei parametri deve restituire una singola serie temporale.
Per utilizzare i parametri matematici, procedi come segue:
-
Scegli una o più metriche. CloudWatch Quindi, crea l'espressione. Per ulteriori informazioni, consulta Using metric Math nella Amazon CloudWatch User Guide.
-
Verifica che l'espressione matematica della metrica sia valida utilizzando la console o il CloudWatch. CloudWatch GetMetricDataAPI
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 SQS coda Amazon e potresti voler utilizzare il numero di elementi in coda come criterio per la scalabilità predittiva. 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. Per ulteriori informazioni, consulta Politica di scalabilità basata su Amazon SQS.
Di seguito viene illustrato un esempio di policy di dimensionamento predittivo per questo scenario. Specifica i parametri di scalabilità e carico basati sulla SQS ApproximateNumberOfMessagesVisible
metrica Amazon, che è 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 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
}
]
}
}
]
}
L'esempio restituisce le politiche. ARN
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy",
"Alarms": []
}
Esempio di policy di dimensionamento predittivo da utilizzare in uno scenario di implementazione blu/verde (AWS CLI)
Un'espressione di ricerca fornisce un'opzione avanzata in cui è possibile eseguire query per un parametro da più gruppi Auto Scaling ed eseguire espressioni matematiche su di essi. Ciò è particolarmente utile per implementazioni blu/verde.
Nota
Un'implementazione blu/verde è un metodo di implementazione in cui si creano due gruppi Auto Scaling separati ma identici. Solo uno dei gruppi riceve il traffico di produzione. Il traffico utente viene inizialmente indirizzato al gruppo con scalabilità automatica precedente ("blu"), mentre un nuovo gruppo ("verde") viene utilizzato per testare e valutare una nuova versione di un'applicazione o di un servizio. Il traffico utente viene spostato sul gruppo con scalabilità automatica verde dopo che una nuova implementazione è stata testata e accettata. È quindi possibile eliminare il gruppo blu dopo che l'implementazione ha avuto esito positivo.
Quando vengono creati nuovi gruppi Auto Scaling nell'ambito di un'implementazione blu/verde, la cronologia dei parametri di ciascun gruppo può essere automaticamente inclusa nella policy di dimensionamento predittivo senza dover modificare le specifiche dei parametri. Per ulteriori informazioni, consulta Utilizzo delle politiche di scalabilità predittiva di EC2 Auto Scaling con implementazioni Blue/Green
Di seguito viene illustrato un esempio di policy che mostra come eseguire questa operazione. In questo esempio, la policy utilizza la CPUUtilization
metrica emessa da Amazon. EC2 Utilizza la metrica Amazon EC2 Auto Scaling e un'espressione matematica per calcolare il valore della GroupInServiceInstances
metrica di scaling per istanza. Definisce inoltre una specifica del parametro di capacità per ottenere il parametro GroupInServiceInstances
.
L'espressione di ricerca trova CPUUtilization
delle istanze in più gruppi Auto Scaling in base ai criteri di ricerca specificati. Se successivamente crei un nuovo gruppo con scalabilità automatica che soddisfi gli stessi criteri di ricerca, CPUUtilization
delle istanze nel nuovo gruppo con scalabilità automatica viene automaticamente incluso.
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))
"
}
]
}
}
]
}
L'esempio restituisce le politiche. ARN
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-blue-green-predictive-scaling-policy",
"Alarms": []
}