本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立排程查詢
建立排程查詢,以自動執行 CloudWatch Logs Insights 查詢,並將結果交付至您選擇的目的地。
先決條件
在建立排程查詢之前,請確定您有下列項目:
-
日誌群組 - 一或多個日誌群組,其中包含您要分析的資料
-
執行 IAM 角色 - 具有下列許可的 IAM 角色:
-
logs:StartQuery - 啟動 CloudWatch Logs Insights 查詢的許可
-
logs:GetQueryResults - 擷取查詢結果的許可
-
logs:DescribeLogGroups - 存取日誌群組資訊的許可。這僅適用於日誌群組探索的字首型日誌群組
-
目的地許可 - 所選目的地的其他 IAM 許可:
-
對於 AWS CLI 和 API 使用 - 具有呼叫 CloudWatch Logs APIs許可的已設定 AWS 登入資料
如需詳細的 IAM 政策範例,請參閱 適用於 Amazon CloudWatch Logs 的 Identity and Access Management。另請注意,每個帳戶只能有 1000 個排程查詢。
- Console
-
建立排程查詢 (主控台)
-
在 https://https://us-east-1.console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:logs-insights 開啟 CloudWatch Logs 主控台。
-
在導覽窗格中,選擇 Logs Insights。
-
選擇建立排程查詢。
-
在查詢定義區段中:
-
針對查詢語言,從清單中選擇要使用的查詢語言。
-
針對查詢字串,在方塊中輸入您的 CloudWatch Logs Insights 查詢。
-
對於日誌群組,從清單中選擇要查詢的日誌群組。
-
在排程設定區段中:
-
對於排程表達式,請在查詢執行時設定 。從預先定義的選項中選擇或輸入自訂 Cron 表達式。
-
對於建立時生效,請指定排程何時變成作用中。選擇立即開始,或使用 YYYY/MM/DD 格式在特定日期和時間開始。
-
針對時間範圍,指定每個查詢執行的回顧期間。以分鐘為單位輸入持續時間,以定義從執行時間開始查詢的時間。
-
對於無限期繼續,請指定排程何時結束。選擇無限期執行,或使用 YYYY/MM/DD 格式直到特定日期和時間。
-
主控台會根據您的組態顯示接下來三個排程的查詢執行,以 UTC 顯示執行查詢的確切日期和時間。
-
在將查詢結果發佈至 S3 - 選用區段中 (如果使用 S3 目的地):
-
對於 Amazon S3 URI,輸入將存放結果的 Amazon S3 儲存貯體和字首 (例如 s3://my-bucket/query-results/)。
-
選擇檢視 Amazon S3,在新索引標籤中開啟 Amazon S3 主控台,並驗證儲存貯體組態。
-
選擇瀏覽 Amazon S3,使用 Amazon S3 瀏覽器選取現有的 Amazon S3 位置。
-
在用於將查詢結果發佈至 Amazon S3 的 IAM 角色區段中:
-
針對選取 IAM 角色,選擇具有必要政策的現有 IAM 角色,或在 IAM 主控台中選擇建立新角色以建立新的角色。
-
使用搜尋欄位,從清單中選擇適當的 IAM 角色。
-
在排程查詢執行的 IAM 角色區段中:
-
針對選取 IAM 角色,選擇具有所需政策的現有 IAM 角色,或在 IAM 主控台中選擇建立新角色以建立新的角色。
-
使用搜尋欄位,從清單中選擇適當的 IAM 角色。
-
選擇建立排程以建立排程查詢。
- 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 會顯示所有排程查詢及其名稱、建立日期、上次執行狀態、上次觸發時間和重複頻率。