我有一個每2小時運行一次的備份腳本。我希望使用CloudWatch跟蹤此腳本和CloudWatch的警報的成功執行情況,以便在腳本遇到問題時得到通知。奇怪的CloudWatch警報行爲
腳本把一個數據點上的CloudWatch指標的所有備份成功後:
mon-put-data --namespace Backup --metric-name $metric --unit Count --value 1
我有去報警狀態時的指標統計「總和」小於2的警報6小時。
爲了測試這個設置,在一天之後,我停止了將數據放入度量標準(即,我註釋掉了mon-put-data命令)。好,最終警報進入警報狀態,我收到了電子郵件通知,正如預期的那樣。
問題在於,一段時間後,警報回到OK狀態,但是沒有新數據被添加到指標中!
這兩個轉換(OK => ALARM,然後是ALARM => OK)已經記錄下來,我在這個問題中重現了日誌。請注意,儘管兩者都顯示「period:21600」(即6h),但第二個顯示startDate和queryDate之間的12小時時間跨度;我看到這可能解釋了過渡,但我不明白爲什麼CloudWatch正在考慮用12小時的時間計算6小時的統計量!
我在這裏錯過了什麼?如何配置鬧鐘以實現我想要的功能(例如,如果備份沒有進行,會得到通知)?
{
"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"
}
第二個,我簡單的無法理解:
{
"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"
}
有趣。但是我不覺得這個「功能」不是文檔的任何地方(或者是它,我根本無法找到它)。另外,您提出的架構聽起來不太好:在沒有數據點的情況下收到通知的整個想法是在通知失敗的情況下發出警報(例如,假設導致備份的服務器死亡,或者存在網絡問題等)。感謝您的答覆!考慮到這一點,我會看看我能做些什麼。 – 2013-03-07 18:09:31
因此,在沒有度量數據點的情況下,警報將轉換爲INSUFFICIENT_DATA狀態,而不是ALARM狀態。因此,如果您希望在您的工作未運行時收到通知..您需要在INSFUCCIENT_DATA上指定一項操作。如果有數據點可用於比較閾值,警報將只轉換到ALARM狀態。 – Wal 2013-03-07 23:02:48
因此,我建議發佈工作成功時的值爲1,工作失敗時發佈值爲0(即作業正在運行但未成功完成),並最終讓INSFUCCIENT_DATA狀態處理缺少發佈的度量標準(即,運行作業的主機已經死亡) – Wal 2013-03-07 23:05:39