Amazon CloudWatch 功能

概觀

Amazon CloudWatch 是一種監控和管理服務,可以為 AWS、內部部署、混合及其他雲端應用程式和基礎設施資源提供資料和可行的洞察。您可以從單一平台以日誌和指標的形式收集和存取所有效能和操作資料,而不是在孤島 (伺服器、網路或資料庫) 中對其進行監控。使用 CloudWatch 可以監控整個堆疊 (應用程式、基礎設施、網路和服務),並使用警示、日誌和事件資料來執行自動操作,並縮短平均解決時間 (MTTR)。這樣就不會佔用重要的資源,讓您可以專注在建立應用程式和業務價值上。

CloudWatch 可為您提供可行的洞見,協助您優化應用程式效能、管理資源使用率,以及了解整個系統的運作狀態。CloudWatch 提供最多 1 秒的指標和日誌資料可見性、15 個月的資料保留期 (指標) 以及執行指標計算的能力。這樣您便可執行歷史分析以優化成本,並獲得有關優化應用程式和基礎設施資源的即時洞見。 您可以使用 CloudWatch Container Insights 來監控容器化應用程式和微型服務、對其進行疑難排解及發出提醒。CloudWatch 可收集、彙總和摘要顯示 CPU、記憶體、磁碟和網路資料等運算使用率資訊,以及容器重新啟動失敗之類的診斷資訊,以協助 DevOps 工程師找出問題並快速解決。Container Insights 可提供來自容器管理服務的詳情,例如 Amazon ECS for Kubernetes (EKS)、Amazon Elastic Container Service (ECS)、AWS Fargate 和獨立的 Kubernetes (k8s)。 

收集

Amazon CloudWatch Logs 服務能讓您以近乎即時的速度,收集和存放來自資源、應用程式和服務的日誌。日誌分成三大類︰

1) 付費日誌。這些都是由 AWS 服務代表您以原生方式發佈的。目前,有 Amazon VPC Flow Logs 和 Amazon Route 53 日誌兩種支援的類型。

2) AWS 服務發佈的日誌。目前超過 30 項 AWS 服務發佈日誌到 CloudWatch。這些服務包括 Amazon API Gateway、AWS Lambda、AWS CloudTrail 等等。

3) 自訂日誌。這些是來自您自己的應用程式和內部部署資源,以及來自其他雲端的日誌。

您可以使用 AWS Systems Manager 安裝 CloudWatch Agent,也可以使用 PutLogData API 動作輕鬆發佈日誌。

Amazon CloudWatch 可讓您從 70 多項 AWS 服務收集基礎設施指標,例如 Amazon Elastic Compute Cloud (Amazon EC2)、Amazon DynamoDB、Amazon Simple Storage Service (Amazon S3)、Amazon ECS、AWS Lambda 和 Amazon API Gateway,無須執行任何動作。例如,Amazon EC2 執行個體可自動發佈 CPU 使用率、資料傳輸和磁碟用量指標,協助您了解狀態的變化。您可以使用 API Gateway 的內建指標來偵測延遲,或使用 AWS Lambda 的內建指標來偵測錯誤或調節情況。同樣,Amazon CloudWatch 還允許您從自己的應用程式中收集應用程式指標 (例如使用者活動、錯誤指標或使用的記憶體),以監控操作效能、解決問題和發現趨勢。您可以使用 CloudWatch Agent 或 PutMetricData API 服務呼叫,將這些指標發佈到 CloudWatch。例如,如果您需要預設基礎設施指標以外更詳細的指標,如碎片層級 Amazon Kinesis Data Streams 指標,那麼您只需要依個別資源加入即可。同樣,應用程式指標最高可達一秒,可用於高解析度的統計、圖表和警示。

