建立警示以停止、終止、重新啟動或復原 EC2 執行個體 - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立警示以停止、終止、重新啟動或復原 EC2 執行個體

使用 Amazon CloudWatch 警示動作,您可以建立自動停止、終止、重新開機或復原 EC2 執行個體的警示。當執行個體不再需要執行,您可以使用停止或終止動作以協助您節省成本。如果發生系統受損,您可以使用重新啟動和復原動作,自動重新啟動這些執行個體或將它們復原到新的硬體。

在許多情況下,您可能想要自動停止或終止您的執行個體。例如,您可能有專門批次處理薪資作業或科學運算任務的執行個體,它們在執行一段時間後完成工作。不要讓這些執行個體閒置 (及累積費用),您可以停止或終止它們,以協助您節省成本。使用停止和終止警示動作的主要差別在於,如果您後來需要再次執行已停止的執行個體,則可以輕鬆地重新啟動它。您也可以保留相同的執行個體 ID 和根磁碟區。不過,您不能重新啟動已終止的執行個體。相反地,您必須啟動新的執行個體。

除了包含 "InstanceId=" 維度的任何自訂指標之外,您還可以將停止、終止或重新啟動動作新增到 Amazon EC2 每個執行個體指標上設定的任何警示,包括 Amazon 提供的基本和詳細監控指標 CloudWatch (在 AWS/EC2 命名空間中),只要該 InstanceId 值參考有效的執行中 Amazon EC2 執行個體即可。您還可將復原動作新增至設定於任何 Amazon EC2 每執行個體指標上的警示,StatusCheckFailed_Instance 除外。

重要

如果缺少指標資料點,Amazon EC2 指標上設定的警示可以暫時進入不足的狀態。這種情況很少見,但可能會在指標報告中斷時發生,即使 Amazon EC2 執行個體正常運作良好。對於設定為停止、終止、重新開機或復原動作的 Amazon EC2 指標上的警示,我們建議您設定這些警示將遺失的資料視為missing,並讓這些警示僅在處於 ALARM 狀態時觸發。

如需有關如何設定為針對已設 CloudWatch 定警示的遺失量度採取行動的詳細資訊,請參閱設定 CloudWatch 警示如何處理遺失的資料

若要設定可以重新啟動、停止或終止執行個體的 CloudWatch 警示動作,您必須使用服務連結的 IAM 角色AWSServiceRoleForCloudWatchEvents。 AWSServiceRoleForCloudWatchEvents IAM 角色可 AWS 讓您代表執行警示動作。

若要為 CloudWatch 事件建立服務連結角色,請使用下列命令:

aws iam create-service-linked-role --aws-service-name events.amazonaws.com
主控台支援

您可以使用 CloudWatch 主控台或 Amazon EC2 主控台建立警示。本文件中的程序使用主 CloudWatch 控台。如需使用 Amazon EC2 主控台的程序,請參閱 Amazon EC2 使用者指南中的建立停止、終止、重新開機或復原執行個體的警示

許可

如果您使用 AWS Identity and Access Management (IAM) 帳戶建立或修改執行 EC2 動作或 Systems Manager OpsItem 動作的警示,您必須擁有該iam:CreateServiceLinkedRole權限。

向 Amazon CloudWatch 警報添加停止操作

您可以建立警示,在符合特定閾值時停止 Amazon EC2 執行個體。例如,您可以執行開發或測試執行個體,並偶爾忘記關閉它們。您可以建立警示,在平均 CPU 使用率百分比已低於 10% 達 24 小時時觸發,以通知其為閒置且不再使用。您可以調整閾值、持續時間和期間以符合您的需求,而且您可以新增 SNS 通知,當觸發警示時,您將會收到電子郵件。

使用 Amazon Elastic Block Store 磁碟區作為根裝置的 Amazon EC2 執行個體可以停止或終止,而使用執行個體存放區作為根裝置的執行個體只能終止。

