Ho uno script di backup che viene eseguito ogni 2 ore. Voglio utilizzare CloudWatch per tenere traccia delle esecuzioni di successo di questo script e degli allarmi di CloudWatch per ricevere notifiche ogni volta che lo script incontra problemi.Strange CloudWatch comportamento allarme
Lo script mette un punto dati su una metrica CloudWatch dopo ogni backup riuscito:
mon-put-data --namespace Backup --metric-name $metric --unit Count --value 1
Ho un allarme che va allo stato allarme ogni volta che la statistica "Somma" sulla metrica è inferiore a 2 in un Periodo di 6 ore.
Per testare questa configurazione, dopo un giorno, ho interrotto l'inserimento dei dati nella metrica (ovvero, ho commentato il comando mon-put-data). Bene, alla fine l'allarme è andato in stato di ALLARME e ho ricevuto una notifica via email, come previsto.
Il problema è che, qualche tempo dopo, l'allarme ritorna allo stato OK, tuttavia non sono stati aggiunti nuovi dati alla metrica!
Le due transizioni (OK => ALARM, quindi ALARM => OK) sono state registrate e riproduco i registri in questa domanda. Si noti che, sebbene entrambi mostrino "periodo: 21600" (ovvero, 6 ore), il secondo mostra un intervallo di 12 ore tra startDate e queryDate; Vedo che questo potrebbe spiegare la transizione, ma non riesco a capire perché Cloud Watch stia considerando un intervallo di 12 ore per calcolare una statistica con un periodo di 6 ore!
Cosa mi manca qui? Come configurare gli allarmi per ottenere ciò che voglio (ad esempio, ricevere una notifica se non vengono eseguiti i backup)?
{
"Timestamp": "2013-03-06T15:12:01.069Z",
"HistoryItemType": "StateUpdate",
"AlarmName": "alarm-backup-svn",
"HistoryData": {
"version": "1.0",
"oldState": {
"stateValue": "OK",
"stateReason": "Threshold Crossed: 1 datapoint (3.0) was not less than the threshold (3.0).",
"stateReasonData": {
"version": "1.0",
"queryDate": "2013-03-05T21:12:44.081+0000",
"startDate": "2013-03-05T15:12:00.000+0000",
"statistic": "Sum",
"period": 21600,
"recentDatapoints": [
3
],
"threshold": 3
}
},
"newState": {
"stateValue": "ALARM",
"stateReason": "Threshold Crossed: 1 datapoint (1.0) was less than the threshold (2.0).",
"stateReasonData": {
"version": "1.0",
"queryDate": "2013-03-06T15:12:01.052+0000",
"startDate": "2013-03-06T09:12:00.000+0000",
"statistic": "Sum",
"period": 21600,
"recentDatapoints": [
1
],
"threshold": 2
}
}
},
"HistorySummary": "Alarm updated from OK to ALARM"
}
La seconda, che ho semplice non riesco a capire:
{
"Timestamp": "2013-03-06T17:46:01.063Z",
"HistoryItemType": "StateUpdate",
"AlarmName": "alarm-backup-svn",
"HistoryData": {
"version": "1.0",
"oldState": {
"stateValue": "ALARM",
"stateReason": "Threshold Crossed: 1 datapoint (1.0) was less than the threshold (2.0).",
"stateReasonData": {
"version": "1.0",
"queryDate": "2013-03-06T15:12:01.052+0000",
"startDate": "2013-03-06T09:12:00.000+0000",
"statistic": "Sum",
"period": 21600,
"recentDatapoints": [
1
],
"threshold": 2
}
},
"newState": {
"stateValue": "OK",
"stateReason": "Threshold Crossed: 1 datapoint (3.0) was not less than the threshold (2.0).",
"stateReasonData": {
"version": "1.0",
"queryDate": "2013-03-06T17:46:01.041+0000",
"startDate": "2013-03-06T05:46:00.000+0000",
"statistic": "Sum",
"period": 21600,
"recentDatapoints": [
3
],
"threshold": 2
}
}
},
"HistorySummary": "Alarm updated from ALARM to OK"
}
Interessante. Ma non mi sento molto a mio agio che questa "caratteristica" non sia documentata da nessuna parte (o lo è? Semplicemente non riesco a trovarla). Inoltre, l'architettura che proponi non suona bene: l'idea di essere avvisati in assenza di punti dati è di avere un allarme nel caso in cui le notifiche falliscano (ad esempio, supponiamo che il server che fa i backup muoia o che ci sia una rete problema, ecc.). Grazie per la risposta! Con questo in mente, vedrò cosa posso fare. –
Quindi, in assenza di punti dati metrici, l'allarme passerà allo stato INSUFFICIENT_DATA, non allo stato di ALLARME. Quindi se vuoi essere avvisato se il tuo lavoro non è in esecuzione ... dovrai specificare un'azione su INSFUCCIENT_DATA. L'allarme passerà allo stato di ALLARME solo se sono disponibili datapoint per confrontare la soglia. – Wal
Da qui il mio suggerimento di pubblicare un valore 1 in caso di successo, 0 in caso di fallimento del lavoro (cioè il lavoro è in esecuzione ma non completo) e infine lasciare che lo stato INSFUCCIENT_DATA gestisca la mancanza di metriche pubblicate (cioè l'host che esegue il lavoro è morto) – Wal