容器詳情簡化了收集和匯總專業指標及容器生態系統日誌的程序。此功能可從各個容器收集 CPU、記憶體、網路和磁碟資訊等運算效能指標,作為效能事件,並自動產生自訂指標,用於監控和警示。效能事件會導入為 CloudWatch Logs 以及有關執行環境 (例如 Amazon EC2 執行個體 ID、服務、Amazon Elastic Block Store (Amazon EBS) 磁碟區掛載和 ID) 的中繼資料,以簡化監控與疑難排解作業。系統會從這些導入日誌自動擷取 CloudWatch 自訂指標,並使用 CloudWatch Logs Insights 的進階查詢語言進一步分析。容器詳情也提供收集應用程式日誌 (stdout/stderr)、自訂日誌、預先定義的 Amazon EC2 執行個體日誌、Amazon EKS/k8s 資料平面日誌和 Amazon EKS 控制平面日誌的選項。若為 Amazon EKS 和 k8s 叢集,可使用預先設定的 FluentD 代理來收集您的日誌。查看容器詳情日誌設定文件了解更多詳細資訊。若為 Amazon ECS,可使用 Amazon CloudWatch Logs 記錄驅動程式Fluent Bit 來收集應用程式日誌。

CloudWatch Lambda Insights 簡化了透過 AWS Lambda 函數收集和彙總專業指標及日誌的程序。此功能可透過各個 Lambda 函數收集 CPU、記憶體、網路等運算效能指標作為效能事件,同時自動產生自訂指標,用於監控和警示。將效能事件作為 CloudWatch logs 來擷取,以簡化監控和疑難排解。系統會從這些導入日誌自動擷取 CloudWatch 自訂指標,並使用 CloudWatch Logs Insights 的進階查詢語言進一步分析。請參閱 Lambda Insights 入門文件了解詳細資訊。

Amazon CloudWatch 指標串流讓您能夠建立持續、近乎即時地串流至您所選目的地的指標。這讓使用 Amazon Kinesis Data Firehose HTTP 端點,以將 CloudWatch 指標傳送至常用的第三方服務供應商變得更加容易。您可以建立持續、可擴展的串流,其中包括最新的 CloudWatch 指標資料,以為儀表板、警示和其他依賴準確、及時指標資料的工具提供支援。輕鬆地將指標定向至 AWS 資料湖,例如 Amazon S3,並開始使用 Amazon Athena 等工具來分析用量或效能。

監控

您可以使用 CloudWatch 中的跨帳戶可觀測性,來觀察多個 AWS 帳戶中的資源。首先,將帳戶指派為來源帳戶,以識別包含受監控資源的帳戶。CloudWatch 會開始收集來源帳戶內資源的指標、日誌和追蹤,並將資料共用到監控帳戶,這是您指派的中央 AWS 帳戶,以檢視來源帳戶產生的可觀測性資料並與其互動。會收集日誌和指標資料並將其共用到監控帳戶,無須額外收費。針對追蹤資料,CloudWatch 會將第一份追蹤副本提供給首個監控帳戶,無須額外收費。如果您選擇將追蹤副本傳送至其他監控帳戶,以取得彙總的跨帳戶檢視,您的來源帳戶將根據標準 AWS X-Ray 和 Amazon CloudWatch 定價收費。追蹤副本可從每個來源帳戶傳送至多達五個監控帳戶

透過 Amazon CloudWatch 儀表板,您可以在整合的檢視中建立可重複使用的圖表,並以視覺化的方式查看雲端資源和應用程式。您可以在單一儀表板同時繪製指標和日誌資料圖表,以快速了解整個情況,並從診斷問題快速找出根本原因。例如,您可以視覺化 CPU 使用率和記憶體等關鍵指標,並將它們與容量進行比較。您也可以顯示特定指標的日誌模式關聯性,並設定警示以向您提醒效能和操作問題。這樣您就能看見整個系統的運作狀態並快速解決問題,縮短 MTTR。

