CloudWatch 解決方案:Amazon EC2 運作狀態 - Amazon CloudWatch

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

CloudWatch 解決方案:Amazon EC2 運作狀態

此解決方案可協助您透過 CloudWatch 代理程式,為在 EC2 執行個體上執行的工作負載設定開箱即用的指標收集功能。除此之外,還可協助您設定預先設定的 CloudWatch 儀表板。

要求

此解決方案適用於下列情況:

優勢

此解決方案透過 CloudWatch 代理程式實現 EC2 伺服器監控,在標準 EC2 命名空間指標之外,針對下列使用案例提供額外的系統層級指標:

  • 偵測 CPU 效能問題和資源限制。

  • 監控 EC2 執行個體中不同磁碟的磁碟使用率和儲存容量。

  • 追蹤記憶體使用模式及潛在的記憶體洩漏問題。

  • 分析 I/O 操作及其對整體效能的影響。

  • 觀測網路流量模式和潛在異常。

以下是此解決方案的主要優勢:

  • 自動收集 EC2 執行個體的指標,消除手動檢測需求。

  • 提供預先設定的整合式 CloudWatch 儀表板,專門用於監控 EC2 執行個體指標。儀表板將自動處理透過此解決方案設定之新 EC2 執行個體產生的指標,即使您第一次建立儀表板時這些指標不存在。它還允許您觀測透過 Auto Scaling 群組管理的 EC2 執行個體。

下圖是此解決方案之儀表板的範例。

EC2 Health 儀表板範例

成本

此解決方案會在您的帳戶中建立並使用資源。您需要支付標準用量的費用,包括下列項目:

  • CloudWatch 代理程式收集的所有指標以自訂指標計費。此解決方案使用的指標數目取決於 EC2 主機的數目。

    CloudWatch 代理程式指標的總數取決於磁碟組態。除磁碟與磁碟輸入輸出指標外,此解決方案發布六項指標。磁碟指標 (disk_used_percentdisk_inodes_free) 的數目取決於 device/fstype/path 維度的計數。磁碟指標 (diskio_io_time) 取決於 name 維度的計數。舉例來說,根據 EC2 主控台的經驗,單一採用預設設定的 t2.micro 總計會產生 22 個 CloudWatch 代理程式指標 (4 個 CPU 指標、12 個磁碟指標、4 個磁碟輸入輸出指標、1 個記憶體指標及 1 個交換記憶體指標)。AWS/EC2 等售賣指標是免費提供的。

  • 一個自訂儀表板。

  • CloudWatch 代理程式請求的 API 操作,用於發布指標。在此解決方案的預設組態下,CloudWatch 代理程式每分鐘會呼叫 PutMetricData 一次。這表示在一個 30 天的月份,針對每個 EC2 主機,系統將呼叫 PutMetricData API 30*24*60=43,200 次。

如需 CloudWatch 定價的詳細資訊,請參閱 Amazon CloudWatch 定價

定價計算器可協助您估算使用此解決方案的每月大致費用。

使用定價計算器來估算解決方案的每月費用
  1. 開啟 Amazon CloudWatch 定價計算器

  2. 指標區段中,對於指標數目,輸入 (6 + total count of disk and diskio metrics per EC2 host as described above) * number of EC2 instances configured for this solution

  3. API 區段中,對於 API 請求數目,輸入 43200 * number of EC2 instances configured for this solution

  4. 依預設,解決方案每分鐘會為每個 EC2 主機執行 PutMetricData 操作一次。

  5. 儀表板和警示區段中,對於儀表板數目,輸入 1

  6. 可以在定價計算器底部查看每月預估費用。

此解決方案的 CloudWatch 代理程式組態

CloudWatch 代理程式是在您的伺服器和容器化環境中持續自主執行的軟體。它從您的基礎結構和應用程式收集指標、日誌和追蹤,並將其傳送到 CloudWatch 和 X-Ray。

如需 CloudWatch 代理程式的詳細資訊,請參閱使用 CloudWatch 代理程式收集指標和日誌

此解決方案中的代理程式組態會收集一組指標,協助您開始監控和觀測 EC2 執行個體。CloudWatch 代理程式可以設定為,收集的 EC2 指標數多於儀表板預設顯示的指標數。如需 Amazon EC2 指標的清單,請參閱 CloudWatch 代理程式在 Linux 和 macOS 執行個體上收集的指標。如需在 Windows 執行個體上收集之指標的相關資訊,請參閱 CloudWatch 代理程式在 Windows Server 執行個體上收集的指標

EC2 Health 解決方案的代理程式組態