使用 Amazon CloudWatch 主控台建立警示以停止閒置執行個體
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 在導覽窗格中,選擇 Alarms (警示)、All alarms (所有警示)。

  3. 選擇 Create alarm (建立警示)。

  4. 選擇 Select Metric (選取指標)。

  5. AWS 命名空間中,選擇 EC2

  6. 請執行下列操作:

    1. 選擇 Per-Instance Metrics (每個執行個體指標)。

    2. 勾選正確執行個體的資料列中的核取方塊以及 CPUUtilization 指標。

    3. 選擇 Graphed metrics (圖表化指標) 標籤。

    4. 在統計資料中選擇 Average (平均)

    5. 選擇期間 (例如,1 Hour)。

    6. 選擇選取指標

  7. Define Alarm (定義警示) 步驟,執行下列動作:

    1. Conditions (條件) 下選擇 Static (靜態)

    2. Whenever CPUUtilization is (每當 CPU 使用率為) 下方,選擇 Lower (較低)。

    3. 針對 than (比較),輸入 10

    4. 選擇下一步

    5. Notification (通知) 之下的 Send notification to (傳送通知至) 中,選擇現有的 SNS 主題或建立新的主題。

      若要建立 SNS 主題,請選擇 New list (新增清單)。在 Send notification to (傳送通知至) 中,輸入 SNS 主題的名稱 (例如,Stop_EC2_Instance)。在 Email list (電子郵件清單) 中輸入以逗號分隔的電子郵件地址清單,當警示變更為 ALARM 狀態時,這些電子郵件地址將會收到通知。每個電子郵件地址都會收到主題訂閱確認電子郵件。您必須確認訂閱,通知才會傳送到您的電子郵件地址。

    6. 選擇 Add EC2 Action (新增 EC2 動作)。

    7. 針對 Alarm state trigger (警示狀態觸發),選擇 In Alarm (警示中)。針對 Take the action (採取動作),選擇 Stop this instance (停止此執行個體)。

    8. 選擇下一步

    9. 輸入警示的名稱與說明。名稱只能包含 ASCII 字元。然後選擇下一步

    10. Preview and create (預覽及建立) 下,請確認資訊和條件都是您希望的內容,然後選擇 Create alarm (建立警示)

向 Amazon CloudWatch 警報添加終止動作

您可以建立警示,在符合特定閾值時自動終止 EC2 執行個體 (前提是執行個體未啟用終止保護)。例如,您可能想要在執行個體完成作業時予以終止,而且不再需要該執行個體。如果您之後還要使用該執行個體,您應該停止而非終止執行個體。如需啟用和停用執行個體終止保護的相關資訊,請參閱 Amazon EC2 使用者指南中的為執行個體啟用終止保護。

若要使用 Amazon CloudWatch 主控台建立警示以終止閒置執行個體
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 在導覽窗格中,選擇 Alarms (警示)、Create Alarm (建立警示)。

  3. Select Metric (選取指標) 步驟,執行下列動作:

    1. EC2 Metrics (EC2 指標) 之下選擇 Per-Instance Metrics (每個執行個體指標)

    2. 選取該執行個體的資料列以及 CPUUtilization 指標。

    3. 在統計資料中選擇 Average (平均)

    4. 選擇期間 (例如,1 Hour)。

    5. 選擇下一步

  4. Define Alarm (定義警示) 步驟,執行下列動作:

    1. Alarm Threshold (警示閾值) 之下輸入唯一的名稱 (例如,終止 EC2 執行個體),以及警示的描述 (例如,當 CPU 閒置太久時終止 EC2 執行個體)。警示名稱只能包含 ASCII 字元。

    2. Whenever (無論何時) 之下的 is (是) 中,選擇 < 並輸入 10。在 for (持續) 中,輸入 24 個連續期間。

      以圖像方式呈現的閥值會顯示在 Alarm Preview (警示預覽) 下方。

    3. Notification (通知) 之下的 Send notification to (傳送通知至) 中,選擇現有的 SNS 主題或建立新的主題。

      若要建立 SNS 主題,請選擇 New list (新增清單)。在 Send notification to (傳送通知至) 中,輸入 SNS 主題的名稱 (例如,Terminate_EC2_Instance)。在 Email list (電子郵件清單) 中輸入以逗號分隔的電子郵件地址清單,當警示變更為 ALARM 狀態時,這些電子郵件地址將會收到通知。每個電子郵件地址都會收到主題訂閱確認電子郵件。您必須確認訂閱,通知才會傳送到您的電子郵件地址。

    4. 選擇 EC2 Action (EC2 動作)

    5. Whenever this alarm (每當此警示) 中選擇 State is ALARM (狀態為警示)。在 Take this action (採取此動作) 中選擇 Terminate this instance (終止此執行個體)

    6. 選擇建立警示

