本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
儲存並重新執行 CloudWatch Logs Insights 查詢
建立查詢之後,可以儲存該查詢,以便之後再次執行。查詢會儲存在資料夾結構中,因此您可以組織它們。每個區域和每個帳戶最多可儲存 1000 個查詢。
查詢會儲存在區域特定層級,而非使用者特定層級。如果您建立並儲存查詢,在同一區域中具有 CloudWatch Logs 存取權的其他使用者可以查看該區域中所有已儲存的查詢及其資料夾結構。
若要儲存查詢,您必須登入具有許可 logs:PutQueryDefinition 的角色。若要查看已儲存查詢的清單,您必須登入具有許可 logs:DescribeQueryDefinitions 的角色。
注意
您可以使用 參數建立和儲存查詢 — 具有具名預留位置的可重複使用範本。與其使用不同的值儲存相同查詢的多個變化,請建立一個範本,並在執行時提供不同的參數值。此功能目前僅支援使用 Logs Insights 查詢語言的查詢。如需詳細資訊,請參閱搭配參數使用已儲存的查詢。
提示
您可以使用 PutQueryDefinition 建立已儲存查詢的資料夾。若要為儲存的查詢建立資料夾,請使用正斜線 (/) ,在所需查詢名稱前加上想要的資料夾名稱:<。如需有關此動作的詳細資訊,請參閱 PutQueryDefinition。folder-name>/<query-name>
儲存新版本的已儲存查詢
透過 https://console.aws.amazon.com/cloudwatch/
開啟 CloudWatch 主控台。 -
在導覽窗格中,選擇 Logs (日誌),然後選擇 Logs Insights (日誌洞察)。
-
選擇右側的 Queries (查詢)。
-
從 Saved queries (已儲存的查詢) 清單中選取查詢。它會出現在查詢編輯器中。
-
修改查詢。如果您需要執行該功能以檢查您的工作,請選擇 Run query (執行查詢)。
-
當您準備好儲存新版本,請選擇 Actions (動作)、Save as (另存新檔)。
-
輸入查詢的名稱。
-
(選用) 選擇您要儲存查詢的資料夾。選取 Create new (新建) 以建立資料夾。如果您建立新資料夾,您可以在資料夾名稱中使用斜線 (/) 字元,以定義資料夾結構。例如,命名新資料夾
folder-level-1/folder-level-2會建立名為folder-level-1的頂層資料夾,該資料夾中會有另一個資料夾名為folder-level-2。查詢會儲存在folder-level-2中。 -
(選用) 變更查詢的日誌群組或查詢文字。
-
選擇儲存。
若要刪除查詢,您必須登入具備 logs:DeleteQueryDefinition 許可的角色。
編輯或刪除已儲存的查詢
透過 https://console.aws.amazon.com/cloudwatch/
開啟 CloudWatch 主控台。 -
在導覽窗格中,選擇 Logs (日誌),然後選擇 Logs Insights (日誌洞察)。
-
選擇右側的 Queries (查詢)。
-
從 Saved queries (已儲存的查詢) 清單中選取查詢。它會出現在查詢編輯器中。
-
選擇 Actions (動作)、Edit (編輯) 或 Actions (動作)、Delete (刪除)。
搭配參數使用已儲存的查詢
具有參數的已儲存查詢是具有具名預留位置的可重複使用查詢範本。您可以儲存範本並在執行查詢時提供不同的參數值,而不是維護幾乎相同的查詢的多個副本。只有 CloudWatch Logs Insights 查詢語言才支援參數。
運作方式
儲存查詢時,預留位置會識別您可以在查詢執行時間提供的值。預留位置使用 {{parameterName}} 語法。以下是名為 且ErrorsByLevel具有兩個參數 logLevel和 的已儲存查詢範例applicationName。
fields @timestamp, @message | filter level = {{logLevel}} | filter applicationName = {{applicationName}}
若要執行儲存的查詢,您可以使用字首為 的查詢名稱來叫用它,$並傳遞參數值。CloudWatch Logs Insights 查詢引擎會取代每個預留位置。如果參數包含預設值,則如果未提供其他值,則會使用這些值。
# Run query by using query name and passing parameter values explicitly $ErrorsByLevel(logLevel = "WARN", applicationName = "OrderService") # Run query without specifying parameter values - default values are used in this case. $ErrorsByLevel()
包含空格或特殊字元的已儲存查詢名稱需要用反引號括住:
$`Errors By Level`(logLevel = "WARN")
具有參數的已儲存查詢範例
新增結果限制做為參數
查詢名稱:ErrorsByLevel含參數 logLevel(預設值:"ERROR")、 applicationName (預設值:"OrderService") 和 maxResults(預設值:50)
fields @timestamp, @message, @logStream | filter level = {{logLevel}} | filter applicationName = {{applicationName}} | sort @timestamp desc | limit {{maxResults}}
# Run the query using the query name and passing parameter values $ErrorsByLevel(logLevel = "WARN", applicationName = "OrderService", maxResults = 100)
搭配參數使用多個已儲存的查詢
以下範例使用 ErrorsByLevel和第二個儲存的查詢RecentN,其定義為 sort @timestamp desc | limit {{count}}(使用參數 count,預設 20)。CloudWatch Logs Insights 查詢引擎會在執行前展開每個查詢。
# Using multiple queries with parameters in sequence $ErrorsByLevel(logLevel = "WARN", applicationName = "OrderService") | $RecentN(count = 10) # Each of the queries is expanded, resulting in the following query when it is run. fields @timestamp, @message | filter level = "WARN" | filter applicationName = "OrderService" | sort @timestamp desc | limit 10
配額和錯誤處理
注意
每個儲存的查詢最多可有 20 個參數。
展開的查詢字串不能超過 10,000 個字元。參數名稱必須以字母或底線開頭。儲存的查詢無法參考另一個儲存的查詢 (不支援巢狀調用)。
| 錯誤 | 原因 |
|---|---|
只有 CWLI 查詢語言才支援參數 |
只有 CloudWatch Logs Insights 查詢語言才支援參數。 |
queryString 中找不到必要的參數 |
中的參數名稱在查詢字串 |
參數計數超過上限 20 |
儲存的查詢目前僅支援 20 個參數。 |
重複的參數名稱 |
查詢定義在 中有重複的參數 |
注意
若要使用參數建立或更新已儲存的查詢,您需要 logs:PutQueryDefinition許可。若要執行一個,您需要 logs:StartQuery和 logs:DescribeQueryDefinitions。