建立排程查詢 - Amazon CloudWatch Logs

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

建立排程查詢

建立排程查詢,以自動執行 CloudWatch Logs Insights 查詢,並將結果交付至您選擇的目的地。

先決條件

在建立排程查詢之前,請確定您有下列項目:

  • 日誌群組 - 一或多個日誌群組,其中包含您要分析的資料

  • 執行 IAM 角色 - 具有下列許可的 IAM 角色:

    • logs:StartQuery - 啟動 CloudWatch Logs Insights 查詢的許可

    • logs:GetQueryResults - 擷取查詢結果的許可

    • logs:DescribeLogGroups - 存取日誌群組資訊的許可。這僅適用於日誌群組探索的字首型日誌群組

  • 目的地許可 - 所選目的地的其他 IAM 許可:

    • 對於 Amazon S3 目的地: s3:PutObject

  • 對於 AWS CLI 和 API 使用 - 具有呼叫 CloudWatch Logs APIs許可的已設定 AWS 登入資料

如需詳細的 IAM 政策範例,請參閱 適用於 Amazon CloudWatch Logs 的 Identity and Access Management。另請注意,每個帳戶只能有 1000 個排程查詢。

Console
建立排程查詢 (主控台)
  1. 在 https://https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:logs-insights 開啟 CloudWatch Logs 主控台。

  2. 在導覽窗格中,選擇 Logs Insights

  3. 選擇建立排程查詢

  4. 查詢定義區段中:

    1. 針對查詢語言,從清單中選擇要使用的查詢語言。

    2. 針對查詢字串,在方塊中輸入您的 CloudWatch Logs Insights 查詢。

    3. 對於日誌群組,從清單中選擇要查詢的日誌群組。

  5. 排程設定區段中:

    1. 對於排程表達式,請在查詢執行時設定 。從預先定義的選項中選擇或輸入自訂 Cron 表達式。

    2. 對於建立時生效,請指定排程何時變成作用中。選擇立即開始,或使用 YYYY/MM/DD 格式在特定日期和時間開始。

    3. 針對時間範圍,指定每個查詢執行的回顧期間。以分鐘為單位輸入持續時間,以定義從執行時間開始查詢的時間。

    4. 對於無限期繼續,請指定排程何時結束。選擇無限期執行,或使用 YYYY/MM/DD 格式直到特定日期和時間。

  6. 主控台會根據您的組態顯示接下來三個排程的查詢執行,以 UTC 顯示執行查詢的確切日期和時間。

  7. 在將查詢結果發佈至 S3 - 選用區段中 (如果使用 S3 目的地):

    1. 對於 Amazon S3 URI,輸入將存放結果的 Amazon S3 儲存貯體和字首 (例如 s3://my-bucket/query-results/)。

    2. 選擇檢視 Amazon S3,在新索引標籤中開啟 Amazon S3 主控台,並驗證儲存貯體組態。

    3. 選擇瀏覽 Amazon S3,使用 Amazon S3 瀏覽器選取現有的 Amazon S3 位置。

  8. 用於將查詢結果發佈至 Amazon S3 的 IAM 角色區段中:

    1. 針對選取 IAM 角色,選擇具有必要政策的現有 IAM 角色,或在 IAM 主控台中選擇建立新角色以建立新的角色。

    2. 使用搜尋欄位,從清單中選擇適當的 IAM 角色。

  9. 排程查詢執行的 IAM 角色區段中:

    1. 針對選取 IAM 角色,選擇具有所需政策的現有 IAM 角色,或在 IAM 主控台中選擇建立新角色以建立新的角色。

    2. 使用搜尋欄位,從清單中選擇適當的 IAM 角色。

  10. 選擇建立排程以建立排程查詢。

AWS CLI
建立排程查詢 (AWS CLI)
  • 使用 create-scheduled-query命令建立新的排程查詢:

    aws logs create-scheduled-query \ --name "ErrorAnalysisQuery" \ --query-language "CWLI" \ --query-string "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)" \ --schedule-expression "cron(8 * * * ? *)" \ --execution-role-arn "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole" \ --log-group-identifiers "/aws/lambda/my-function" "/aws/apigateway/my-api" \ --state "ENABLED"
API
建立排程查詢 (API)
  • 使用 CreateScheduledQuery動作建立新的排程查詢。下列範例會建立每小時執行的排程查詢:

    { "name": "ErrorAnalysisQuery", "queryLanguage": "CWLI", "queryString": "fields @timestamp, @message | filter @message like /ERROR/ | stats count() by bin(5m)", "scheduleExpression": "cron(8 * * * ? *)", "executionRoleArn": "arn:aws:iam::123456789012:role/CloudWatchLogsScheduledQueryRole", "logGroupIdentifiers": ["/aws/lambda/my-function", "/aws/apigateway/my-api"], "state": "ENABLED" }

建立排程查詢後,您可以從排程查詢頁面並使用 ListScheduledQueries API 來檢視和管理它,該 API 會顯示所有排程查詢及其名稱、建立日期、上次執行狀態、上次觸發時間和重複頻率。