Perché la modifica dello stato del mio allarme in CloudWatch non richiama la mia policy Amazon EC2 Auto Scaling?

6 minuti di lettura
0

Il mio allarme Amazon CloudWatch è configurato per richiamare la mia policy di dimensionamento automatico Amazon Elastic Compute Cloud (Amazon EC2), ma non funziona.

Breve descrizione

Quando un allarme CloudWatch passa a un nuovo stato di allarme, richiama tutte le azioni configurate per tale stato di allarme. Amazon EC2 Auto Scaling utilizza il periodo di tempo configurato nell'allarme per determinare se il relativo stato di allarme deve cambiare. Tuttavia, un allarme richiama un'azione di dimensionamento automatico una volta al minuto quando l'allarme resta in un nuovo stato, indipendentemente dal periodo di tempo configurato.

I motivi più comuni per cui una modifica dello stato dell’allarme di CloudWatch non attiva una policy di Amazon EC2 Auto Scaling sono i seguenti:

  • L'azione di dimensionamento automatico non è impostata per l'allarme CloudWatch.
  • La policy di dimensionamento nel gruppo Auto Scaling di Amazon EC2 non è impostata. Ciò impedisce la valutazione del gruppo Auto Scaling.
  • Il gruppo Auto Scaling ha policy di dimensionamento semplici o per fasi che sono in conflitto. Ciò impedisce l'avvio di alcune policy.
  • Il gruppo Auto Scaling presenta un hook del ciclo di vita incompleto. Ciò impedisce l'applicazione di tutte le policy di dimensionamento semplici. Un'istanza in sospeso causa anche ritardi nelle policy di scalabilità del tracciamento graduale e mirato. Questo perché il dimensionamento automatico non calcola l'istanza in relazione alla capacità del gruppo fino allo scadere del tempo dell’hook del ciclo di vita e del tempo di riscaldamento (per aumento orizzontale). L'istanza viene conteggiata ai fini della capacità del gruppo (per riduzione orizzontale) per evitare un eccessivo dimensionamento.
  • L'hook del ciclo di vita termina allo scadere del tempo (timeout) o quando si chiama l'operazione CompleteLifecycleAction o l'interfaccia della linea di comando AWS (AWS CLI).

Risoluzione

Prima di iniziare, verifica che l'allarme CloudWatch sia nello stato ALARM. Se la configurazione di un allarme non corrisponde alla soglia del parametro che sta monitorando, l'allarme potrebbe non passare allo stato ALARM. Se un allarme non cambia stato, non richiama le policy di dimensionamento automatico. Per ulteriori informazioni su come vengono valutati gli allarmi di CloudWatch, consulta Evaluating an alarm.

Verifica che l’allarme CloudWatch passi allo statoALARM, quando previsto, controllando il valore di soglia dell'allarme. Aumenta o diminuisci la soglia, in modo che corrisponda al valore previsto. Inoltre, controlla il periodo dell’allarme e il periodo di valutazione. Potrebbe essere necessario modificare il periodo dell’allarme e il periodo di valutazione per potere richiamare la policy di dimensionamento automatico come previsto. Per ulteriori informazioni sulla verifica delle azioni di allarme, consulta Come posso essere sicuro che gli allarmi di CloudWatch attivino le azioni?

Importante: quando crei o modifichi gli allarmi, tieni presente i seguenti punti:

  • Verifica di non avere processi di dimensionamento in sospeso per il gruppo Auto Scaling. Se i processi di dimensionamento sono sospesi, riprendili.
  • Non creare, modificare o eliminare mai gli allarmi associati alle policy di dimensionamento del tracciamento degli obiettivi. La modifica di questi allarmi creati automaticamente potrebbe causare effetti indesiderati. La soglia di questi allarmi viene determinata automaticamente, in base al valore obiettivo impostato nella politica di scalabilità.

Verifica se le azioni di dimensionamento automatico sono consentite per l'allarme CloudWatch

Perché un allarme CloudWatch richiami una policy di dimensionamento automatico, attiva il parametro ActionsEnabled nella configurazione dell'allarme. Verifica che il parametro actionsEnabled sia impostato su true nella configurazione dell'allarme.

