

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à.

# Scalabilità predittiva per Application Auto Scaling
<a name="application-auto-scaling-predictive-scaling"></a>

La scalabilità predittiva consente di scalare in modo proattivo l'applicazione. La scalabilità predittiva analizza i dati storici di carico per rilevare modelli giornalieri o settimanali nei flussi di traffico. Utilizza queste informazioni per prevedere le esigenze future di capacità e aumentare in modo proattivo la capacità dell'applicazione per far fronte al carico previsto.

Il dimensionamento predittivo è adatto per le situazioni in cui si hanno:
+ Traffico ciclico, ad esempio, un elevato uso di risorse durante i normali orari di ufficio e un basso utilizzo di risorse durante la notte
+ Schemi di on-and-off carico di lavoro ricorrenti, come l'elaborazione in batch, i test o l'analisi periodica dei dati.
+ Applicazioni che richiedono molto tempo per l'inizializzazione, causando un notevole impatto della latenza sulle prestazioni delle applicazioni durante gli eventi di aumento orizzontale

**Topics**
+ [Come funziona](aas-predictive-scaling-how-it-works.md)
+ [Creazione di una policy di dimensionamento predittivo](aas-create-predictive-scaling-policy.md)
+ [Sovrascrivere la previsione](aas-predictive-scaling-overriding-forecast-capacity.md)
+ [Utilizzare parametri personalizzati](aas-predictive-scaling-customized-metric-specification.md)

# Come funziona la scalabilità predittiva di Application Auto Scaling
<a name="aas-predictive-scaling-how-it-works"></a>

Per utilizzare la scalabilità predittiva, crea una politica di scalabilità predittiva che specifichi la metrica da monitorare e analizzare. CloudWatch Puoi utilizzare una metrica predefinita o una metrica personalizzata. Affinché la scalabilità predittiva inizi a prevedere i valori futuri, questa metrica deve contenere almeno 24 ore di dati.

Dopo aver creato la policy, il dimensionamento predittivo inizia ad analizzare i dati metrici relativi agli ultimi 14 giorni per identificare i modelli. Utilizza questa analisi per generare una previsione oraria dei requisiti di capacità per le prossime 48 ore. La previsione viene aggiornata ogni 6 ore utilizzando i CloudWatch dati più recenti. Con l'arrivo di nuovi dati, la scalabilità predittiva è in grado di migliorare continuamente l'accuratezza delle previsioni future.

*È possibile innanzitutto abilitare la scalabilità predittiva in modalità solo previsione.* In questa modalità, genera previsioni di capacità ma in realtà non ridimensiona la capacità in base a tali previsioni. Ciò consente di valutare l'accuratezza e l'idoneità della previsione. 

Dopo aver esaminato i dati di previsione e deciso di iniziare il ridimensionamento in base a tali dati, passa la politica di scalabilità alla modalità previsione e scala. In questa modalità:
+ Se la previsione prevede un aumento del carico, la scalabilità predittiva aumenterà la capacità.
+ Se la previsione prevede una riduzione del carico, la scalabilità predittiva non verrà adattata per rimuovere la capacità. Ciò garantisce la scalabilità solo quando la domanda diminuisce effettivamente e non solo in base alle previsioni. Per rimuovere la capacità che non è più necessaria, è necessario creare una policy Target Tracking o Step Scaling perché rispondono ai dati metrici in tempo reale. 

Per impostazione predefinita, la scalabilità predittiva ridimensiona gli obiettivi scalabili all'inizio di ogni ora in base alla previsione per quell'ora. Facoltativamente, puoi specificare un'ora di inizio precedente utilizzando la `SchedulingBufferTime` proprietà nell'operazione API. `PutScalingPolicy` Ciò consente di avviare la capacità prevista prima della domanda prevista, il che offre alla nuova capacità il tempo necessario per prepararsi a gestire il traffico. 