代理程式收集的指標在代理程式組態中定義。解決方案提供代理程式組態,以收集適用於解決方案儀表板的建議指標與適當維度。

部署解決方案的步驟稍後會在部署解決方案的代理程式中說明。以下資訊旨在協助您了解如何為您的環境自訂代理程式組態。

注意

如果 EC2 執行個體不屬於 Auto Scaling 群組,CloudWatch 代理程式會完全捨棄 AutoScalingGroupName 維度。此行為有助於防止維度名稱出現 null/空白值的情況。解決方案儀表板中包含的每個指標小工具會搜尋包含和不包含 AutoScalingGroup 維度的指標。這有助於確保套用此解決方案的所有 EC2 執行個體皆由同一儀表板提供支援。

若需修改代理程式組態,必須將相同變更套用至該解決方案的隨附儀表板。例如,若您決定省略 ImageId 維度,則必須從儀表板小工具使用的指標搜尋表達式中移除這個維度。

EC2 執行個體的代理程式組態

請在部署工作負載的 Amazon EC2 執行個體上,使用下列 CloudWatch 代理程式組態。

{ "agent": { "metrics_collection_interval": 60, "run_as_user": "cwagent" }, "metrics": { "append_dimensions": { "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}", "ImageId": "${aws:ImageId}", "AutoScalingGroupName": "${aws:AutoScalingGroupName}" }, "metrics_collected": { "cpu": { "measurement": [ "cpu_usage_idle", "cpu_usage_iowait", "cpu_usage_user", "cpu_usage_system" ], "totalcpu": true }, "disk": { "measurement": [ "used_percent", "inodes_free" ], "resources": [ "*" ], "dimensions": [ ["device", "fstype", "path"] ] }, "diskio": { "measurement": [ "io_time" ], "resources": [ "*" ] }, "mem": { "measurement": [ "used_percent" ] }, "swap": { "measurement": [ "used_percent" ] } } } }

部署解決方案的代理程式

安裝 CloudWatch 代理程式的方法有很多種,具體取決於使用案例。建議您使用 Systems Manager 安裝此解決方案。它提供主控台體驗,並可讓您更輕鬆地管理單一 AWS 帳戶中的受管伺服器機群。本節說明採用 Systems Manager,適用於您沒有以現有組態執行 CloudWatch 代理程式的情況。您可以依循驗證 CloudWatch 代理程式是否正在執行中的步驟,檢查 CloudWatch 代理程式是否正在執行。

如果您已在 EC2 主機上執行 CloudWatch 代理程式並管理代理程式組態,可以略過本節中的說明,並依循現有部署機制來更新組態。請務必將 EC2 Health 代理程式組態與您現有的代理程式組態合併,然後部署合併的組態。如果您使用 Systems Manager 來儲存和管理 CloudWatch 代理程式的組態,可以將組態合併到現有的參數值。如需詳細資訊,請參閱管理 CloudWatch 代理程式設定檔

注意

使用 Systems Manager 部署下列 CloudWatch 代理程式組態,將取代或覆寫 EC2 執行個體上的任何現有 CloudWatch 代理程式組態。您可以根據自己的特定環境或使用案例修改此組態。組態中定義的指標,是儀表板提供解決方案需要滿足的最低要求。

部署程序包含以下步驟:

  • 步驟 1:確定目標 EC2 執行個體具有所需的 IAM 許可。

  • 步驟 2:將建議的代理程式設定檔儲存在 Systems Manager 參數儲存區中。

  • 步驟 3:使用 CloudFormation 堆疊在一或多個 EC2 執行個體上安裝 CloudWatch 代理程式。

  • 步驟 4:確認已正確完成代理程式設定。

步驟 1:確定目標 EC2 執行個體具有所需的 IAM 許可

您必須授與 Systems Manager 安裝和設定 CloudWatch 代理程式的許可。還必須授與 CloudWatch 代理程式從 EC2 執行個體發布遙測到 CloudWatch 的許可。確定連結至執行個體的 IAM 角色已連結 CloudWatchAgentServerPolicyAmazonSSMManagedInstanceCore IAM 政策。

步驟 2:將建議的 CloudWatch 代理程式設定檔儲存在 Systems Manager 參數儲存區中

參數儲存區透過安全地儲存和管理組態參數,簡化在 EC2 執行個體上安裝 CloudWatch 代理程式的流程,無需使用硬式編碼值。這可確保部署程序更安全、更靈活,實現集中式管理,並能更輕鬆地更新多個執行個體的組態。

依循下列步驟,將建議的 CloudWatch 代理程式設定檔儲存為參數儲存區中的參數。