透過 Amazon CloudWatch 複合警示,您可以合併多個警示並降低警示噪音。如果某個問題影響應用程式中的數個資源,您將會收到針對整個應用程式的單個警示通知,而非其中一個受影響資源。這可協助您專注於尋找營運問題的根本原因,以減少應用程式停機時間。您可提供一組資源的整體狀態,例如應用程式、AWS 區域或可用區域。

Amazon CloudWatch 警示可讓您設定指標的閾值,並觸發動作。您可以建立高解析度警示,將百分位數設定為統計數據,並指定動作或視情況予以忽略。例如,您可以在 Amazon EC2 指標上建立警示、設定通知,以及採取一或多個動作來偵測和關閉未使用或使用率偏低的執行個體。指標和事件的即時警示能讓您最大限度地減少停機時間和潛在的業務影響。

應用程式和基礎設施資源會以日誌和指標的形式,產生大量的操作和監控資料。除了讓您能夠在單一平台中存取和視覺化這些資料集之外,Amazon CloudWatch 還可以輕鬆建立其關聯性。這有助於您快速診斷問題並找出根本原因。例如,您可以建立日誌模式的關聯性 (例如特定指標的錯誤),並設定警示以向您提醒效能和操作問題。

Amazon CloudWatch Application Insights 為您的企業應用程式提供可觀察性的自動設定,因此您可以了解其運作狀態。它有助於在應用程式資源和技術堆疊 (如資料庫、Web (IIS) 和應用程式伺服器、作業系統、負載平衡器和佇列) 中識別和設定關鍵指標和日誌。它會持續監控此遙測資料,以偵測並關聯異常和錯誤,通知您有關應用程式中的任何問題。為協助進行疑難排解,它針對偵測到的相關指標異常和日誌錯誤問題建立自動儀表板,並提供其他見解,指出潛在的根本原因。這可讓您採取快速補救措施,確保您的應用程式正常運作,且最終使用者不受影響。

帶有增強 EKS 可觀測性的 Container Insights

Container Insights 現在提供詳細的 EKS 指標,例如容器層級效能指標、Kube 狀態指標和 EKS 控制平面指標,協助您直觀地深入了解各個容器層,輕鬆發現個別容器中的記憶體洩漏等問題。Container Insights 現在會顯示耗用大量資源的容器層清單,因此即使您尚未設定警示,也可以識別環境中的風險,並在最終使用者體驗受到影響之前主動採取措施。帶有增強 Amazon EKS 可觀測性的 Container Insights 提供簡易的入門體驗,其中可在叢集詳細資訊主控台上使用面向 EKS 的 CloudWatch 可觀測性附加元件自動檢測叢集,並立即開始擷取遙測資料。

Container Insights (沒有增強的可觀測性)

CloudWatch Container Insights 從您在 Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Kubernetes Service (Amazon EKS)、Amazon EC2 上的 Kubernetes 平台以及 AWS Fargate (適用於 Amazon ECS 和 Amazon EKS) 上執行的容器化應用程式和微型服務收集、彙總和總結指標與日誌。Container Insights 即時收集 CPU、記憶體、次得和網路指標等容器指標,並提供更深入的診斷資訊,例如容器重新開機失敗,以幫助您隔離並快速解決問題。Container Insights 可在自動儀表板中提供容器可觀測性,讓您輕鬆監控應用程式運作狀態和效能。您還可以針對 Container Insights 指標設定 CloudWatch 警示,以便在應用程式效能受到影響之前收到異常通知。

 

Internet Monitor 可讓您了解網際網路問題如何影響 AWS 託管的應用程式與最終使用者之間的效能和可用性,從而將您診斷這些問題所需的時間從數天縮短至幾分鐘。您可以探索不同時間範圍和不同地理粒度的測量結果,快速視覺化問題的影響,然後採取措施來改善最終使用者的體驗 (例如,透過切換至其他 AWS 服務或透過不同的 AWS 區域,將流量重新路由至您的工作負載)。如果問題由 AWS 網路引起,則您會自動收到 AWS Health 儀板表通知,告知您 AWS 正在採取的緩解問題的步驟。Internet Monitor 會向 CloudWatch 指標和 CloudWatch Logs 提供測量結果,以輕鬆支援整合應用程式特定地理位置和網路的健康資訊。Internet Monitor 還會將運作狀態事件傳送至 Amazon EventBridge,以便您設定通知。Internet Monitor 透過 Amazon Virtual Private Clouds (VPC)、Amazon CloudFront 分發和 Amazon WorkSpaces 目錄來監控您的應用程式。