## Limite massimo di capacità
<a name="aas-ps-max-capcity-limit"></a>

Per impostazione predefinita, quando vengono impostate politiche di scalabilità, non è possibile aumentare la capacità oltre la capacità massima.

In alternativa, è possibile consentire l'aumento automatico della capacità massima del target scalabile se la capacità prevista si avvicina o supera la capacità massima del target scalabile. Per abilitare questo comportamento, utilizza le `MaxCapacityBuffer` proprietà `MaxCapacityBreachBehavior` and nell'operazione `PutScalingPolicy` API o l'impostazione del **comportamento Max capacity** in. Console di gestione AWS

**avvertimento**  
Prestate attenzione quando consentite l'aumento automatico della capacità massima. La capacità massima non torna automaticamente al valore massimo originale.

## Comandi comunemente utilizzati per la creazione, la gestione e l'eliminazione delle policy di dimensionamento
<a name="aas-ps-common-commands"></a>

I comandi comunemente usati per lavorare con le politiche di scalabilità predittiva includono:
+ `register-scalable-target`per registrare AWS o personalizzare le risorse come obiettivi scalabili, sospendere il ridimensionamento e riprendere il ridimensionamento.
+ `put-scaling-policy`per creare una politica di scalabilità predittiva.
+ `get-predictive-scaling-forecast`per recuperare i dati di previsione per una politica di scalabilità predittiva.
+ `describe-scaling-activities`per restituire informazioni sulle attività di scalabilità in un. Regione AWS
+ `describe-scaling-policies`per restituire informazioni sulle politiche di scalabilità in un. Regione AWS
+ `delete-scaling-policy`per eliminare una politica di ridimensionamento.

**parametri personalizzati**  
È possibile utilizzare metriche personalizzate per prevedere la capacità necessaria per un'applicazione. Le metriche personalizzate sono utili quando le metriche predefinite non sono sufficienti per acquisire il carico sull'applicazione.

## Considerazioni
<a name="aas-ps-considerations"></a>

Le seguenti considerazioni si applicano quando si lavora con il ridimensionamento predittivo.
+ Verifica se la scalabilità predittiva è adatta alla tua applicazione. Un'applicazione è ideale per la scalabilità predittiva se presenta schemi di carico ricorrenti specifici per il giorno della settimana o l'ora del giorno. Valuta la previsione prima di consentire alla scalabilità predittiva di scalare attivamente la tua applicazione.
+ Per avviare la previsione, il dimensionamento predittivo richiede almeno 24 ore di dati cronologici. Tuttavia, le previsioni sono più efficaci se i dati cronologici si estendono su due settimane intere.
+ Scegliere una metrica di carico che rappresenta con precisione il carico completo dell'applicazione ed è l'aspetto dell'applicazione su cui è più importante basare il dimensionamento.

# Crea una politica di scalabilità predittiva per Application Auto Scaling
<a name="aas-create-predictive-scaling-policy"></a>

La seguente policy di esempio utilizza AWS CLI per configurare una politica di scalabilità predittiva per il servizio Amazon ECS. Sostituisci ogni *user input placeholder* con le tue informazioni.

Per ulteriori informazioni sui CloudWatch parametri che puoi specificare, consulta il riferimento alle API [PredictiveScalingMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PredictiveScalingMetricSpecification.html)di *Amazon EC2 Auto* Scaling.

Di seguito è riportato un esempio di policy con una configurazione di memoria predefinita.

```
cat policy.json
{
    "MetricSpecifications": [
        {
            "TargetValue": 40,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ECSServiceMemoryUtilization"
            }
        }
    ],
    "SchedulingBufferTime": 3600,
    "MaxCapacityBreachBehavior": "HonorMaxCapacity",
    "Mode": "ForecastOnly"
}
```

L'esempio seguente illustra la creazione della policy eseguendo il [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html)comando con il file di configurazione specificato.

