設定 CloudWatch EC2 執行個體和內部部署伺服器的代理程式 - AWS 規範指南

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

設定 CloudWatch EC2 執行個體和內部部署伺服器的代理程式

許多組織在物理伺服器和虛擬機器 (VM) 上運行負載。這些工作負載通常在不同的操作系統上運行,每個操作系統都有獨特的安裝和配置要求來捕獲和接收指標。

如果您選擇使用 EC2 實例,則可以對實例和操作系統配置進行高級別控制。但是,這種更高級別的控制和責任要求您監控和調整配置,以實現更高效的使用。通過建立日誌記錄和監控標準,並應用標準的安裝和配置方法來捕獲和攝取日誌和指標,您可以提高運營效率。

將其 IT 投資遷移或擴展到AWS雲可以利用 CloudWatch 來實現統一的日誌記錄和監控解決方案。 CloudWatch 定價意味着您要捕獲的指標和日誌以遞增方式支付費用。您還可以通過使用類似的 CloudWatch 代理安裝過程與 Amazon EC2 相同。

在開始安裝和部署 CloudWatch 之前,請確保評估系統和應用程序的日誌記錄和指標配置。確保為要使用的操作系統定義了需要捕獲的標準日誌和指標。系統日誌和指標是日誌記錄和監視解決方案的基礎和標準,因為它們是由操作系統生成的,對於 Linux 和 Windows 而言是不同的。除了特定於 Linux 版本或發行版的指標和日誌文件之外,還有跨 Linux 發行版提供的重要指標和日誌文件。不同的 Windows 版本之間也會出現這種差異。

設定 CloudWatch 代理人

CloudWatch Amazon EC2 通過使用CloudWatch 代理程式組態檔案特定於每個操作系統的。我們建議您定義組織的標準指標和日誌捕獲配置,然後再開始安裝 CloudWatch 在您的帳户中規模代理。

您可以結合多個 CloudWatch 代理配置以形成複合 CloudWatch 代理程式組態。推薦的一種方法是在系統和應用程序級別定義和劃分日誌和指標的配置。下圖説明瞭如何將滿足不同要求的多種 CloudWatch 配置文件類型組合起來形成複合 CloudWatch 配置:

多個 CloudWatch 不同要求的配置組合,形成一個複合 CloudWatch 配置

還可以針對特定環境或要求對這些日誌和指標進行進一步分類和配置。例如,您可以為不受管制的開發環境定義較小的日誌和指標子集,而且可以為受管制的生產環境定義更小的精度較小的日誌和指標子集。

配置 EC2 實例的日誌捕獲