Lambda Insights 可在 CloudWatch 主控台中提供自動儀表板。這些儀表板彙總了運算效能和錯誤。每個儀表板包含選定時間範圍內的指標清單,並讓您根據時段和選定的功能在相關內容中更深入地了解應用程式日誌、AWS X-Ray 追蹤和效能事件。

Amazon CloudWatch 異常偵測套用機器學習 (ML) 演算法,持續分析指標資料並識別異常行為。這可讓您建立警示,根據自然的指標模式,例如,一天中的時間、一週中的一天、季節性或趨勢變化,來自動調整臨界值。此外,您可以在儀表板上使用異常偵測區間來視覺化指標。這能讓您監控、隔離指標,並對預期之外的變更進行疑難排解。

您可使用 Amazon CloudWatch ServiceLens,在同一處視覺化及分析應用程式的運作狀態、效能及可用性。它結合 CloudWatch 指標和日誌,以及 AWS X-Ray 的追蹤功能,可協助您全面掌握您的應用程式及其相依項目。快速且精準地找出效能瓶頸、隔離應用程式問題的根本原因,以及確定對使用者的影響。CloudWatch ServiceLens 可讓您充分掌握應用程式的以下三個主要面向:基礎設施監控 (透過指標和日誌,了解支援您應用程式的資源)、交易監控 (透過追蹤功能,了解您資源之間的相依性),以及最終使用者監控 (使用 Canary 監控端點,並在最終使用者體驗不如預期時通知您)。CloudWatch ServiceLens 提供服務地圖,可視覺化您所有資源之間的關聯式連結,此外也提供直覺式界面,以便您深入了解相互關聯的監控資料。

Amazon CloudWatch Synthetics 可讓您更輕鬆地監控應用程式端點。它會在您的端點上全天候執行測試,並在其行為不符合預期時提醒您。您可自訂這些測試,針對可用性、延遲、交易、連結中斷或失效、逐步任務完成進度、頁面載入錯誤、UI 資產負載延遲、複雜的精靈操作程序,或應用程式中的結帳流程等方面,深入檢查。您也可使用 CloudWatch Synthetics 隔離發出警示的應用程式端點,對應回底層基礎設施問題,縮短 MTTR。透過這項新功能,CloudWatch 現在可以收集 Canary 流量,即使應用程式上沒有任何客戶流量,也能持續驗證客戶體驗,讓您比客戶更早發現問題。CloudWatch Synthetics 可支援監控您的 REST API、URL 及網站內容,透過檢查未經授權的變更,防範網路釣魚、程式碼注入和跨網站指令碼。

Amazon CloudWatch RUM 讓您能夠洞察應用程式的用戶端效能並降低 MTTR。它還讓您近乎即時地收集有關 Web 應用程式效能的用戶端資料,以識別問題並偵錯。CloudWatch RUM 補充了 CloudWatch Synthetics 資料,以便讓您更深入地洞察最終使用者體驗。您可以視覺化效能異常並使用相關偵錯資料 (例如錯誤訊息、堆疊追蹤和使用者工作階段) 來修復效能問題 (例如 JavaScript 錯誤、崩潰和延遲)。您還可以了解最終使用者影響的範圍,包括使用者數目、地理位置和瀏覽器。 CloudWatch RUM 可彙總使用者使用您的應用程式時的資料,這可以協助您確定要啟動哪些功能,以及要確定優先級的錯誤修復。