```
aws aas put-scaling-policy \
--service-namespace ecs \
--region us-east-1 \
--policy-name predictive-scaling-policy-example \
--resource-id service/MyCluster/test \
--policy-type PredictiveScaling \
--scalable-dimension ecs:service:DesiredCount \
--predictive-scaling-policy-configuration file://policy.json
```

In caso di esito positivo, questo comando restituisce l'ARN della policy.

```
{
"PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
"Alarms": []
}
```

# Sovrascrivere i valori di previsione mediante operazioni pianificate
<a name="aas-predictive-scaling-overriding-forecast-capacity"></a>

Talvolta, potrebbero essere disponibili ulteriori informazioni sui requisiti futuri dell'applicazione che il calcolo del forecast non è in grado di prendere in considerazione. Ad esempio, i calcoli del forecast potrebbero sottovalutare la capacità necessaria per un evento di marketing imminente. È possibile utilizzare le operazioni pianificate per sostituire temporaneamente il forecast nei periodi di tempo futuri. Le operazioni pianificate possono essere eseguite su base periodica o in una data e un'ora specifiche in cui si manifestino variazioni della domanda una tantum. 

Ad esempio, è possibile creare un'operazione pianificata con una capacità minima superiore a quella prevista. In fase di esecuzione, Application Auto Scaling aggiorna la capacità minima del target scalabile. Poiché il dimensionamento predittivo ottimizza la capacità, viene osservata un'azione pianificata con una capacità minima superiore ai valori di forecast. Ciò fa sì che la capacità non sia inferiore al previsto. Per interrompere la sostituzione del forecast, utilizza una seconda operazione pianificata per riportare la capacità minima all'impostazione originale.

La procedura seguente descrive le fasi per sostituire il forecast nei periodi di tempo futuri. 