建立 CloudWatch 代理程式設定檔作為參數
  1. 在 https://https://console.aws.amazon.com/systems-manager/ 開啟 AWS Systems Manager 主控台。

  2. 確認主控台上選取的區域是執行 EC2 執行個體的區域。

  3. 從導覽窗格中,選擇應用程式管理參數儲存區

  4. 依循下列步驟為組態建立新的參數。

    1. 選擇 Create parameter (建立參數)

    2. 名稱方塊中,輸入您將用於在後續步驟中引用 CloudWatch 代理程式設定檔的名稱。例如 AmazonCloudWatch-EC2Health-Configuration

    3. (選用) 在描述方塊中,輸入參數描述。

    4. 對於參數層,選擇標準

    5. 類型選擇字串

    6. 對於資料類型,選擇文字

    7. 方塊中,將本文件稍早提供的代理程式組態 JSON 貼至此處。

    8. 選擇 Create parameter (建立參數)

步驟 3:安裝 CloudWatch 代理程式並使用 CloudFormation 範本套用組態

您可以使用 CloudFormation 安裝代理程式,並將其設定為使用您在先前步驟中建立的 CloudWatch 代理程式組態。

為此解決方案安裝和設定 CloudWatch 代理程式
  1. 使用此連結開啟 CloudFormation 快速建立堆疊精靈:https://https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json。

  2. 確認主控台上選取的區域是執行 EC2 執行個體的區域。

  3. 對於​堆疊名稱,輸入可識別此堆疊的名稱,例如 CWAgentInstallationStack

  4. 參數區段中,執行以下動作:

    1. 對於 CloudWatchAgentConfigSSM,輸入您先前建立之代理程式組態的 Systems Manager 參數名稱,例如 AmazonCloudWatch-EC2Health-Configuration

    2. 若要選取目標執行個體,您有兩個選項。

      1. 對於 InstanceIds,指定以逗號分隔的執行個體 ID 清單,列出您想要使用此組態安裝 CloudWatch 代理程式的執行個體 ID。您可以列出一個或多個執行個體。

      2. 若要大規模部署,可以指定 TagKey 和對應的 TagValue,以鎖定使用此標籤和值的所有 EC2 執行個體。指定 TagKey 時,必須指定對應的 TagValue。(對於 Auto Scaling 群組,請為 TagKey 指定 aws:autoscaling:groupName,並為 TagValue 指定 Auto Scaling 群組名稱,以部署到 Auto Scaling 群組內的所有執行個體。)

      如果您同時指定 InstanceIdsTagKeys 參數,系統將以 InstanceIds 為準,並忽略標籤。

  5. 檢閱設定,然後選擇建立堆疊

如果想要先編輯範本檔案以進行自訂,請選擇建立堆疊精靈下的上傳範本檔案選項,以上傳經編輯的範本。如需詳細資訊,請參閱在CloudFormation 主控台上建立堆疊。可以使用以下連結下載範本:https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json

注意

完成這個步驟後,此 Systems Manager 參數將與目標執行個體中執行的 CloudWatch 代理程式關聯。這表示:

  1. 如果刪除 Systems Manager 參數,代理程式將停止運作。

  2. 如果編輯 Systems Manager 參數,組態變更會自動套用至代理程式,排程頻率預設為 30 天。

  3. 如果想要即刻將變更套用至此 Systems Manager 參數,必須再次執行此步驟。如需關於關聯的更多資訊,請參閱在 AWS Systems Manager中使用關聯

步驟 4:確認代理程式設定已正確設定

您可以依循驗證 CloudWatch 代理程式是否正在執行中的步驟,驗證是否已安裝 CloudWatch 代理程式。若 CloudWatch 代理程式未安裝且未執行,請確認您已正確完成所有設定。

驗證 EC2 運作狀態指標是否已發布至 CloudWatch
  1. 透過 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 依序選擇指標所有指標

  3. 請確定您已選取部署解決方案的區域,然後選擇自訂命名空間CWAgent

  4. 搜尋本文件代理程式組態區段中提到的指標,例如 mem_used_percent。如果您看到這些指標的結果,則指標會發布至 CloudWatch。

建立 EC2 Health 解決方案儀表板

此儀表板會顯示新發出的指標,並顯示 EC2 Health 指標。此儀表板提供主要貢獻因子檢視,讓您在一個區域檢視 EC2 執行個體的運作狀態。主要貢獻因子檢視會顯示每個指標小工具排名前 10 的因子。這可助您一目了然地識別極端值。

若要建立儀表板,可以使用下列選項:

  • 使用 CloudWatch 主控台建立儀表板。

  • 使用 AWS CloudFormation 主控台部署儀表板。

  • 下載 AWS CloudFormation 基礎設施做為程式碼,並將其整合為持續整合 (CI) 自動化的一部分。

