7

2時間ごとに実行されるバックアップスクリプトがあります。CloudWatchを使用して、このスクリプトの正常な実行を追跡し、CloudWatchのアラームを使用して、スクリプトで問題が発生したときに通知を受け取りたいと思います。

スクリプトは、バックアップが成功するたびにCloudWatchメトリクスにデータポイントを配置します。

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

メトリックの統計「合計」が6時間で2未満になると、アラーム状態になるアラームがあります。

この設定をテストするために、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"
}
4

1 に答える 1

5

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

アラームの「忠実度」を高めるには、アラーム期間を 1 時間/3600 秒に減らし、評価期間の数を、失敗時にアラームを鳴らしたい期間に増やします。これにより、期待どおりにアラームが INSFUCCIENT_DATA に確実に移行します。

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

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

それが理にかなっていることを願っています。

于 2013-03-07T17:20:25.567 に答える