行動

Auto Scaling 可幫助您自動規劃容量和資源。您可以設定閾值以對關鍵指標發出警示,並觸發自動 Auto Scaling 動作。例如,您可以設定 Auto Scaling 工作流程,根據 CPU 使用率指標來新增或移除 EC2 執行個體,並優化資源成本。

CloudWatch Events 提供近乎即時的系統事件串流,以描述 AWS 資源的變化。它可讓您對操作變化快速地做出回應,並採取糾正措施。您只需編寫規則以指示應用程式有用的事件,以及當規則符合事件時要採取的自動化動作。例如,您可以設定一個規則來叫用 AWS Lambda 函數或通知 Amazon Simple Notification Service (Amazon SNS) 主題。

若為 Amazon EKS 和 k8s 叢集,容器詳情可讓您就運算指標設定警示,以觸發 Amazon EC2 Auto Scaling 群組的 Auto Scaling 原則,並讓您能夠停止、終止、重新啟動和還原任何 Amazon EC2 執行個體。若為 Amazon ECS 叢集,您可以將任務和服務的運算指標用於服務自動擴展。 

 

分析

Amazon CloudWatch 可讓您使用 15 個月的指標資料 (儲存和保留) 來監控趨勢和季節性。這可讓您執行歷史分析,以微調資源使用率。使用 CloudWatch,您也可以收集最多 1 秒的運作狀態指標,包括自訂指標 (例如來自內部部署應用程式的各項指標)。精細的即時資料有助於呈現更好的視覺化效果,並能夠發現和監控趨勢,以優化應用程式效能和運作狀態。

您可以使用 Amazon CloudWatch 指標數學執行跨多個指標的計算以進行即時分析,讓您可以輕鬆地從現有 CloudWatch 指標中獲取洞見,並更充分地了解基礎設施的運作狀態和效能。您可以在 AWS 管理主控台中以視覺化的方式查看這些算出的指標、將指標新增到 CloudWatch 儀表板,或使用 GetMetricData API 動作來擷取指標。指標數學支援算術操作 (例如 +、-、/、*) 和數學函數 (例如 Sum、Average、Min、Max 和 Standard Deviation)。

Amazon CloudWatch Logs Insights 可讓您從日誌得出可行的智慧,以解決操作問題,而無需佈建伺服器或管理軟體。您可以即時開始透過彙總、篩選條件和規則表達式撰寫查詢。此外,您可以視覺化時間序列資料,深入檢視個別日誌事件,並將查詢結果匯出至 CloudWatch 儀表板。這可為您提供完整的操作可見性。透過在 AWS 管理主控台中按几下,您可以開始使用 Logs Insights 查詢傳送至 CloudWatch 的日誌。只需按您執行的查詢付費。

使用 Amazon CloudWatch Logs Live Tail,客戶可以在收集的日誌上獲得互動式深入探索功能,以便在 Amazon CloudWatch Logs 中快速開始其資料探索和分析。Live Tail 允許客戶從中央主控台檢視其所有串流日誌資料,或者整合在他們每天用於部署、操作或安全調查的工具中。藉助 Live Tail,客戶可以在情境中啟動深入探索查詢,因此他們可以輕鬆地從使用 Live Tail 檢視來偵測問題,轉換為 CloudWatch Logs Insights 查詢體驗,進而深入探索和解決事件。Live Tail 可補充現有的 CloudWatch 分析功能,協助客戶縮短偵測和解決事件的時間。它消除了針對特殊記錄使用案例的多個自訂和第三方解決方案的依賴。

Container Insights 可使用 CloudWatch Logs Insights 的進階查詢語言,將深度連結從自動儀表板簡化為精細的效能事件、應用程式日誌 (stdout/stderr)、自訂日誌、預先定義的 Amazon EC2 執行個體日誌、Amazon EKS/k8s 資料平面日誌和 Amazon EKS 控制平面日誌,以簡化指標、日誌和追蹤的可見資料分析作業。

