本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CloudWatch 解決方案:Amazon EC2 Health
此解決方案可協助您針對在EC2執行個體上執行的工作負載,使用 CloudWatch 代理程式來設定 out-of-the-box指標集合。此外,它可協助您設定預先設定的 CloudWatch 儀表板。
要求
此解決方案適用於下列情況:
運算:Amazon EC2
平台:Linux 和 macOS
在指定的 中最多支援 500 個EC2執行個體 AWS 區域
最新版代理 CloudWatch 程式
-
SSM 執行個體上安裝的代理程式 EC2
注意
AWS Systems Manager (SSM 代理程式) 已預先安裝在 AWS 和信任的第三方提供的一些 Amazon Machine Image (AMIs) 上。如果未安裝代理程式,您可以使用作業系統類型的程序手動安裝代理程式。
優勢
此解決方案使用 CloudWatch 代理程式提供EC2伺服器監控,除了標準EC2命名空間指標之外,還為下列使用案例提供額外的系統層級指標:
偵測CPU效能問題和資源限制。
在整個EC2執行個體中監控不同磁碟的磁碟使用率和儲存容量。
追蹤記憶體用量模式和潛在的記憶體洩漏。
分析 I/O 操作及其對整體效能的影響。
觀察網路流量模式和潛在的異常。
以下是解決方案的主要優點:
-
自動化EC2執行個體的指標集合,消除手動檢測。
-
為EC2執行個體指標提供預先設定的合併 CloudWatch 儀表板。儀表板會自動處理使用 解決方案設定的新EC2執行個體中的指標,即使您第一次建立儀表板時這些指標不存在。它也可讓您觀察透過 Auto Scaling 群組管理的EC2執行個體。
下圖是此解決方案的儀表板範例。
成本
此解決方案會在您的帳戶中建立和使用 資源。您需要支付標準用量的費用,包括下列項目:
-
CloudWatch 代理程式收集的所有指標都會以自訂指標計費。此解決方案使用的指標數目取決於EC2主機數目。
CloudWatch 代理程式指標的總數取決於磁碟組態。除了磁碟和磁碟指標之外,解決方案會發佈六個指標。磁碟指標 (
disk_used_percent
、disk_inodes_free
) 的數量取決於device/fstype/path
維度計數。磁碟指標 (diskio_io_time
) 取決於name
維度計數。例如,根據EC2主控台體驗,具有預設設定的單一 t2.micro 會產生總共 22 個 CloudWatch 代理程式指標 (4 個 CPU、12 個磁碟、4 個磁碟、1 個記憶體和 1 個交換)。像 這樣的已取代指標AWS/EC2
可免費提供。 一個自訂儀表板。
-
API CloudWatch 代理程式要求發佈指標的操作。透過此解決方案的預設組態, CloudWatch 客服人員每分鐘會呼叫 PutMetricData一次。這表示每個EC2主機PutMetricDataAPI會在
30*24*60=43,200
30 天內呼叫 。
如需 CloudWatch 定價的詳細資訊,請參閱 Amazon CloudWatch 定價
定價計算器可協助您預估使用此解決方案的每月大約成本。
使用定價計算器估算每月解決方案成本
-
在指標區段中,針對指標數量輸入
(6 + total count of disk and diskio metrics per EC2 host as described above) * number of EC2 instances configured for this solution
。 -
在 APIs區段中,針對API請求數量輸入
43200 * number of EC2 instances configured for this solution
。 -
根據預設,解決方案每分鐘會為每個EC2主機執行一次PutMetricData操作。
-
在儀表板和警示區段中,針對儀表板數量,輸入
1
。 -
您可以在定價計算器底部查看每月預估成本。
CloudWatch 此解決方案的代理程式組態
CloudWatch 代理程式是在您的伺服器和容器化環境中持續自動執行的軟體。它從您的基礎設施和應用程式收集指標、日誌和追蹤,並將其傳送至 CloudWatch 和 X-Ray。
如需 CloudWatch 代理程式的詳細資訊,請參閱使用 CloudWatch 代理程式收集指標、日誌和追蹤。
此解決方案中的代理程式組態會收集一組指標,協助您開始監控和觀察EC2執行個體。 CloudWatch 代理程式可設定為收集比儀表板預設顯示的EC2指標更多。如需 Amazon EC2指標的清單,請參閱 CloudWatch 代理程式在 Linux 和 macOS 執行個體上收集的指標。如需在 Windows 執行個體上收集的指標資訊,請參閱 Windows Server 執行個體上 CloudWatch 代理程式收集的指標。
EC2 Health 解決方案的代理程式組態
代理程式收集的指標在代理程式組態中定義。解決方案提供代理程式組態,以收集適用於解決方案儀表板之維度的建議指標。
部署解決方案的步驟稍後會在 中說明部署解決方案的代理程式。以下資訊旨在協助您了解如何自訂您環境的代理程式組態。
注意
如果EC2執行個體不屬於 Auto Scaling 群組, CloudWatch 代理程式會完全捨棄AutoScalingGroupName
維度。此行為有助於防止具有 null/empty 值的維度名稱。解決方案儀表板中包含的每個指標小工具會搜尋包含和排除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運作狀態代理程式組態與您現有的代理程式組態合併,然後部署合併的組態。如果您使用 Systems Manager 來存放和管理 CloudWatch 代理程式的組態,您可以將組態合併到現有的參數值。如需詳細資訊,請參閱管理 CloudWatch 客服人員組態檔案。
注意
使用 Systems Manager 部署下列 CloudWatch 代理程式組態,將取代或覆寫EC2執行個體上任何現有的 CloudWatch 代理程式組態。您可以修改此組態以符合您的唯一環境或使用案例。組態中定義的指標是儀表板提供解決方案所需的最低標準。
部署程序包括下列步驟:
步驟 1:確保目標EC2執行個體具有所需的IAM許可。
步驟 2:將建議的代理程式組態檔案儲存在 Systems Manager 參數存放區中。
步驟 3:使用 AWS CloudFormation 堆疊在一或多個EC2執行個體上安裝 CloudWatch 代理程式。
步驟 4:確認代理程式設定已正確設定。
步驟 1:確保目標EC2執行個體具有所需的IAM許可
您必須授予 Systems Manager 安裝和設定 CloudWatch 代理程式的許可。您還必須授予許可,讓 CloudWatch 代理程式從您的EC2執行個體發佈遙測 CloudWatch。確定連接至執行個體IAM的角色已連接 CloudWatchAgentServerPolicy和 A mazonSSMManagedInstanceCoreIAM政策。
-
若要建立角色,請參閱在 Amazon EC2執行個體上建立要與 CloudWatch 代理程式搭配使用IAM的角色。
-
建立角色之後,請將角色連接至您的EC2執行個體。若要將角色連接至EC2執行個體,請遵循將IAM角色連接至執行個體中的步驟。
步驟 2:將建議的 CloudWatch 代理程式組態檔案存放在 Systems Manager 參數存放區
參數存放區可安全地存放和管理組態參數,簡化 CloudWatch 代理程式在EC2執行個體上的安裝,無需使用硬式編碼值。這可確保更安全且靈活的部署程序,實現集中式管理,並更輕鬆地跨多個執行個體進行組態更新。
使用下列步驟,將建議的 CloudWatch 代理程式組態檔案儲存為參數存放區中的參數。
將 CloudWatch 代理程式組態檔案建立為參數
-
在 開啟 AWS Systems Manager 主控台https://console.aws.amazon.com/systems-manager/
。 -
確認主控台上選取的區域是EC2執行個體執行所在的區域。
-
從導覽窗格中,選擇應用程式管理、參數存放區。
-
請依照下列步驟,為組態建立新的參數。
選擇 Create parameter (建立參數)。
-
在名稱方塊中,輸入您將在後續步驟中用來參考 CloudWatch 客服人員組態檔案的名稱。例如:
AmazonCloudWatch-EC2Health-Configuration
。 (選用) 在描述方塊中,輸入 參數的描述。
針對參數層,選擇標準。
在類型選擇字串。
針對資料類型,選擇文字。
-
在值方塊中,貼上本文件稍早JSON提供的代理程式組態。
選擇 Create parameter (建立參數)。
步驟 3:安裝 CloudWatch 代理程式並使用 AWS CloudFormation 範本套用組態
您可以使用 AWS CloudFormation 安裝代理程式,並將其設定為使用您在先前步驟中建立的 CloudWatch 代理程式組態。
安裝和設定此解決方案的 CloudWatch 代理程式
-
使用此連結開啟 AWS CloudFormation 快速建立堆疊精靈: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cwagent-installation-template-1.0.0.json
。 -
確認主控台上選取的區域是EC2執行個體執行所在的區域。
-
針對堆疊名稱,輸入名稱來識別此堆疊,例如
CWAgentInstallationStack
。 -
在參數區段中,指定下列項目:
-
針對 CloudWatchAgentConfigSSM,輸入您先前建立之代理程式組態的 Systems Manager 參數名稱,例如
AmazonCloudWatch-EC2Health-Configuration
。 -
若要選取目標執行個體,您有兩個選項。
-
針對 InstanceIds,指定以逗號分隔的執行個體IDs清單,列出您要使用此組態安裝 CloudWatch 代理程式IDs的執行個體。您可以列出單一執行個體或數個執行個體。
-
如果您要大規模部署,您可以指定 TagKey和 對應的 TagValue,以使用此標籤和值來鎖定所有EC2執行個體。如果您指定 TagKey,則必須指定對應的 TagValue。(針對 Auto Scaling 群組,請指定
aws:autoscaling:groupName
,TagKey並指定TagValue要部署到 Auto Scaling 群組內所有執行個體的 Auto Scaling 群組名稱。)
如果您同時指定 InstanceIds和 TagKeys 參數,則 InstanceIds將優先,且標籤將被忽略。
-
-
-
檢閱設定,然後選擇建立堆疊。
如果您想要先編輯範本檔案以進行自訂,請選擇建立堆疊精靈下的上傳範本檔案選項,以上傳編輯的範本。如需詳細資訊,請參閱在 AWS CloudFormation 主控台上建立堆疊。您可以使用以下連結下載範本: https://aws-observability-solutions.s3.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json。
注意
此步驟完成後,此 Systems Manager 參數將與目標執行個體中執行的 CloudWatch 代理程式建立關聯。這表示:
-
如果已刪除 Systems Manager 參數,代理程式將停止。
-
如果已編輯 Systems Manager 參數,組態變更會自動以排程的頻率套用至代理程式,預設為 30 天。
-
如果您想要立即套用變更至此 Systems Manager 參數,您必須再次執行此步驟。如需關聯的詳細資訊,請參閱在 中使用關聯 AWS Systems Manager。
步驟 4:確認代理程式設定已正確設定
您可以遵循驗證 CloudWatch 代理程式正在執行中的步驟,來驗證 CloudWatch 代理程式是否已安裝。如果 CloudWatch 代理程式未安裝並執行,請確定您已正確設定所有項目。
-
請確定您已連接具有正確EC2執行個體許可的角色,如中所述步驟 1:確保目標EC2執行個體具有所需的IAM許可。
-
請確定您已正確設定 Systems Manager 參數JSON的 。請依照 對 CloudWatch 代理程式的安裝進行故障診斷 AWS CloudFormation中的步驟進行。
驗證EC2運作狀態指標是否發佈至 CloudWatch
-
在 開啟 CloudWatch 主控台https://console.aws.amazon.com/cloudwatch/
。 -
選擇指標,所有指標。
-
請確定您已選取部署解決方案的區域,然後選擇自訂命名空間 CWAgent。
-
搜尋本文件客服人員組態區段中提到的指標,例如
mem_used_percent
。如果您看到這些指標的結果,則會發佈這些指標 CloudWatch。
建立EC2運作狀態解決方案儀表板
此儀表板會顯示新發出的指標,並顯示EC2運作狀態指標。此儀表板提供單一區域中EC2執行個體運作狀態的最佳貢獻者檢視。最大貢獻者檢視會顯示每個指標的前 10 個小工具。這可讓您一目了然地識別極端值。
若要建立儀表板,您可以使用下列選項:
使用 CloudWatch 主控台建立儀表板。
使用 AWS CloudFormation 主控台部署儀表板。
下載 AWS CloudFormation 基礎設施做為程式碼,並將其整合為持續整合 (CI) 自動化的一部分。
透過使用 CloudWatch 主控台建立儀表板,您可以在實際建立和收費之前預覽儀表板。
注意
在此解決方案 AWS CloudFormation 中使用 建立的儀表板會顯示部署解決方案的區域指標。請務必在發佈EC2指標的區域中建立 AWS CloudFormation 堆疊。
如果您已在 CloudWatch 代理程式組態CWAgent
中指定 以外的自訂命名空間,則必須變更儀表板的 AWS CloudFormation 範本,以CWAgent
取代為您正在使用的自訂命名空間。
透過 CloudWatch 主控台建立儀表板
-
使用此連結開啟 CloudWatch 主控台建立儀表板: https://console.aws.amazon.com/cloudwatch/首頁?#dashboards?dashboardTemplate=Ec2LinuxMacOsHealth&referrer=os-catalog
。 -
確認主控台上選取的區域是EC2執行個體執行所在的區域。
-
輸入儀表板的名稱,然後選擇建立儀表板。
為了輕鬆區分此儀表板與其他區域中的類似儀表板,我們建議在儀表板名稱中包含區域名稱,例如
EC2HealthDashboard-us-east-1
。 -
預覽儀表板,然後選擇儲存以建立儀表板。
透過 建立儀表板 AWS CloudFormation
-
使用此連結開啟 AWS CloudFormation 快速建立堆疊精靈: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/EC2_Health/CloudWatch/CFN/v1.0.0/dashboardtemplate-linux-macos-1.0.0.json
。 -
確認主控台上選取的區域是EC2執行個體執行所在的區域。
-
針對堆疊名稱,輸入名稱來識別此堆疊,例如
EC2HealthDashboardStack
。 -
在參數區段中,指定 DashboardName 參數下的儀表板名稱。
為了輕鬆區分此儀表板與其他區域中的類似儀表板,我們建議在儀表板名稱中包含區域名稱,例如
EC2HealthDashboard-us-east-1
。 -
在功能和轉換下確認轉換的存取功能。請注意, AWS CloudFormation 不會新增任何IAM資源。
-
檢閱設定,然後選擇建立堆疊。
-
在堆疊狀態為 CREATE_COMPLETE 之後,選擇建立的堆疊下方的資源索引標籤,然後選擇實體 ID 下方的連結以前往儀表板。您也可以選擇 CloudWatch 主控台左側導覽窗格中的儀表板,然後在自訂儀表板下尋找儀表板名稱,以存取主控台中的儀表板。
如果您想要編輯範本檔案以針對任何用途自訂範本檔案,您可以使用建立堆疊精靈下的上傳範本檔案選項來上傳編輯的範本。如需詳細資訊,請參閱在 AWS CloudFormation 主控台上建立堆疊。您可以使用此連結下載範本: https://aws-observability-solutions.s3.amazonaws.com/EC2_Health/CloudWatch/CFN/v1.0.0/dashboard-template-linux-macos-1.0.0.json
開始使用EC2運作狀態解決方案儀表板
以下是您可以使用新的EC2監控儀表板嘗試的一些任務。這些任務可讓您驗證儀表板是否正常運作,並為您提供一些實際操作體驗,使用它來監控EC2執行個體。嘗試這些方法時,您將熟悉導覽儀表板和解譯視覺化指標。
- 監控各種CPU使用率指標
-
在 CPU區段中,檢查CPU用量指標陣列。這些課程可讓您深入了解如何在使用者程序、系統任務和 I/O 操作等不同活動中使用CPU資源。尋找具有持續高使用率或異常模式的執行個體,這可能表示需要擴展或最佳化。
- 分析不同裝置的磁碟使用率
-
導覽至磁碟區段以尋找儲存用量和索引可用性指標。這些可協助您識別儲存空間或檔案系統資源不足的執行個體。請注意接近高磁碟用量層級的任何執行個體,因為這可能會導致效能問題或服務中斷。
- 調查記憶體使用率模式
-
在記憶體區段中,觀察繪製記憶體使用率隨時間變化的圖表。這會顯示每個執行個體正在使用多少可用記憶體。尋找可能與特定時間或事件相關的記憶體用量模式或峰值。高記憶體使用率可能表示需要調整執行個體大小或進行應用程式最佳化。
- 跨核心使用率指標關聯模式
-
比較並留意相關的使用模式。例如,執行日誌輪換程序的工作負載可能會定期增加 CPU和記憶體使用率,然後減少磁碟使用率。
- 檢查網路活動
-
在網路區段中,檢查傳入和傳出網路流量指標,包括資料磁碟區和封包計數。這些可讓您深入了解EC2執行個體的網路活動。注意網路流量中是否有一般或異常峰值,或傳入和傳出資料之間的不平衡。