如何找出是什麼停止了我的 AWS OpsWorks Stacks 執行個體?

2 分的閱讀內容
0

由 AWS OpsWorks Stacks 管理的其中一個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體停止運作。如何找出是什麼停止了執行個體?

簡短描述

有兩種情況會使 OpsWorks Stacks 執行個體停止運作:

**重要事項:**OpsWorks Stacks 無法識別在 Amazon EC2 主控台中執行的啟動、停止或重新啟動作業。如需詳細資訊,請參閱手動啟動、停止和重新啟動 24/7 執行個體

若要確認是什麼停止了 OpsWorks Stacks 執行個體,您可以執行下列其中一項操作:

AWS CloudTrail 中檢視同時進行的 Amazon EC2 StopInstances API 呼叫和 OpsWorks Stacks StopInstance API 呼叫

如果同時記錄兩個 API 呼叫,則是 OpsWorks Stacks 手動停止了執行個體。如果僅記錄一次 Amazon EC2 StopInstances API 呼叫,則是執行個體進行了自動修復。

檢視執行個體的代理日誌,以查看 OpsWorks 代理是否在執行個體停止時仍然傳送 keepalive 訊號

如果在執行個體停止時記錄了成功的 keepalive 訊號,則是 OpsWorks Stacks 手動停止了執行個體。如果執行個體停止時沒有記錄 keepalive 訊號或記錄了失敗的訊號嘗試,則是執行個體進行了自動修復。

如果是執行個體進行了自動修復,請參閱如何阻止 AWS OpsWorks Stacks 意外重新啟動正常運作的執行個體? 如果您的執行個體是被手動停止,請檢視作出 StopInstance API 呼叫的 AWS Identity and Access Management (IAM) 角色。然後,判斷誰可以存取該角色,並找出他們停止執行個體的原因。

解決方案

檢視執行個體 CloudTrail 日誌中的 Amazon EC2 StopInstances API 呼叫

1.    開啟 CloudTrail 主控台

**重要事項:**確保選取的 AWS 區域 與執行個體所在的區域相同。

2.    在左側的導覽窗格中選擇 Event history (事件歷程記錄)。

3.    在 Event history (事件歷程記錄) 頁面的左上方選擇下拉式篩選條件清單。然後,選擇 Resource name (資源名稱)。

4.    在下拉式篩選條件清單右側的搜尋文字方塊中,輸入您的 Amazon EC2 執行個體 ID。螢幕會顯示與執行個體相關聯的所有事件結果。

5.    在 Event name (事件名稱) 欄位中找出 StopInstances

6.    在 StopInstances 事件列的 Event time (事件時間) 欄位中,記下 API 呼叫的時間戳記。當您檢視執行個體 CloudTrail 日誌的 OpsWorks Stacks StopInstance API 呼叫時,您將使用時間戳記作為參考。

7.    在 Event name (事件名稱) 欄位中選擇事件名稱 (StopInstances) ,以打開事件記錄。

8.    在 Event record (事件記錄) 窗格找出 "invokedBy" 數值。如果是 OpsWorks Stacks 停止了執行個體 (無論是手動或透過自動修復),則 Amazon EC2 StopInstances API 的回應會顯示下列輸出:

"invokedBy": "opsworks.amazonaws.com"

**注意:**Event record (事件記錄) 不會顯示執行個體是否進行了自動修復。

檢視執行個體 CloudTrail 日誌中的 OpsWorks Stacks StopInstance API 呼叫

1.    開啟 CloudTrail 主控台

**重要事項:**確保選取的 AWS 區域OpsWorks Stacks API 端點 所在的區域相同。

2.    在左側的導覽窗格中選擇 Event history (事件歷程記錄)。

3.    在 Event history (事件歷程記錄) 頁面的左上方選擇下拉式篩選條件清單。然後,選擇 Resource name (資源名稱)。

4.    在下拉式篩選條件清單右側的搜尋文字方塊中,輸入您的 OpsWorks Stacks 執行個體 ID。螢幕會顯示與執行個體相關聯的所有事件結果。

5.    在Event name (事件名稱) 欄位中找出 StopInstance

6.    在 StopInstance 事件列的 Event time (事件時間) 欄位中,確認事件的時間戳記是否與 Amazon EC2 StopInstances 事件的時間戳記相同。

如果 StopInstance API 呼叫的記錄時間與 StopInstances API 呼叫相同,則是 OpsWorks Stacks 手動停止了執行個體。

如果在 StopInstance API 呼叫的記錄時間沒有記錄 StopInstances API 呼叫,則是執行實體進行了自動修復。

(選用) 檢視執行個體的代理日誌,以查看 OpsWorks 代理是否在執行個體停止時仍然傳送 keepalive 訊號

使用 SSH (Secure Shell) 連線到您的 Linux 執行個體,或使用 Windows 遠端桌面通訊協定 (RDP) 連線到您的 Windows 執行個體。然後,檢查執行個體 OpsWorks 代理日誌opsworks-agent.keep_alive.log 日誌檔案。

如果在執行個體停止時記錄了成功的 keepalive 訊號,則是 OpsWorks Stacks 手動停止了執行個體。如果執行個體停止時沒有記錄 keepalive 訊號或記錄了失敗的訊號嘗試,則是執行個體進行了自動修復。

相關資訊

如何在 Amazon CloudWatch Events 中設定 AWS OpsWorks Stacks 自動修復通知

如何阻止 AWS OpsWorks Stacks 意外重新啟動正常運作的執行個體?

當我停止處於 "stop_failed" 狀態的 AWS OpsWorks Stacks 執行個體時,如何對「內部錯誤」訊息進行疑難排解?


AWS 官方
AWS 官方已更新 3 年前