使用 CloudWatch Logs Insights 監控應用程式活動 - AWS 方案指引

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

使用 CloudWatch Logs Insights 監控應用程式活動

Ram Kandaswamy,Amazon Web Services

總結

此模式提供使用 Amazon CloudWatch Logs Insights 自動偵測和提醒應用程式例外狀況的解決方案。透過實作自動化日誌分析和提醒,您可以快速識別和回應生產環境中的應用程式問題。

日誌在監控系統行為、識別問題並確保最佳效能方面扮演重要角色。在遷移程序期間,日誌檔案對於驗證系統在新環境中的運作、偵測相容性問題,以及識別任何非預期行為來說非常寶貴。問題可能與操作或安全性有關。對於與安全相關的問題,儘早偵測未經授權的存取嘗試或可疑活動對於維護安全和法規合規至關重要。處理敏感資料或關鍵系統時,此功能特別重要。

對於需要執行下列動作的團隊來說,此模式特別重要:

  • 維持高可用性的應用程式。

  • 快速回應生產問題。

  • 分析 AWS 服務 日誌未擷取的應用程式特定錯誤。

  • 在沒有預先建置的基礎設施的情況下執行隨需日誌分析。

CloudWatch Logs Insights 最適合用於分析應用程式產生的日誌,其中錯誤內容僅存在於您的應用程式程式碼中。CloudWatch Logs Insights 擅長下列任務:

  • 查詢非結構化或半結構化日誌資料。

  • 在事件回應期間執行隨需分析。

  • 關聯多個日誌群組的事件。

  • 在沒有外部工具的情況下建立快速視覺化。

先決條件和限制

先決條件

  • 部署在作用中的生產應用程式 AWS 帳戶

  • 基本了解生產應用程式的記錄格式和例外狀況模式

  • 設定為串流至 Amazon CloudWatch Logs 的應用程式日誌

限制

Architecture

下圖顯示 CloudWatch Logs Insights 如何評估資源日誌,並將相關資料視覺化傳送至 CloudWatch 儀表板。

CloudWatch Logs Insights 會評估資源日誌,並將資料視覺化傳送至儀表板。

該圖顯示以下工作流程:

  1. 資源會將日誌發佈至 CloudWatch Logs。資源可以包含 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或 Amazon Simple Storage Service (Amazon S3) 儲存貯體等 AWS 資源。另一個範例包括已安裝 CloudWatch Agent 的內部部署系統,可將日誌發佈至 CloudWatch。

  2. 相關模式字串的 CloudWatch Logs Insights 篩選條件。搜尋模式字串的範例包括「錯誤」、「例外」或特定的規則表達式。

  3. 一般而言,生產支援團隊或開發人員會將模式視覺化新增至 CloudWatch 儀表板。

自動化和擴展

開發人員可以使用 AWS Cloud Development Kit (AWS CDK)、 或 AWS SDKs 來處理多個字串模式 AWS CloudFormation,來自動化此模式的解決方案。團隊可以將此自動化納入其持續整合和部署 (CI/CD) DevOps 程序。

工具

AWS 服務

最佳實務

查詢效率

安全性

成本最佳化

  • 每個查詢掃描的資料每 GB CloudWatch Logs Insights 費用。縮小時間範圍並鎖定特定日誌群組以降低成本。

  • 設定適當的日誌保留政策來管理儲存成本。

  • 若要經常分析大型歷史資料集,請考慮將日誌匯出至 Amazon S3 並使用 Amazon Athena。

  • 檢閱 CloudWatch 定價以了解使用案例的成本影響。

史詩

任務Description所需的技能

設定 IAM 許可。

若要設定 IAM 許可,請執行下列動作:

  1. 識別應用程式用於撰寫日誌的 IAM 角色,以及將建立儀表板、查詢和警示的使用者或服務。

  2. 針對應用程式角色,將下列 API 動作和資源新增至政策:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
  3. 若要管理 CloudWatch 資源,請將下列項目新增至政策:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutDashboard", "cloudwatch:GetDashboard", "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "cloudwatch:PutMetricAlarm" ], "Resource": "*" } ] }

如需如何建立 IAM 政策或將許可新增至現有政策的詳細資訊,請參閱《IAM 使用者指南》中的使用客戶受管政策定義自訂 IAM 許可編輯 IAM 政策如需詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的 Amazon CloudWatch Logs 的 Identity and Access Management 和 CloudWatch Logs 許可參考Amazon CloudWatch

AWS 管理員、AWS DevOps、AWS 系統管理員、雲端管理員、雲端架構師、DevOps 工程師

建立 日誌群組

若要建立日誌群組,請使用下列任一選項:

AWS 管理員、AWS DevOps、AWS 系統管理員、雲端管理員、雲端架構師、DevOps 工程師

產生 CloudWatch Logs Insights 查詢。

若要建立和儲存 CloudWatch Logs Insights 查詢,請執行下列動作:

  1. 開啟 CloudWatch 主控台。

  2. 導覽至 Logs Insights

  3. 使用下列其中一種方法來建立查詢:

    • 查詢區段的範例查詢開始。

    • 撰寫自訂查詢。

    • 修改下列範例查詢:

      fields @timestamp, @message | filter @message like /(?i)exception/|stats count() by bin(30s)

      此查詢會檢查日誌檔案、擷取時間戳記和訊息內容、篩選單字「例外」(不區分大小寫),並以 30 秒的間隔計數出現次數。

AWS 管理員、AWS DevOps、AWS 系統管理員、雲端管理員、雲端架構師、DevOps 工程師

在 CloudWatch 儀表板中建立視覺化。

若要使用 CloudWatch 儀表板建立視覺化效果,請執行下列動作:

  1. 開啟 CloudWatch 主控台,並建立 CloudWatch 儀表板 (如果您還沒有儀表板) 或開啟現有的儀表板。

  2. 新增您的例外狀況監控視覺化效果。根據您的業務需求,提供長條圖、折線圖和圓餅圖。如需詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的在 CloudWatch 儀表板上使用小工具Amazon CloudWatch 對於即時資料視覺化,您可以自訂小工具以符合您的需求。

如需儀表板選項和功能的詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的使用 Amazon CloudWatch 儀表板使用儀表板變數建立靈活的 CloudWatch CloudWatch 儀表板。 Amazon CloudWatch

AWS 管理員、AWS DevOps、AWS 系統管理員、雲端管理員、雲端架構師、DevOps 工程師

疑難排解

問題解決方案

找不到查詢結果或查詢似乎已中斷

從從範例查詢修改的工作查詢開始。對部分查詢 (例如篩選條件或欄位) 執行小型增量變更,並利用 CloudWatch Logs 查詢產生器功能

日誌群組未建立日誌串流

在 IAM 政策中,請確定 CreateLogStreamCreateLogGroup 操作的資源具有萬用字元(*)值。如果沒有此萬用字元許可,create 操作將無法成功。

查詢逾時或效能緩慢

減少時間範圍、鎖定特定日誌群組,或簡化查詢。複雜的規則表達式 (regex) 模式和大型時間範圍會增加查詢時間。

沒有傳回有效時間範圍的資料

驗證日誌群組選擇,並檢查日誌是否正在擷取 (檢閱日誌串流),並確認篩選條件模式與您的日誌格式相符。

相關資源