Nota: se crei o aggiorni l’allarme utilizzando la console CloudWatch, il parametro ActionsEnabled è impostato su true per l’impostazione predefinita.

Per verificare e consentire le azioni di allarme utilizzando l'interfaccia AWS CLI, completa i seguenti passaggi:

  1. Controlla la tua configurazione con il comando describe-alarms.

    aws cloudwatch describe-alarms --alarm-names "myalarm" --query 'MetricAlarms[].ActionsEnabled'

    Nota: assicurati di sostituire myalarm con l'ID del tuo allarme.

  2. Rivedi l'output. Se il parametro ActionsEnabled non è impostato su true, attiva le azioni dell’allarme con il comando enable-alarm-actions.

    aws cloudwatch enable-alarm-actions --alarm-names myalarm

Nota: se visualizzi dei messaggi di errore quando esegui i comandi dell'interfaccia AWS CLI, consulta la sezione Troubleshoot AWS CLI errors. Verifica inoltre di utilizzare la versione più recente di AWS CLI.

Per controllare e attivare le azioni dell’allarme con l'API CloudWatch, completa i seguenti passaggi:

  1. Chiama l'operazione DescribeAlarms per verificare la configurazione corrente.
  2. Se le azioni non sono consentite per l'allarme, chiama l'operazione EnableAlarmActions per attivare le azioni.

Verifica le policy di dimensionamento semplici e per fasi per il tuo gruppo Auto Scaling

Per verificare le policy di dimensionamento del tuo gruppo nella console Amazon EC2, completa i seguenti passaggi:

  1. Apri la console Amazon EC2.
  2. Nel riquadro di navigazione, in Auto Scaling, scegli Gruppi Auto Scaling.
  3. Nel riquadro dei contenuti, seleziona il tuo gruppo Auto Scaling.
  4. Scegli la scheda Dimensionamento automatico e quindi prendi nota del Tipo di policy.

Per verificare le politiche di scalabilità con l'AWS CLI, esegui il comando describe-policies con il parametro --policy-types. Per verificare le policy di dimensionamento con un'API AWS, chiama l'operazione DescribePolicies con il parametro PolicyTypes. L'output elenca tutti i tipi di policy.

Se hai in vigore una semplice policy di dimensionamento, qualsiasi altra policy di dimensionamento semplice non viene attivata, finché non vengono soddisfatte le seguenti condizioni:

  • La policy di dimensionamento semplice attiva è completa.
  • Il periodo di raffreddamento per la policy di dimensionamento automatico è scaduto. Una policy di dimensionamento semplice rispetta il tempo di raffreddamento predefinito o specificato della policy di dimensionamento automatico.

Nota: l'esecuzione di una policy di dimensionamento semplice non blocca completamente le policy di dimensionamento per fasi o con tracciamento degli obiettivi. Assicurati che policy contraddittorie non vengano applicate contemporaneamente.

Verifica la presenza di hook del ciclo di vita di dimensionamento automatico nella policy di dimensionamento automatico

Le attività di dimensionamento di una policy di dimensionamento semplice si interrompono quando è in esecuzione un hook del ciclo di vita di dimensionamento. Tuttavia, una policy di dimensionamento per fasi viene comunque eseguita se è in esecuzione un hook del ciclo di vita.

Verifica che tutti gli hook del ciclo di vita terminino con un risultato CONTINUE o ABANDON allo scadere del timeout globale o del timeout heartbeat.

Per verificare le operazioni relative all’hook del ciclo di vita nella console Amazon EC2, completa i seguenti passaggi:

  1. Apri la console Amazon EC2.
  2. Nel riquadro di navigazione, in Auto Scaling, scegli Gruppi Auto Scaling.
  3. Nel riquadro dei contenuti, seleziona il tuo gruppo Auto Scaling.
  4. Scegli la scheda Attività, quindi scorri fino alla sezione Cronologia.
  5. Esamina l'attività per verificare eventuali operazioni dell’hook del ciclo di vita in corso.

Per i passaggi necessari per completare un hook del ciclo di vita, consulta Complete a lifecycle action.

Informazioni correlate

Come posso risolvere i problemi di scalabilità con il mio gruppo di dimensionamento automatico Amazon EC2?

Troubleshoot Amazon EC2 Auto Scaling