2013-03-06 18 views
5

2時間ごとに実行されるバックアップスクリプトがあります。私はこのスクリプトの成功した実行とCloudWatchのアラームを追跡するためにCloudWatchを使用して、スクリプトが問題に遭遇するたびに通知を受けたいと思います。Strange CloudWatchアラーム動作

スクリプトが成功するたびにバックアップした後、CloudWatchのメトリックにデータポイントを置く:メトリックの統計「和」は中2未満である時はいつでも私がALARM状態になり、アラームを持って

mon-put-data --namespace Backup --metric-name $metric --unit Count --value 1 

6時間

この設定をテストするために、1日後にメトリックにデータを入れることをやめました(つまり、私はmon-put-dataコマンドをコメントアウトしました)。良い、最終的にアラームはALARM状態に行き、私は期待どおり電子メール通知を受け取りました。

問題は、後でアラームがOK状態に戻りますが、メトリックに追加される新しいデータはありません。

2つのトランジション(OK => ALARM、次にALARM => OK)がログに記録され、この問題のログが再現されます。両方とも「期間:21600」(つまり6時間)を示していますが、2番目のものは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" 
} 

、単純な私は理解できない2つ目:

{ 
    "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" 
} 

答えて

5

この動作は、(INSFUCCIENT_DATA状態に移行しませんでしたモニターがあることCloudWatchのはとても「前タイムスタンプ」メトリックのデータポイントと考えているので(6時間アラームの場合)現在の6時間のウィンドウにデータが存在しない場合、前の6時間のウィンドウからデータを取得します(したがって、上記の12時間のタイムスタンプ)。

'アラームの期間を短縮するo 1時間/ 3600秒と評価期間の数を、障害発生時にアラームを鳴らす期間に増やします。そうすれば、期待通りにアラームがINSFUCCIENT_DATAに確実に移行します。

私が欲しいものを達成するためにアラームを設定する方法(つまり、バックアップが作成されていない場合に通知を受け取る)?

アラームが発生する可能性のあるアーキテクチャは、ジョブが成功した場合は1を、失敗した場合は0を発行します。次に、しきい値が<のアラームを3〜3600秒間1作成します。これは、ジョブが失敗している(つまり実行中ですが失敗した)場合にアラームがALARMに入ることを意味します。また、そのアラームでINSFUCCIENT_DATAアクションを設定すると、ジョブがまったく実行されていない場合に通知されます。

希望は意味があります。

+0

興味深い。しかし、私はこの「機能」がどこに書類でもない(それともそれはないのだろうか?また、提案するアーキテクチャーはうまくいっていません。データポイントがない場合に通知されるという考え方は、通知が失敗した場合に警告を発することです(つまり、バックアップを作成するサーバーが死んだとします。問題など)。お返事をありがとうございます!そのことを念頭に置いて、私ができることを見ていきます。 –

+0

メトリックデータポイントがない場合、アラームはALARM状態ではなくINSUFFICIENT_DATA状態に移行します。したがって、ジョブが実行されていない場合に通知を受けたい場合は、INSFUCCIENT_DATAにアクションを指定する必要があります。しきい値を比較するために使用可能なデータポイントがある場合、アラームはALARM状態に遷移するだけです。 – Wal

+0

したがって、ジョブが成功した場合に値1を発行し、ジョブが失敗した場合(ジョブが実行されていても正常に完了していない場合)、そして最後にINSFUCCIENT_DATA状態が発行されている) – Wal

関連する問題