2 시간마다 실행되는 백업 스크립트가 있습니다. 나는이 스크립트의 성공적인 실행을 추적하기 위해 CloudWatch를 사용하고 스크립트가 문제가 발생할 때마다 알림을 받기 위해 CloudWatch의 Alarms를 사용하려고합니다.이상한 CloudWatch 알람 동작
스크립트는 모든 성공적인 백업 후 CloudWatch는 메트릭에 데이터 포인트를두고 :
mon-put-data --namespace Backup --metric-name $metric --unit Count --value 1
나는 메트릭에 대한 통계 "합계"는 이하 2 때마다 경보 상태가되어 알람이 6 시간.
이 설정을 테스트하기 위해 하루가 지나면 메트릭에 데이터를 저장하지 않았습니다 (예 : mon-put-data 명령을 주석 처리했습니다). 좋아, 결국 알람이 ALARM 상태가되어 예상대로 이메일 알림을 받았습니다.
문제는 나중에 알람이 OK 상태로 돌아 오지만 메트릭에 추가되는 새 데이터가 없다는 것입니다.
두 전환 (OK => ALARM, ALARM => OK)이 기록되었으며이 질문에서 로그를 재생산했습니다. 두 항목 모두 "기간 : 21600"(즉, 6 시간)이지만 두 번째 항목은 startDate와 queryDate 사이의 12 시간 간격을 보여줍니다. 이것이 전환을 설명 할 수도 있지만, CloudWatch가 6 시간 동안 통계를 계산하기 위해 12 시간의 시간 범위를 고려하는 이유를 이해할 수 없습니다.
무엇이 여기에 있습니까? 내가 원하는 것을 얻기 위해 알람을 구성하는 방법 (즉, 백업이 만들어지지 않을 경우 알림을 얻는 방법)?
{
"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"
}
흥미 롭습니다. 그러나 나는이 "기능"이 어디서나 문서가 아니라는 것을 매우 편안하게 느끼지 않는다. 또한 제안한 아키텍처는 좋지 않습니다. 데이터가 없을 때 알림을 받는다는 전체적인 생각은 알림이 실패한 경우에 경보를 발생시키는 것입니다 (예 : 백업을 중지시키는 서버가 죽었거나 네트워크가 있다고 가정합니다. 문제 등). 귀하의 회신에 감사드립니다! 이를 염두에두고 내가 할 수있는 것을 볼 것입니다. –
메트릭 데이터 포인트가없는 경우 알람은 ALARM 상태가 아닌 INSUFFICIENT_DATA 상태로 전환됩니다. 따라서 작업이 실행되고 있지 않다는 알림을 받으려면 INSFUCCIENT_DATA에 작업을 지정해야합니다. 임계 값을 비교할 수있는 데이터 포인트가있는 경우에만 알람이 ALARM 상태로 전환됩니다. – Wal
따라서 작업 성공에 대한 가치 1, 작업 실패 (예 : 작업이 실행 중이지만 성공적으로 완료되지 않음)에 값 1을 게시하고 마지막으로 INSFUCCIENT_DATA 상태가 게시되는 메트릭 부족을 처리하도록 제안합니다 (예 : 작업을 실행하는 호스트가 작동하지 않습니다.) – Wal