默認情況下,Amazon EC2 不監視或捕獲日誌文件。相反,將捕獲日誌文件並將其攝入到 CloudWatch 日誌由 CloudWatch 代理程式組態軟件,AWSAPI,或AWS Command Line Interface(AWS CLI。我們建議使用 CloudWatch 代理將日誌文件提取到 CloudWatch Amazon EC2 和內部部署伺服器的日誌。

您可以搜索和篩選日誌,以及從 CloudWatch 中的日誌文件中提取指標和基於模式修補程序運行自動化。 CloudWatch 支持明文、空格分隔和 JSON 格式的過濾器和模式語法選項,使用 JSON 格式的日誌提供了最大的靈活性。要增加篩選和分析選項,應使用格式化的日誌輸出而不是純文本。

所以此 CloudWatch 代理使用定義要發送到 CloudWatch 的日誌和指標的配置文件。 CloudWatch 然後將每個日誌文件捕獲為日誌串流並將這些日誌流分組到日誌群組。這有助於您跨 EC2 實例的日誌執行操作,例如搜索匹配的字符串。

默認日誌流名稱與 EC2 實例 ID 相同,默認日誌組名稱與日誌文件路徑相同。日誌流的名稱必須在 CloudWatch 日誌羣組。您可以使用instance_idhostnamelocal_hostname, 或ip_address用於日誌流和日誌組名稱中的動態替換,這意味着您可以使用相同的 CloudWatch 代理程式組態檔案。

下圖顯示 CloudWatch 用於捕獲日誌的代理配置。日誌組由捕獲的日誌文件定義,幷包含每個 EC2 實例的單獨日誌流,因為{instance_id}變量用於日誌流名稱,EC2 實例 ID 是唯一的。

一個 CloudWatch 用於捕獲日誌的代理配置。

日誌組定義其所包含的日誌流的保留期、標記、安全性、度量篩選器和搜索範圍。基於日誌文件名的默認分組行為可幫助您在賬户和區域中跨 EC2 實例中搜索、創建指標和警報特定於日誌文件的數據。您應評估是否需要進一步的日誌組細化。例如,您的帳户可能由多個業務部門共享,並且具有不同的技術或運營所有者。這意味着您必須進一步優化日誌組名稱以反映分離和所有權。通過此方法,您可以將分析和故障排除集中在相關 EC2 實例上。

如果多個環境使用一個帳户,則可以為每個環境中運行的工作負載分開日誌記錄。下表顯示了一個日誌組命名約定,其中包括業務部門、項目或應用程序以及環境。

日誌群組名稱 /<Business unit>/<Project or application name>/<Environment>/<Log file name>
日誌串流名稱 <EC2 instance ID>

您還可以將 EC2 實例的所有日誌文件分組到同一日誌組中。這樣就可以更輕鬆地跨單個 EC2 實例的一組日誌文件進行搜索和分析。如果您的大多數 EC2 實例服務一個應用程序或工作負載,並且每個 EC2 實例都有特定用途,則此功能非常有用。下表顯示瞭如何格式化日誌組和日誌流命名以支持此方法。

日誌群組名稱 /<Business unit>/<Project or application name>/<Environment>/<EC2 instance ID>
日誌串流名稱 <Log file name>

配置 EC2 實例的指標捕獲

默認情況下,您的 EC2 執行個體會啟用基本監控和標準指標集(例如,CPU、網絡或與存儲相關的指標)會自動發送到 CloudWatch 每五分鐘一次。 CloudWatch 指標可能因執行個體系而有所差異,例如爆量效能執行個體具有 CPU 積分的指標。Amazon EC2 標準指標包含在您的實例價格中。如果您啟用詳細監控,您可以在一分鐘內接收數據。週期頻率會影響您的 CloudWatch 成本,因此請確保評估是否需要對所有 EC2 實例進行詳細監控,還是僅需要對其中的某些實例進行詳細監控。例如,您可以啟用對生產工作負載的詳細監控,但對非生產工作負載使用基本監控。

本地服務器不包含 CloudWatch 並且必須使用 CloudWatch 代理程式,AWS CLI, 或AWS用於捕獲指標的 SDK。這意味着您必須定義要捕獲的指標(例如 CPU 利用率)在 CloudWatch 組態檔案。您可以建立唯一的 CloudWatch 配置文件,該文件包含您的本地服務器的標準 EC2 實例指標,並將其應用於您的標準 CloudWatch 組態。

指標在 CloudWatch 由指標名稱和零或多個維度進行唯一的定義,並且在指標命名空間中唯一地進行分組。提供的指標AWS服務的名稱空間以AWS(例如,AWS/EC2) 和非AWS指標會被視為自定義指標。您配置和捕獲的指標使用 CloudWatch 代理都被視為自定義指標。由於創建的指標數量會影響您的 CloudWatch 成本,您應評估您的所有 EC2 實例是否需要每個指標,還是僅需要部分指標。例如,您可以為生產工作負載定義一組完整的指標,但對非生產工作負載使用這些指標的較小子集。

CWAgent是發佈的指標的默認命名空間 CloudWatch 代理程式。與日誌組類似,指標命名空間組織了一組指標,以便在一個位置一起找到這些指標。您應該修改命名空間以反映業務部門、項目或應用程序以及環境(例如/<Business unit>/<Project or application name>/<Environment>。如果多個不相關的工作負載使用同一帳户,則此方法非常有用。您還可以將命名空間命名約定與 CloudWatch 日誌組命名約定。

衡量指標也由其維度標識,這有助於您根據一組條件對其進行分析,並且是記錄觀測值所依據的屬性。Amazon EC2 包括單獨指標的 EC2 執行個體InstanceIdAutoScalingGroupName維度。您還會收到具有ImageIdInstanceType維度(如果啟用詳細監控)。例如,Amazon EC2 為 CPU 利用率提供了一個單獨的 EC2 實例指標,其中包含InstanceId維度,此外,除了單獨的 CPU 使用率指標InstanceType維度。這有助於您分析每個唯一 EC2 實例的 CPU 利用率,以及特定執行個體類型

添加更多維度可增加您的分析能力,但也會增加您的總體成本,因為每個量度和唯一維度值組合都會生成一個新的指標。例如,如果您為內存利用率百分比創建了一個指標InstanceId維度,那麼這是每個 EC2 實例的新指標。如果您的組織運行數千個 EC2 實例,這會導致數千個指標並導致更高的成本。要控制和預測成本,請確保您確定度量的基數以及哪些維度增加最大值。例如,您可以為生產工作負載指標定義一組完整的維度,但為非生產工作負載定義這些維度的較小子集。

您可以使用append_dimensions屬性將維度添加到 CloudWatch 組態。您還可以動態地追加ImageIdInstanceIdInstanceType,和AutoScalingGroupName中的所有指標 CloudWatch 組態。或者,您可以通過使用append_dimensions屬性。 CloudWatch 還可以聚合指標維度的統計信息,這些指標維度使用aggregation_dimensions屬性。

例如,您可以將使用的內存聚合到InstanceType維度查看每個實例類型的所有 EC2 實例使用的平均內存。如果您使用t2.micro實例時,您可以確定是否使用t2.micro類過度利用或未充分利用提供的內存。未充分利用可能是使用具有不需要內存容量的 EC2 類的工作負載的標誌。相比之下,過度利用可能是使用內存不足的 Amazon EC2 類的工作負載的標誌。

下圖顯示示例 CloudWatch 度量配置,該配置使用自定義命名空間、添加的維度和聚合InstanceType

範例 CloudWatch 度量配置,該配置使用自定義命名空間、添加的維度和聚合InstanceType。