Lambda Insights 可使用 CloudWatch Logs Insights 的進階查詢語言,將深度連結從自動儀表板簡化為精細的效能事件、應用程式日誌和自訂日誌,以簡化指標、日誌和追蹤的可見資料分析作業。

Amazon CloudWatch 現已包括 Contributor Insights,能分析時序資料,以了解影響系統效能的最主要因素。一旦設定完成,Contributor Insights 就能持續執行,使用者無需另外介入。如此一來,開發人員和操作人員就能在發生操作事件時,更迅速地隔離、診斷及化解問題。Contributor Insights 可協助您了解影響系統和應用程式效能的人員或事件,例如特定資源、客戶帳戶或 API 呼叫。您可藉此精確找出異常行為、發掘負擔最大的流量模式,並為使用率最高的系統程序排名。您可建立 Contributor Insights 規則,在結構化日誌事件送入 CloudWatch Logs 中時評估其模式,其中包括來自 AWS 服務的日誌,例如 AWS CloudTrail、Amazon Virtual Private Cloud (Amazon VPC)、Amazon API Gateway,以及您服務或內部部署服務送出的任何自訂日誌,例如 Apache 存取日誌,以及來自其他雲端的日誌。Contributor Insights 會近乎即時地評估這些日誌事件並顯示報告,說明最主要的參與者,以及資料集中不重複計算的參與者數量。參與者是指以 CloudWatch Logs 中日誌欄所含維度為準的彙總指標,例如 VPC Flow Logs 中的 account-id 或 interface-id,或是其他任何自訂維度集。您可依照自訂條件排序及篩選參與者的資料。Contributor Insights 的報告資料可顯示於 CloudWatch 儀表板、與 CloudWatch 指標一併製成圖表,以及新增至 CloudWatch 警示。

Amazon CloudWatch Metrics Insights 是一種快速、靈活、以 SQL 為基礎的查詢引擎,讓您能夠近乎即時地識別數百萬個操作指標中的趨勢和模式。Metrics Insights 讓您能夠透過靈活的查詢和動態指標彙總,更好地洞察基礎設施和大規模應用程式的效能。Metrics Insights 查詢可用於建立強大的視覺化,協助您主動監控和快速查明問題,並減少 MTTR。 

Amazon CloudWatch Evidently 可讓應用程式開發人員在正式推出新功能之前進行實驗,並確定新功能的意外後果,從而降低與新功能推出相關的風險。 Evidently 可讓您在發佈之前驗證整個應用程式堆疊中的新功能,這使得發佈更安全。在推出新功能後,您可以將其展示給較小的使用者群體,監控頁面載入時間或轉化等關鍵指標,然後增加流量。Evidently 還允許您嘗試不同的設計,收集使用者資料,並在生產中發佈最有效的設計。 

 

合規和安全性

Amazon CloudWatch 已與 AWS Identity and Access Management (IAM) 整合,因此您可以控制哪些使用者與資源具有存取您資料的許可,以及他們的存取方式。

Amazon CloudWatch Logs 也符合 PCI 和 FedRamp 標準。資料可在靜態和傳輸中加密。您也可以使用 AWS Key Management Service (AWS KMS) 加密來加密日誌群組,以增加合規和安全性。

Amazon CloudWatch Logs 資料保護可協助您定義資料保護政策,以探索和保護系統和應用程式記錄的敏感資料。此功能可根據您定義的政策,使用 ML 和模式比對來自動識別和屏蔽日誌中的敏感資訊。資料保護可從應用程式中卸載資料保護邏輯,藉此來協助您簡化架構,同時支援您的合規目標。您可以定義資料保護政策,以擷取日誌時對其進行掃描,以確定其包含多少敏感資料,並屏蔽偵測到的敏感資料。安全工程師還可以透過 IAM 的提升權限,來揭露被屏蔽的資料以供驗證。