透過使用 CloudWatch 主控台建立儀表板,您可以在實際建立和收費之前預覽儀表板。

注意

在此解決方案 CloudFormation 中使用 建立的儀表板會顯示部署解決方案的區域指標。請務必在發佈 EC2 指標的區域中建立 CloudFormation 堆疊。

如果您已在 CloudWatch 代理程式組態CWAgent中指定 以外的自訂命名空間,則必須變更儀表板的 CloudFormation 範本,以CWAgent將 取代為您正在使用的自訂命名空間。

透過 CloudWatch 主控台建立儀表板
  1. 使用此連結開啟 CloudWatch 主控台建立儀表板https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=Ec2LinuxMacOsHealth&referrer=os-catalog

  2. 確認主控台上選取的區域是執行 EC2 執行個體的區域。

  3. 輸入儀表板的名稱,然後選擇建立儀表板

    為方便區分此儀表板與其他區域的類似儀表板,建議在儀表板名稱中包含區域名稱,例如 EC2HealthDashboard-us-east-1

  4. 預覽儀表板,然後選擇儲存以建立儀表板。

透過 建立儀表板 CloudFormation
  1. 使用此連結開啟 CloudFormation 快速建立堆疊精靈:https://https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/EC2_Health/CloudWatch/CFN/v1.0.0/dashboard-template-linux-macos-1.0.0.json。

  2. 確認主控台上選取的區域是執行 EC2 執行個體的區域。

  3. 對於​堆疊名稱,輸入可識別此堆疊的名稱,例如 EC2HealthDashboardStack

  4. 參數區段的 DashboardName 參數下,指定儀表板名稱。

    為方便區分此儀表板與其他區域的類似儀表板,建議在儀表板名稱中包含區域名稱,例如 EC2HealthDashboard-us-east-1

  5. 功能和轉換下,確認轉換的存取功能。請注意, CloudFormation 不會新增任何 IAM 資源。

  6. 檢閱設定,然後選擇建立堆疊

  7. 堆疊狀態變為 CREATE_COMPLETE 之後,請在所建立堆疊下方選擇資源索引標籤,然後選擇實體 ID 下方的連結以前往儀表板。也可以在 CloudWatch 主控台中存取儀表板,方法是選擇主控台左側導覽窗格中的儀表板,然後在自訂儀表板下尋找儀表板名稱。

如果想要編輯範本檔案以針對任何用途自訂範本檔案,可以使用建立堆疊精靈下的上傳範本檔案選項來上傳經編輯的範本。如需詳細資訊,請參閱在 CloudFormation 主控台上建立堆疊。可以使用此連結下載範本:https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/JVM_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json

開始使用 EC2 Health 解決方案儀表板

以下是您可以嘗試使用新 EC2 監控儀表板處理的一些任務。這些任務可讓您驗證儀表板是否運作正常,並提供實際操作經驗,協助您運用儀表板監控 EC2 執行個體。當您嘗試這些功能時,可逐漸熟悉儀表板的操作介面,並學會解讀視覺化的指標資料。

監控各種 CPU 使用率指標

CPU 區段中,檢查 CPU 用量指標陣列。這些指標可助您深入了解 CPU 資源在不同活動 (例如使用者程序、系統任務及 I/O 操作) 中的使用情況。尋找持續處於高使用率狀態或呈現異常模式的執行個體,這可能表示需要進行擴展或最佳化。

分析不同裝置的磁碟使用率

導覽至磁碟區段以尋找儲存用量和節點可用性指標。這些指標可協助您識別儲存空間或檔案系統資源即將耗盡的執行個體。請注意任何可能導致磁碟使用率升高的狀況,此類情況可能導致效能問題或服務中斷。

調查記憶體使用率模式

記憶體區段中,觀測繪製記憶體使用率隨時間變化的圖表。這顯示每個執行個體佔用了多少可用記憶體。尋找可能與特定時間或事件相關的記憶體使用模式或突發性激增現象。記憶體使用率偏高可能表示需要調整執行個體大小或進行應用程式最佳化。

分析核心使用率指標間的關聯模式

比較並留意相關的使用率模式。例如,執行日誌輪替程序的工作負載可能顯示 CPU記憶體使用率定期上升,隨後伴隨磁碟使用率下降。

檢查網路活動

網路區段中,檢查傳入和傳出網路流量指標,包括資料磁碟區和封包計數。這些指標可助您深入了解 EC2 執行個體的網路活動。請留意網路流量中是否出現常規或異常的突發性高峰,以及傳入與傳出資料之間是否存在失衡現象。