**Topics**
+ [Fase 1: analizza i dati di serie temporali (opzionale)](#analyzing-time-series-data)
+ [Fase 2: creazione di due operazioni pianificate](#scheduling-capacity)

**Importante**  
Questo argomento presuppone che si stia cercando di sostituire la previsione per passare a una capacità superiore a quella prevista. *Se è necessario ridurre temporaneamente la capacità senza interferenze dovute a una politica di scalabilità predittiva, utilizza invece la modalità di sola previsione.* In modalità di sola previsione, la scalabilità predittiva continuerà a generare previsioni, ma non aumenterà automaticamente la capacità. È quindi possibile monitorare l'utilizzo delle risorse e ridurre manualmente le dimensioni del gruppo in base alle esigenze. 

## Fase 1: analizza i dati di serie temporali (opzionale)
<a name="analyzing-time-series-data"></a>

Inizia analizzando i dati delle serie temporali dei forecast. Si tratta di un passaggio facoltativo, ma è utile se desideri comprendere i dettagli del forecast.

1. **Recupero del forecast**

   Dopo aver creato il forecast, puoi avviare una query per un periodo di tempo specifico nel forecast. L'obiettivo della query è ottenere lo scenario completo dei dati delle serie temporali per un periodo di tempo specifico. 

   La query può includere fino a due giorni di dati di forecast futuro. Se utilizzi il dimensionamento predittivo per un certo periodo di tempo, puoi anche accedere ai dati dei forecast precedenti. Tuttavia, la durata massima tra l'ora di inizio e di fine è 30 giorni. 

   Per recuperare la previsione, usa il [get-predictive-scaling-forecast](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/application-autoscaling/get-predictive-scaling-forecast.html)comando. L'esempio seguente ottiene la previsione di scalabilità predittiva per il servizio Amazon ECS.

   ```
   aws application-autoscaling get-predictive-scaling-forecast --service-namespace ecs \
       --scalable-dimension ecs:service:DesiredCount \
       --resource-id 1234567890abcdef0          
       --policy-name predictive-scaling-policy \     
       --start-time "2021-05-19T17:00:00Z" \
       --end-time "2021-05-19T23:00:00Z"
   ```

   La risposta include due previsioni: e. `LoadForecast` `CapacityForecast` `LoadForecast`mostra la previsione oraria del carico. `CapacityForecast`mostra i valori di previsione per la capacità necessaria su base oraria per gestire il carico previsto mantenendo un livello specificato. `TargetValue`

1. **Identificazione del periodo di tempo di destinazione**

   Identifica l'ora o le ore in cui deve avvenire la variazione della domanda una tantum. Ricorda che le date e le ore mostrate nel forecast sono in UTC.

## Fase 2: creazione di due operazioni pianificate
<a name="scheduling-capacity"></a>

Ora crea quindi due operazioni pianificate per un periodo di tempo specifico in cui l'applicazione avrà un carico superiore a quello previsto. Ad esempio, se è previsto un evento di marketing che genererà traffico nel tuo sito per un periodo di tempo limitato, puoi pianificare un'operazione singola per aggiornare la capacità minima all'ora di inizio prevista. Quindi, pianifica un'altra operazione per riportare la capacità minima all'impostazione originale al termine dell'evento. 

**Come creare due operazioni pianificate per eventi singoli (AWS CLI)**  
Per creare le azioni pianificate, usa il comando. [ put-scheduled-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/application-autoscaling/put-scheduled-action.html)

L'esempio seguente definisce una pianificazione per Amazon EC2 Auto Scaling che mantiene una capacità minima di tre istanze il 19 maggio alle 17:00 per otto ore. I comandi seguenti mostrano come implementare questo scenario.

Il primo comando [put-scheduled-update-group-action](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scheduled-update-group-action.html) indica ad Amazon EC2 Auto Scaling di aggiornare la capacità minima del gruppo Auto Scaling specificato alle 17:00 UTC del 19 maggio 2021. 

```
aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-event-start \
  --auto-scaling-group-name my-asg --start-time "2021-05-19T17:00:00Z" --minimum-capacity 3
```

Il secondo comando indica ad Amazon EC2 Auto Scaling di impostare la capacità minima del gruppo su una alle 1:00 UTC del 20 maggio 2021. 

```
aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-event-end \
  --auto-scaling-group-name my-asg --start-time "2021-05-20T01:00:00Z" --minimum-capacity 1
```

Dopo aver aggiunto queste operazioni pianificate al gruppo Auto Scaling, Amazon EC2 Auto Scaling esegue le seguenti operazioni: 
+ Alle 17:00 UTC del 19 maggio 2021, viene eseguita la prima operazione pianificata. Se il gruppo include meno di tre istanze, il gruppo si dimensiona su tre istanze. Durante questo periodo e per le otto ore successive, Amazon EC2 Auto Scaling può continuare a essere aumentato orizzontalmente, se la capacità prevista è superiore alla capacità effettiva o se è in atto una policy di dimensionamento dinamico. 
+ All' 01:00 UTC del 20 maggio 2021, viene eseguita la seconda operazione pianificata. Questo restituisce la capacità minima all'impostazione originale alla fine dell'evento.

### Dimensionamento in base a pianificazioni ricorrenti
<a name="scheduling-recurring-actions"></a>

Per sostituire il forecast per lo stesso periodo di tempo ogni settimana, crea due operazioni pianificate e fornisci la logica di data e ora utilizzando un'espressione cron. 

Il formato dell'espressione cron è costituito da cinque campi separati da spazi: [Minute] [Hour] [Day\$1of\$1Month] [Month\$1of\$1Year] [Day\$1of\$1Week]. I campi possono contenere tutti i valori consentiti, inclusi i caratteri speciali. 

Ad esempio, la seguente espressione cron campi esegue un'operazione ogni giorno alle 06:30. L'asterisco viene utilizzato come carattere jolly per abbinare tutti i valori di un campo.

```
30 6 * * 2
```

# Politica di scalabilità predittiva avanzata che utilizza metriche personalizzate
<a name="aas-predictive-scaling-customized-metric-specification"></a>

In una policy di dimensionamento predittivo, puoi utilizzare parametri predefiniti o personalizzati. Le metriche personalizzate sono utili quando le metriche predefinite non descrivono sufficientemente il carico dell'applicazione.

Quando crei una politica di scalabilità predittiva con metriche personalizzate, puoi specificare altre CloudWatch metriche fornite da oppure puoi specificare metriche che AWS definisci e pubblichi tu stesso. Puoi anche utilizzare la matematica metrica per aggregare e trasformare le metriche esistenti in una nuova serie temporale che non viene tracciata automaticamente. AWS Quando si combinano valori nei dati, ad esempio calcolando nuove somme o medie si parla di *aggregazione*. 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. 

**Topics**
+ [Best practice](#custom-metrics-best-practices)
+ [Prerequisiti](#custom-metrics-prerequisites)
+ [Costruzione di JSON per i parametri personalizzati](construct-json-custom-metrics.md)
+ [Considerazioni sulle metriche personalizzate in una politica di scalabilità predittiva](custom-metrics-troubleshooting.md)

## Best practice
<a name="custom-metrics-best-practices"></a>

Le seguenti best practice consentono di utilizzare i parametri personalizzati in modo più efficace:
+ Per la specifica della metrica di carico, la metrica più utile è una metrica che rappresenta il carico sull'applicazione.
+ Il parametro di dimensionamento deve essere inversamente proporzionale alla capacità. Cioè, se l'obiettivo scalabile aumenta, la metrica di scalabilità dovrebbe diminuire all'incirca della stessa proporzione. Per garantire che il dimensionamento predittivo si comporti come previsto, anche il parametro del carico e il parametro di ridimensionamento devono essere fortemente correlati tra loro. 
+ L'utilizzo di destinazione deve corrispondere al tipo di parametro di dimensionamento. Per una configurazione di policy che utilizza l'utilizzo della CPU, questa è una percentuale di destinazione. Per una configurazione di policy che utilizza la velocità effettiva, ad esempio il numero di richieste o messaggi, si tratta del numero di richieste o messaggi di destinazione per istanza durante un intervallo di un minuto.
+ Se questi suggerimenti non vengono seguiti, i valori futuri previsti della serie temporale probabilmente non saranno corretti. Per verificare che i dati siano corretti, puoi visualizzare i valori previsti. In alternativa, dopo aver creato la politica di scalabilità predittiva, ispeziona `CapacityForecast` gli oggetti `LoadForecast` e gli oggetti restituiti da una chiamata all'API. [GetPredictiveScalingForecast](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_GetPredictiveScalingForecast.html)
+ Ti suggeriamo vivamente di configurare il dimensionamento predittivo in Forecast only (solo Forecast), in modo da poter valutare il Forecast prima che il dimensionamento predittivo inizi attivamente la capacità di dimensionamento.

## Prerequisiti
<a name="custom-metrics-prerequisites"></a>

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 da te, devi prima pubblicarle su. CloudWatch Per ulteriori informazioni, consulta [Pubblicazione di metriche personalizzate](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) nella *Amazon CloudWatch User Guide*. 

Quando pubblichi i tuoi parametri, assicurati di pubblicare i punti dati con una frequenza minima di cinque minuti. Application Auto Scaling recupera i punti dati CloudWatch in 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. 

# Costruzione di JSON per i parametri personalizzati
<a name="construct-json-custom-metrics"></a>

La sezione seguente contiene esempi su come configurare la scalabilità predittiva da cui interrogare i dati CloudWatch per Amazon EC2 Auto Scaling. Esistono due metodi diversi per configurare questa opzione e il metodo scelto influisce sul formato utilizzato per costruire il JSON per la policy di scalabilità predittiva. Quando si utilizza la formula per i parametri, il formato del JSON varia ulteriormente in base alla formula eseguita.

1. Per creare una policy che ottenga i dati direttamente da altre CloudWatch metriche fornite da AWS o da metriche su cui pubblichi, consulta. CloudWatch [Esempio di policy di dimensionamento predittivo con parametri di carico e dimensionamento personalizzati (AWS CLI)](#custom-metrics-ex1)

1. Per creare una policy in grado di interrogare più CloudWatch metriche e utilizzare espressioni matematiche per creare nuove serie temporali basate su tali metriche, consulta. [Utilizzare le espressioni matematiche del parametro](using-math-expression-examples.md)

## Esempio di policy di dimensionamento predittivo con parametri di carico e dimensionamento personalizzati (AWS CLI)
<a name="custom-metrics-ex1"></a>

Per creare una politica di scalabilità predittiva con metriche di carico e scalabilità personalizzate con AWS CLI, memorizza gli argomenti per in un file JSON denominato. `--predictive-scaling-configuration` `config.json`

Inizi ad aggiungere parametri personalizzati sostituendo i valori sostituibili nell'esempio seguente con quelli dei tuoi parametri e del tuo obiettivo di destinazione.

```
{
  "MetricSpecifications": [
    {
      "TargetValue": 50,
      "CustomizedScalingMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "scaling_metric",
            "MetricStat": {
              "Metric": {
                "MetricName": "MyUtilizationMetric",
                "Namespace": "MyNameSpace",
                "Dimensions": [
                  {
                    "Name": "MyOptionalMetricDimensionName",
                    "Value": "MyOptionalMetricDimensionValue"
                  }
                ]
              },
              "Stat": "Average"
            }
          }
        ]
      },
      "CustomizedLoadMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "load_metric",
            "MetricStat": {
              "Metric": {
                "MetricName": "MyLoadMetric",
                "Namespace": "MyNameSpace",
                "Dimensions": [
                  {
                    "Name": "MyOptionalMetricDimensionName",
                    "Value": "MyOptionalMetricDimensionValue"
                  }
                ]
              },
              "Stat": "Sum"
            }
          }
        ]
      }
    }
  ]
}
```

Per ulteriori informazioni, consulta il riferimento [MetricDataQuery](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_MetricDataQuery.html)all'*API Amazon EC2 Auto Scaling*.

**Nota**  
Di seguito sono riportate alcune risorse aggiuntive che possono aiutarti a trovare nomi di metriche, namespace, dimensioni e statistiche relative alle metriche: CloudWatch   
Per informazioni sui parametri disponibili per AWS i servizi, consulta i [AWS servizi che pubblicano CloudWatch metriche](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) nella *Amazon CloudWatch User* Guide.
[Per ottenere il nome esatto della metrica, lo spazio dei nomi e le dimensioni (se applicabili) di una CloudWatch metrica con, consulta list-metrics. AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/list-metrics.html) 

Per creare questo criterio, esegui il [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html)comando utilizzando il file JSON come input, come illustrato nell'esempio seguente.

```
aws autoscaling put-scaling-policy --policy-name my-predictive-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type PredictiveScaling \
  --predictive-scaling-configuration file://config.json
```

In caso di esito positivo, questo comando restituisce l'Amazon Resource Name (ARN) della policy.

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

# Utilizzare le espressioni matematiche del parametro
<a name="using-math-expression-examples"></a>

La sezione seguente fornisce informazioni ed esempi di policy di scalabilità predittiva che mostrano come utilizzare la formula dei parametri nella policy. 

**Topics**
+ [Comprendere la matematica dei parametri](#custom-metrics-metric-math)
+ [Esempio di politica di scalabilità predittiva per Amazon EC2 Auto Scaling che combina parametri utilizzando metric math ()AWS CLI](#custom-metrics-ex2)
+ [Esempio di politica di scalabilità predittiva da utilizzare in uno scenario di distribuzione () blue/green AWS CLI](#custom-metrics-ex3)

## Comprendere la matematica dei parametri
<a name="custom-metrics-metric-math"></a>

Se tutto ciò che vuoi fare è aggregare i dati metrici esistenti, la matematica metrica ti consente di risparmiare lo sforzo e il costo della pubblicazione di un'altra CloudWatch metrica su. CloudWatch Puoi utilizzare qualsiasi metrica AWS fornita e puoi anche utilizzare le metriche che definisci come parte delle tue applicazioni.

Per ulteriori informazioni, consulta [Using metric Math](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html) nella *Amazon CloudWatch User Guide*. 

Se si sceglie di utilizzare un'espressione matematica dei parametri nella policy di dimensionamento predittivo, considerare i seguenti punti:
+ Le operazioni di matematica dei parametri utilizzano i punti dati della combinazione univoca di nome del parametro, namespace e coppie di parametri chiave/valore delle dimensioni. 
+ Puoi utilizzare qualsiasi operatore aritmetico (\$1 - \$1/^), funzione statistica (come AVG o SUM) 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 e `Sum` 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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html) nella *Amazon CloudWatch User Guide*. 
+ Verifica che l'espressione matematica della metrica sia valida utilizzando la CloudWatch console o l'API. CloudWatch [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)

## Esempio di politica di scalabilità predittiva per Amazon EC2 Auto Scaling che combina parametri utilizzando metric math ()AWS CLI
<a name="custom-metrics-ex2"></a>

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 `GroupInServiceInstances`di Amazon EC2 Auto Scaling e un'espressione matematica per calcolare il backlog per istanza del parametro di dimensionamento.

```
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 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": []
}
```

## Esempio di politica di scalabilità predittiva da utilizzare in uno scenario di distribuzione () blue/green AWS CLI
<a name="custom-metrics-ex3"></a>

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 blue/green le implementazioni. 

**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 di Auto Scaling come parte di un' blue/green implementazione, la cronologia delle metriche di ciascun gruppo può essere inclusa automaticamente nella politica di scalabilità predittiva senza che sia necessario modificarne le specifiche metriche. Per ulteriori informazioni, consulta [Utilizzo delle politiche di scalabilità predittiva di EC2 Auto Scaling con implementazioni Blue/Green sul](https://aws.amazon.com/blogs/compute/retaining-metrics-across-blue-green-deployment-for-predictive-scaling/) blog di Compute. AWS 

Di seguito viene illustrato un esempio di policy che mostra come eseguire questa operazione. In questo esempio, la policy utilizza il parametro `CPUUtilization` emesso da Amazon EC2. Utilizza il parametro `GroupInServiceInstances`di Dimensionamento automatico Amazon EC2 e un'espressione matematica per calcolare il valore del parametro di dimensionamento 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 l'ARN della policy.

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-blue-green-predictive-scaling-policy",
  "Alarms": []
}
```

# Considerazioni sulle metriche personalizzate in una politica di scalabilità predittiva
<a name="custom-metrics-troubleshooting"></a>

Se si verifica un problema durante l'utilizzo di parametri personalizzati, si consiglia di procedere come segue:
+ Se viene restituito un messaggio di errore, leggi il messaggio e risolvi il problema segnalato, se possibile. 
+ Se non hai convalidato un'espressione in anticipo, il [ put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/application-autoscaling/put-scaling-policy.html)comando la convalida al momento della creazione della politica di scalabilità. Tuttavia, esiste la possibilità che questo comando non riesca a identificare la causa esatta degli errori rilevati. Per risolvere i problemi, risolvete gli errori che ricevete in risposta a una richiesta al comando. [get-metric-data](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/get-metric-data.html) È 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.

**Limitazioni**  
Si applicano le seguenti restrizioni.
+ 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.