將重新開機動作新增至 Amazon CloudWatch 警示

您可以建立 Amazon CloudWatch 警示來監控 Amazon EC2 執行個體並自動重新啟動執行個體。重新啟動警示動作建議用於執行個體運作狀態檢查失敗 (相對的,復原警示動作則適用於系統運作狀態檢查失敗)。重新啟動執行個體等同於重新啟動作業系統。在大多數情況下,將執行個體重新開機只需要幾分鐘的時間。當您重新啟動執行個體時,它會維持在相同的實體主機上,所以您的執行個體會保有其公有 DNS 名稱、私有 IP 地址和執行個體存放區磁碟區上的任何資料。

不同於停用和重新啟動您的執行個體,重新啟動執行個體不會啟動新執行個體計費小時。如需有關重新啟動執行個體的詳細資訊,請參閱 Amazon EC2 使用者指南中的重新啟動執行個體。

重要

為了避免重新啟動和復原動作之間的競爭情況,請避免為重新啟動警示和復原警示設定相同的評估期間。我們建議您將重新開機警示設定為三個各一分鐘的評估期間。

若要使用 Amazon CloudWatch 主控台建立警示以重新啟動執行個體
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 在導覽窗格中,選擇 Alarms (警示)、Create Alarm (建立警示)。

  3. Select Metric (選取指標) 步驟,執行下列動作:

    1. EC2 Metrics (EC2 指標) 之下選擇 Per-Instance Metrics (每個執行個體指標)

    2. 選取含有執行處理和 StatusCheckFailed_Instance 測量結果的資料列。

    3. 在統計資料中選擇 Minimum (最小值)

    4. 選擇期間 (例如,1 Minute)。

    5. 選擇下一步

  4. Define Alarm (定義警示) 步驟,執行下列動作:

    1. Alarm Threshold (警示閾值) 之下輸入唯一的名稱 (例如,重新啟動 EC2 執行個體),以及警示的描述 (例如,當運作狀態檢查失敗時重新啟動 EC2 執行個體)。警示名稱只能包含 ASCII 字元。

    2. Whenever (無論何時) 之下的 is (是) 中,選擇 > 並輸入 0。在 for (持續) 中,輸入 3 個連續期間。

      以圖像方式呈現的閥值會顯示在 Alarm Preview (警示預覽) 下方。

    3. Notification (通知) 之下的 Send notification to (傳送通知至) 中,選擇現有的 SNS 主題或建立新的主題。

      若要建立 SNS 主題,請選擇 New list (新增清單)。在 Send notification to (傳送通知至) 中,輸入 SNS 主題的名稱 (例如,Reboot_EC2_Instance)。在 Email list (電子郵件清單) 中輸入以逗號分隔的電子郵件地址清單,當警示變更為 ALARM 狀態時,這些電子郵件地址將會收到通知。每個電子郵件地址都會收到主題訂閱確認電子郵件。您必須確認訂閱,通知才會傳送到您的電子郵件地址。

    4. 選擇 EC2 Action (EC2 動作)

    5. Whenever this alarm (每當此警示) 中選擇 State is ALARM (狀態為警示)。在 Take this action (採取此動作) 中選擇 Reboot this instance (重新啟動此執行個體)

    6. 選擇建立警示

將恢復動作添加到 Amazon CloudWatch 警報

您可以建立 Amazon CloudWatch 警示來監控 Amazon EC2 執行個體,並在執行個體因基礎硬體故障或需要 AWS 參與修復的問題而受損時,自動復原執行個體。已終止的執行個體無法復原。復原後的執行個體與原始執行個體相同,包括執行個體 ID、私有 IP 地址、彈性 IP 地址及所有執行個體中繼資料。

StatusCheckFailed_System 警示觸發且復原動作啟動時,您將收到 Amazon SNS 主題通知,這是您在建立警示時選擇並與復原動作關聯的通知。在執行個體復原期間,執行個體會在重新啟動期間遷移,記憶體內的任何資料都將遺失。當程序完成時,會將資訊發佈到您為此警示設定的 SNS 主題。訂閱此 SNS 主題的所有使用者都將會收到電子郵件通知,其中包含復原嘗試的狀態和進一步的說明。您將會發現執行個體在已復原的執行個體上重新啟動。

復原動作只能用於 StatusCheckFailed_System,而非 StatusCheckFailed_Instance

導致系統狀態檢查失敗的問題範例包括:

  • 網路連線中斷

  • 系統電力中斷

  • 實體主機的軟體問題

  • 實體主機上會影響網路連線的硬體問題

僅某些執行個體類型上支援復原動作。如需有關受支援的執行個體類型和其他需求的詳細資訊,請參閱復原您的執行個體要求

重要

為了避免重新啟動和復原動作之間的競爭情況,請避免為重新啟動警示和復原警示設定相同的評估期間。我們建議您將復原警示設定為兩個各一分鐘的評估期間,將重新啟動警示設定為三個各一分鐘的評估期間。

使用 Amazon CloudWatch 主控台建立警示以復原執行個體
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 在導覽窗格中,選擇 Alarms (警示)、Create Alarm (建立警示)。

  3. Select Metric (選取指標) 步驟,執行下列動作:

    1. EC2 Metrics (EC2 指標) 之下選擇 Per-Instance Metrics (每個執行個體指標)

    2. 選取含有執行處理和 StatusCheckFailed_System 測量結果的資料列。

    3. 在統計資料中選擇 Minimum (最小值)

    4. 選擇期間 (例如,1 Minute)。

      重要

      為了避免重新啟動和復原動作之間的競爭情況,請避免為重新啟動警示和復原警示設定相同的評估期間。我們建議您將復原警示設定為兩個各一分鐘的評估期間。

    5. 選擇下一步

  4. Define Alarm (定義警示) 步驟,執行下列動作:

    1. Alarm Threshold (警示閾值) 之下輸入唯一的名稱 (例如,復原 EC2 執行個體),以及警示的描述 (例如,當運作狀態檢查失敗時復原 EC2 執行個體)。警示名稱只能包含 ASCII 字元。

    2. Whenever (無論何時) 之下的 is (是) 中,選擇 > 並輸入 0。在 for (持續) 中,輸入 2 個連續期間。

    3. Notification (通知) 之下的 Send notification to (傳送通知至) 中,選擇現有的 SNS 主題或建立新的主題。

      若要建立 SNS 主題,請選擇 New list (新增清單)。在 Send notification to (傳送通知至) 中,輸入 SNS 主題的名稱 (例如,Recover_EC2_Instance)。在 Email list (電子郵件清單) 中輸入以逗號分隔的電子郵件地址清單,當警示變更為 ALARM 狀態時,這些電子郵件地址將會收到通知。每個電子郵件地址都會收到主題訂閱確認電子郵件。您必須確認訂閱,通知才會傳送到您的電子郵件地址。

    4. 選擇 EC2 Action (EC2 動作)

    5. Whenever this alarm (每當此警示) 中選擇 State is ALARM (狀態為警示)。在 Take this action (採取此動作) 中選擇 Recover this instance (復原此執行個體)

    6. 選擇建立警示

檢視已觸發警示和動作的歷史記錄

您可以在 Amazon CloudWatch 主控台中檢視警示和動作歷史記錄。Amazon CloudWatch 保留了最近 30 天的警報和行動歷史記錄。

檢視已觸發警示和動作的歷史記錄
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 在導覽窗格中,選擇 Alarms (警示),並選取警示。

  3. 若要查看隨著時間轉換的最新狀態及指標值,請選擇 Details (詳細資訊)

  4. 若要查看最新的歷史記錄項目,請選擇 History (歷史記錄)