

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

# 使用 CloudWatch Metrics Insights 查詢您的 CloudWatch 指標
<a name="query_with_cloudwatch-metrics-insights"></a>

CloudWatch Metrics Insights 是功能強大的高效能 SQL 查詢引擎，可用來大規模查詢您的指標。您可以即時識別所有 CloudWatch 指標中的趨勢和模式，並存取最長兩週的歷史資料，以進行全面的趨勢分析。

您也可以在傳回單一時間序列的任何 Metrics Insights 查詢上設定警示。這對於建立警示來監看基礎結構或應用程式機群的彙總指標尤其有用。建立警示後，在資源新增至機群或從機群中移除時，它會動態進行調整。

 可以使用 CloudWatch Metrics Insights 查詢編輯器，在主控台中執行 CloudWatch Metrics Insights 查詢。您也可以透過執行 或 ，使用 AWS CLI 或 AWS SDK 執行 CloudWatch Metrics Insights `GetMetricData` 查詢`PutDashboard`。使用 CloudWatch Metrics Insights 查詢編輯器執行的查詢不會產生費用。如需 CloudWatch 定價的詳細資訊，請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。

 使用 CloudWatch Metrics Insights 查詢編輯器，您可以從各種預先建置的範例查詢中進行選擇，也可以建立自己的查詢。建立查詢時，可以使用建置器檢視來瀏覽現有的指標和維度。或者，使用編輯器檢視手動編寫查詢。

透過 Metrics Insights，可以大規模執行查詢。使用 **GROUP BY** 子句，可以按特定維度值將指標即時分組為單獨的時間序列。由於 Metrics Insights 查詢包含 **ORDER BY** 功能，因此您可以使用 Metrics Insights 進行 "Top N" 類型查詢。例如，"Top N" 類型查詢可以掃描您帳戶中的數百萬個指標，並傳回耗用最多 CPU 的 10 個執行個體。這可協助您精確找出應用程式中的延遲問題並加以修正。若要搭配警示使用標籤，請透過 CloudWatch 設定選擇加入。啟用標籤後，您也可以使用 AWS 資源標籤篩選和分組指標，讓您查詢與組織結構一致的指標，例如依應用程式、環境或團隊。

**Topics**
+ [在 CloudWatch Metrics Insights 中建置查詢](cloudwatch-metrics-insights-buildquery.md)
+ [CloudWatch Metrics Insights 中的查詢元件和語法](cloudwatch-metrics-insights-querylanguage.md)
+ [CloudWatch 中的 CloudWatch Metrics Insights 查詢警示](cloudwatch-metrics-insights-alarms.md)
+ [使用 Metrics Insights 查詢搭配指標數學](cloudwatch-metrics-insights-math.md)
+ [使用自然語言來產生和更新 CloudWatch Metrics Insights 查詢](cloudwatch-metrics-insights-query-assist.md)
+ [SQL 推斷](cloudwatch-metrics-insights-inference.md)
+ [Metrics Insights 配額](cloudwatch-metrics-insights-limits.md)
+ [Metrics Insights 範例查詢](cloudwatch-metrics-insights-queryexamples.md)
+ [Metrics Insights 字彙](cloudwatch-metrics-insights-glossary.md)
+ [對 Metrics Insights 進行疑難排解](cloudwatch-metrics-insights-troubleshooting.md)

# 在 CloudWatch Metrics Insights 中建置查詢
<a name="cloudwatch-metrics-insights-buildquery"></a>

您可以使用 CloudWatch 主控台 AWS CLI、 或 AWS SDKs 執行 CloudWatch Metrics Insights 查詢。在主控台中執行的查詢無需支付任何費用。如需 CloudWatch 定價的詳細資訊，請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。

使透過 CloudWatch Metrics Insights，您可以分析長達兩週之延伸時間段內的指標資料，相較於較短的保留期間，能進行更全面的歷史分析與趨勢識別。為了在查詢較長時間範圍的資料時保持效能最佳，請考慮使用較大的時間間隔 (例如 5 分鐘或 1 小時)，以減少返回的資料點數目。分析整兩週期間的趨勢時，請在 ORDER BY 子句中使用 AVG()、MAX() 等彙總函式，以有效識別模式。

如需使用 AWS SDKs執行 Metrics Insights 查詢的詳細資訊，請參閱 [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)。

若要使用 CloudWatch 主控台執行查詢，請依照下列步驟執行：

**使用 Metrics Insights 查詢指標**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Metrics** (指標)、**All metrics** (所有指標)。

1. (選用) 若要執行預先建置的範例查詢，請選擇 **Add query** (新增查詢)，然後選取要執行的查詢。如果您對此查詢感到滿意，則可以略過此處理程序的剩餘部分。或者，您也可以選擇 **Editor** (編輯器) 以編輯範例查詢，然後選擇 **Run** (執行) 來執行修改的查詢。

1. 若要建立自己的查詢，請選擇**多來源查詢**。然後，您可以使用**建置器**檢視 (預設) 取得引導式體驗，或者使用**編輯器**檢視查看查詢語法。您可以隨時在兩個檢視之間切換，並在兩個檢視中查看工作進度。

   在**建置器**檢視中，按一下命名空間、指標名稱、篩選條件、群組、順序和限制欄位，以瀏覽和選取可能的值。您可以開始輸入要尋找的值的任何部分，以篩選建置器所呈現的清單。可以在篩選條件和群組輸入中引用資源標籤。

   在**編輯器**檢視中，可以使用 Metrics Insights 支援的 SQL 子集來撰寫查詢。編輯器會根據您目前輸入的字元提供自動填寫選項，包括支援它們之指標的資源標籤名稱。

   CloudWatch Metrics Insights 支援依 AWS 資源標籤查詢指標。可以使用標籤對指標資料進行篩選和分組，以進行更精準的監控和分析。

   下列範例示範如何將查詢與標籤搭配使用。

   若要查看生產環境中 Amazon EC2 執行個體的 CPU 使用率：

   ```
   SELECT MAX(CPUUtilization) FROM SCHEMA("AWS/EC2") WHERE tag.env='prod'
   ```

   使用 GROUP BY 子句依環境對指標分組：

   ```
   SELECT MAX(CPUUtilization) FROM SCHEMA("AWS/EC2") GROUP BY tag.env
   ```

   若要使用您指定標籤名稱的 GROUP BY 子句：

   ```
   SELECT AVG(CPUUtilization) FROM "AWS/EC2" GROUP BY tag."aws:cloudformation:stack-name"
   ```

   若要結合標籤查詢與現有指標維度：

   ```
   SELECT MAX(CPUUtilization) FROM SCHEMA("AWS/EC2") WHERE tag.env='prod' AND InstanceId='i-1234567890abcdef0'
   ```

1. 當您對您的查詢感到滿意時，請選擇 **Run** (執行)。

1. (選用) 另一種編輯已繪製圖形的查詢方式是選擇 **Graphed metrics** (繪製指標) 索引標籤，然後選擇 **Details** (詳細資訊) 資料欄中查詢公式旁的編輯圖示。

1. (選用) 若要從繪製中移除查詢，請選擇 **Graphed metrics** (繪製指標)，然後選擇顯示查詢之列右側的 **X** 圖示。

# CloudWatch Metrics Insights 中的查詢元件和語法
<a name="cloudwatch-metrics-insights-querylanguage"></a>

CloudWatch Metrics Insights 語法如下。

```
SELECT FUNCTION(metricName)
FROM namespace | SCHEMA(...)
[ WHERE labelKey OPERATOR labelValue [AND ... ] ]
[ GROUP BY labelKey [ , ... ] ]
[ ORDER BY FUNCTION() [ DESC | ASC ] ]
[ LIMIT number ]
```

Metrics Insights 查詢中可能的子句如下。所有關鍵字皆不區分大小寫，但識別符 (例如指標名稱、命名空間和維度) 會區分大小寫。

**SELECT**  
必要. 指定用於彙總每個時段 (由提供的時段決定) 中之觀測值的函式。並指定要查詢的指標名稱。  
**FUNCTION** (函數) 的有效值是 `AVG`、`COUNT`、`MAX`、`MIN` 和 `SUM`。  
+ `AVG` 會計算查詢相符之觀察值的平均值。
+ `COUNT` 會傳回查詢相符之觀察值的計數。
+ `MAX` 會傳回查詢相符之觀察值的最大值。
+ `MIN` 會傳回查詢相符之觀察值的最小值。
+ `SUM` 會計算查詢相符之觀察值的加總。

**FROM**  
必要. 指定指標的來源。您可以指定包含要查詢之指標的指標命名空間，或 **SCHEMA** (結構描述) 資料表函數。指標命名空間的範例包括 `"AWS/EC2"`、`"AWS/Lambda"`，以及您為自訂指標建立的指標命名空間。  
其中包含 **/** 或任何其他非字母、數字或底線字元的指標命名空間，必須以雙引號括住。如需詳細資訊，請參閱[什麼需要引號或跳脫字元？](#cloudwatch-metrics-insights-syntaxdetails)。  
**結構描述**  
可選資料表函數，可以在 **FROM** (從) 子句中使用。使用 **SCHEMA** (結構描述)，將查詢結果範圍縮小為僅完全符合維度清單的指標，或是沒有維度的指標。  
如果您使用 **SCHEMA** (結構描述) 子句，其中必須至少包含一個引數，而且該第一個引數必須是要查詢的指標命名空間。如果您指定僅具有此命名空間引數的 **SCHEMA** (結構描述)，則結果的範圍縮小為僅限於沒有任何維度的指標。  
如果您指定具有其他引數的 **SCHEMA** (結構描述)，則命名空間引數之後的其他引數必須是*標籤*索引鍵。標籤索引鍵必須是維度名稱。如果您指定一或多個這些標籤索引鍵，則結果的範圍僅限於具有完全相同維度集的指標。這些標籤索引鍵的排序並不重要。  
例如：  
+ **SELECT AVG(CPUUtilization) FROM "AWS/EC2"** 符合 `AWS/EC2` 命名空間中的全部 `CPUUtilization` 指標，而無論其維度，並傳回單一彙總時間序列。
+ **SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2")** 僅符合沒有任何已定義維度之 `AWS/EC2` 命名空間中的 `CPUUtilization` 指標。
+ **SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId)** 僅符合回報給 CloudWatch 之具有一個維度 `InstanceId` 的 `CPUUtilization` 指標。
+ **SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)** 僅符合從 `AWS/ApplicationELB` 回報給 CloudWatch 之具有兩個維度 `LoadBalancer` 和 `AvailabilityZone` 的 `RequestCount` 指標。

**WHERE**  
選用。使用一或多個標籤索引鍵的特定標籤值，將結果篩選為僅符合指定表達式的指標。例如，**WHERE InstanceType = 'c3.4xlarge'** 將結果篩選為僅 `c3.4xlarge` 執行個體類型，並且 **WHERE InstanceType \$1= 'c3.4xlarge'** 將結果篩選為所有執行個體類型 (除外 `c3.4xlarge`)。  
當您在監控帳戶中執行查詢時，可以使用 `WHERE AWS.AccountId` 將結果僅限制給您指定的帳戶。例如，`WHERE AWS.AccountId=444455556666` 僅查詢來自帳戶 `444455556666` 的指標。若要將查詢僅限制給監控帳戶本身中的指標，請使用 `WHERE AWS.AccountId=CURRENT_ACCOUNT_ID()`。  
標籤值一律必須以單引號括住。  
**在 WHERE 子句中使用標籤**  
您可以使用語法 依 AWS 資源標籤篩選結果`tag.keyName`。標籤篩選條件遵循與維度篩選條件相同的運算子規則。例如：  
+ WHERE `tag.env = 'prod'` filters to metrics from resources tagged with *env=prod*
+ WHERE `tag.department != 'test'` excludes metrics from resources tagged with *department=test*
標籤篩選條件可與維度篩選條件結合：  
`WHERE tag.env = 'prod' AND InstanceType = 'm5.large'`  
**支援的運算子**  
**WHERE** (哪裡) 子句支援下列運算子：  
+ **=** 標籤值必須與指定字串相符。
+ **\$1=** 標籤值必須與指定字串不相符。
+ **AND** 指定的兩個條件都必須為 true 才能相符。您可以使用多個 **AND** 關鍵字來指定兩個或多個條件。

**GROUP BY**  
選用。將查詢結果分組為多個時間序列，每個時間序列對應於指定的標籤索引鍵或索引鍵的不同值。例如，使用 `GROUP BY InstanceId` 為每個 `InstanceId` 值傳回不同的時間序列。使用 `GROUP BY ServiceName, Operation` 為每個可能的 `ServiceName` 和 `Operation` 值組合建立不同的時間序列。  
使用 **GROUP BY** (分組依據) 子句，預設情況下，結果會根據 **GROUP BY** (分組依據) 子句中指定的標籤序列按字母升冪排序。若要變更結果排序，請新增 **ORDER BY** (排序依據) 子句至您的查詢。  
當您在監控帳戶中執行查詢時，可以使用 `GROUP BY AWS.AccountId` 根據結果來自的帳戶對結果進行分組。  
**在 GROUP BY 子句中使用標籤**  
您可以使用語法 依 AWS 資源標籤值將結果分組`tag.keyName`。例如：  
+ *GROUP BY tag.environment* 為每個環境標籤值建立獨立的時間序列
+ *GROUP BY tag.team, InstanceType* 依標籤和維度值分組
+ *GROUP BY tag.team, AWS.AccountId* 依標籤和連結的來源 AccountID 分組
如果某些相符指標並未包含 **GROUP BY** (分組依據) 子句中指定的特定標籤索引鍵，則會傳回名為 `Other` 的空值群組。例如，如果您指定 `GROUP BY ServiceName, Operation`，且某些傳回的指標不包含 `ServiceName` 作為維度，則這些指標會顯示為像 `ServiceName` 值一樣擁有 `Other`。

**ORDER BY**  
選用。如果查詢傳回一個以上的時間序列，則請指定要用於傳回之時間序列的排序。順序是基於您在 **ORDER BY** (排序依據) 子句中指定的 **FUNCTION** (函數) 所找到的值而定。**FUNCTION** (函數) 用於從每個傳回的時間序列計算單個純量值，並且該值用於確定排序。  
您也可以指定是否使用升冪 **ASC** 或降冪 **DESC** 排序。如果您省略此參數，則預設為升冪 **ASC**。  
例如，新增 `ORDER BY MAX() DESC` 子句會依照時間範圍內觀察到的最大資料點來降冪排序結果：表示會先傳回具有最高最大資料點的時間序列。  
在 **ORDER BY** (排序依據) 子句中使用的有效函數是 `AVG()`、`COUNT()`、`MAX()`、`MIN()` 和 `SUM()`。  
如果您將 **ORDER BY** (排序依據) 子句與 **LIMIT** (限制) 子句搭配使用，則產生的查詢是「前 N」查詢。**ORDER BY** (排序依據) 對可能會傳回大量指標的查詢也很有用，因為每個查詢可傳回不超過 500 個時間序列。如果查詢符合 500 個以上的時間序列，並且您使用 **ORDER BY** (排序依據) 子句，則會排序時間序列，然後排序順序中前 500 個時間序列就是傳回的時間序列。

**LIMIT**  
選用。將查詢傳回的時間序列數量限制為您指定的值。您可以指定的最大值是 500，未指定 **LIMIT** (限制) 的查詢也可以傳回不超過 500 個時間序列。  
將 **LIMIT** (限制) 子句與 **ORDER BY** (排序依據) 子句搭配使用會為您提供「前 N」查詢。

## 什麼需要引號或跳脫字元？
<a name="cloudwatch-metrics-insights-syntaxdetails"></a>

在查詢中，標籤值一律必須以單引號括住。例如，**SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE AutoScalingGroupName = 'my-production-fleet'**。

包含字母、數字和底線 (\$1) 以外字元的指標命名空間、指標名稱和標籤索引鍵必須以雙引號括住。例如，**SELECT MAX("My.Metric")**。

如果其中一個本身即包含雙引號或單引號 (例如 `Bytes"Input"`)，則必須使用反斜線跳脫每個引號，如 **SELECT AVG("Bytes\$1"Input\$1"")**。

如果指標命名空間、指標名稱或標籤索引鍵包含在 Metrics Insights 中保留關鍵字的文字，則這些文字也必須以雙引號括住。例如，如果您的指標名為 `LIMIT`，則您可以使用 `SELECT AVG("LIMIT")`。也可以用雙引號括住任何命名空間、指標名稱或標籤，即使其不包含保留的關鍵字也一樣。

如需保留關鍵字的完整清單，請參閱 [保留的關鍵字](cloudwatch-metrics-insights-reserved-keywords.md)。

## 逐步建置豐富的查詢
<a name="cloudwatch-metrics-insights-syntaxexample"></a>

本節將逐步說明建置使用所有可能子句的完整範例。

可以從以下查詢開始，其彙總了以 `LoadBalancer` 和 `AvailabilityZone` 維度收集的所有 Application Load Balancer `RequestCount` 指標。

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
```

若要檢視來自特定負載平衡器的指標，可以新增 **WHERE** 子句，將傳回的指標限制為僅 `LoadBalancer` 維度值為 `app/load-balancer-1` 的指標。

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
```

之前的查詢會將來自此負載平衡器的所有可用區域的 `RequestCount` 指標彙總至一個時間序列。如果想查看每個可用區域的不同時間序列，可以新增 **GROUP BY** 子句。

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
GROUP BY AvailabilityZone
```

接下來，您可以對結果排序，以便先看到最高值。以下 **ORDER BY** (排序依據) 子句按查詢時間範圍內每個時間序列回報的最大值，以降冪排序時間序列：

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
GROUP BY AvailabilityZone
ORDER BY MAX() DESC
```

也可以使用標籤來進一步篩選結果。例如，如果您只想查看帶特定環境標籤的負載平衡器的結果，可以將標籤篩選新增至 WHERE 子句：

```
SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1' AND tag.Environment = 'prod' GROUP BY AvailabilityZone ORDER BY MAX() DESC
```

也可以依標籤值對結果分組，而非 (或除了) 維度。例如，依應用程式標籤分組：

```
SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE tag.Environment = 'prod' GROUP BY tag.Application ORDER BY MAX() DESC
```

最後，如果主要對「前 N」類型的查詢感興趣，我們可以使用 **LIMIT** (限制) 子句。這最後一個範例將結果限制為僅具有五個最高 `MAX` 值的時間序列。

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
GROUP BY AvailabilityZone
ORDER BY MAX() DESC
LIMIT 5
```

## 跨帳戶查詢範例
<a name="cloudwatch-metrics-insights-crossaccount"></a>

當在 CloudWatch 跨帳戶可觀測性中設定為監控帳戶的帳戶中執行時，這些範例有效。

下列範例會搜尋來源帳戶 123456789012 中的所有 Amazon EC2 執行個體，並傳回平均值。

```
SELECT AVG(CpuUtilization) 
FROM "AWS/EC2" 
WHERE AWS.AccountId ='123456789012'
```

下列範例會在所有連結的來源帳戶的 `AWS/EC2` 中查詢 `CPUUtilization` 指標，並依帳戶 ID 和執行個體類型將結果分組。

```
SELECT AVG(CpuUtilization) 
FROM "AWS/EC2" 
GROUP BY AWS.AccountId, InstanceType
```

下列範例會在監控帳戶本身中查詢 `CPUUtilization`。

```
SELECT AVG(CpuUtilization) 
FROM "AWS/EC2" 
WHERE AWS.AccountId = CURRENT_ACCOUNT_ID()
```

# 保留的關鍵字
<a name="cloudwatch-metrics-insights-reserved-keywords"></a>

以下是 CloudWatch Metrics Insights 中的保留關鍵字。如果查詢中的命名空間、指標名稱或標籤索引鍵中包含任何這些關鍵字，則您必須以雙引號將其括住。保留的關鍵字不區分大小寫。

```
"ABORT" "ABORTSESSION" "ABS" "ABSOLUTE" "ACCESS" "ACCESSIBLE" "ACCESS_LOCK" "ACCOUNT" "ACOS" "ACOSH" "ACTION" "ADD" "ADD_MONTHS"
"ADMIN" "AFTER" "AGGREGATE" "ALIAS" "ALL" "ALLOCATE" "ALLOW" "ALTER" "ALTERAND" "AMP" "ANALYSE" "ANALYZE" "AND" "ANSIDATE" "ANY" "ARE" "ARRAY",
"ARRAY_AGG" "ARRAY_EXISTS" "ARRAY_MAX_CARDINALITY" "AS" "ASC" "ASENSITIVE" "ASIN" "ASINH" "ASSERTION" "ASSOCIATE" "ASUTIME" "ASYMMETRIC" "AT",
"ATAN" "ATAN2" "ATANH" "ATOMIC" "AUDIT" "AUTHORIZATION" "AUX" "AUXILIARY" "AVE" "AVERAGE" "AVG" "BACKUP" "BEFORE" "BEGIN" "BEGIN_FRAME" "BEGIN_PARTITION",
"BETWEEN" "BIGINT" "BINARY" "BIT" "BLOB" "BOOLEAN" "BOTH" "BREADTH" "BREAK" "BROWSE" "BT" "BUFFERPOOL" "BULK" "BUT" "BY" "BYTE" "BYTEINT" "BYTES" "CALL",
"CALLED" "CAPTURE" "CARDINALITY" "CASCADE" "CASCADED" "CASE" "CASESPECIFIC" "CASE_N" "CAST" "CATALOG" "CCSID" "CD" "CEIL" "CEILING" "CHANGE" "CHAR",
"CHAR2HEXINT" "CHARACTER" "CHARACTERS" "CHARACTER_LENGTH" "CHARS" "CHAR_LENGTH" "CHECK" "CHECKPOINT" "CLASS" "CLASSIFIER" "CLOB" "CLONE" "CLOSE" "CLUSTER",
"CLUSTERED" "CM" "COALESCE" "COLLATE" "COLLATION" "COLLECT" "COLLECTION" "COLLID" "COLUMN" "COLUMN_VALUE" "COMMENT" "COMMIT" "COMPLETION" "COMPRESS" "COMPUTE",
"CONCAT" "CONCURRENTLY" "CONDITION" "CONNECT" "CONNECTION" "CONSTRAINT" "CONSTRAINTS" "CONSTRUCTOR" "CONTAINS" "CONTAINSTABLE" "CONTENT" "CONTINUE" "CONVERT",
"CONVERT_TABLE_HEADER" "COPY" "CORR" "CORRESPONDING" "COS" "COSH" "COUNT" "COVAR_POP" "COVAR_SAMP" "CREATE" "CROSS" "CS" "CSUM" "CT" "CUBE" "CUME_DIST",
"CURRENT" "CURRENT_CATALOG" "CURRENT_DATE" "CURRENT_DEFAULT_TRANSFORM_GROUP" "CURRENT_LC_CTYPE" "CURRENT_PATH" "CURRENT_ROLE" "CURRENT_ROW" "CURRENT_SCHEMA",
"CURRENT_SERVER" "CURRENT_TIME" "CURRENT_TIMESTAMP" "CURRENT_TIMEZONE" "CURRENT_TRANSFORM_GROUP_FOR_TYPE" "CURRENT_USER" "CURRVAL" "CURSOR" "CV" "CYCLE" "DATA",
"DATABASE" "DATABASES" "DATABLOCKSIZE" "DATE" "DATEFORM" "DAY" "DAYS" "DAY_HOUR" "DAY_MICROSECOND" "DAY_MINUTE" "DAY_SECOND" "DBCC" "DBINFO" "DEALLOCATE" "DEC",
"DECFLOAT" "DECIMAL" "DECLARE" "DEFAULT" "DEFERRABLE" "DEFERRED" "DEFINE" "DEGREES" "DEL" "DELAYED" "DELETE" "DENSE_RANK" "DENY" "DEPTH" "DEREF" "DESC" "DESCRIBE",
"DESCRIPTOR" "DESTROY" "DESTRUCTOR" "DETERMINISTIC" "DIAGNOSTIC" "DIAGNOSTICS" "DICTIONARY" "DISABLE" "DISABLED" "DISALLOW" "DISCONNECT" "DISK" "DISTINCT",
"DISTINCTROW" "DISTRIBUTED" "DIV" "DO" "DOCUMENT" "DOMAIN" "DOUBLE" "DROP" "DSSIZE" "DUAL" "DUMP" "DYNAMIC" "EACH" "ECHO" "EDITPROC" "ELEMENT" "ELSE" "ELSEIF",
"EMPTY" "ENABLED" "ENCLOSED" "ENCODING" "ENCRYPTION" "END" "END-EXEC" "ENDING" "END_FRAME" "END_PARTITION" "EQ" "EQUALS" "ERASE" "ERRLVL" "ERROR" "ERRORFILES",
"ERRORTABLES" "ESCAPE" "ESCAPED" "ET" "EVERY" "EXCEPT" "EXCEPTION" "EXCLUSIVE" "EXEC" "EXECUTE" "EXISTS" "EXIT" "EXP" "EXPLAIN" "EXTERNAL" "EXTRACT" "FALLBACK
"FALSE" "FASTEXPORT" "FENCED" "FETCH" "FIELDPROC" "FILE" "FILLFACTOR" "FILTER" "FINAL" "FIRST" "FIRST_VALUE" "FLOAT" "FLOAT4" "FLOAT8" "FLOOR" 
"FOR" "FORCE" "FOREIGN" "FORMAT" "FOUND" "FRAME_ROW" "FREE" "FREESPACE" "FREETEXT" "FREETEXTTABLE" "FREEZE" "FROM" "FULL" "FULLTEXT" "FUNCTION" 
"FUSION" "GE" "GENERAL" "GENERATED" "GET" "GIVE" "GLOBAL" "GO" "GOTO" "GRANT" "GRAPHIC" "GROUP" "GROUPING" "GROUPS" "GT" "HANDLER" "HASH" 
"HASHAMP" "HASHBAKAMP" "HASHBUCKET" "HASHROW" "HAVING" "HELP" "HIGH_PRIORITY" "HOLD" "HOLDLOCK" "HOUR" "HOURS" "HOUR_MICROSECOND" "HOUR_MINUTE" 
"HOUR_SECOND" "IDENTIFIED" "IDENTITY" "IDENTITYCOL" "IDENTITY_INSERT" "IF" "IGNORE" "ILIKE" "IMMEDIATE" "IN" "INCLUSIVE" "INCONSISTENT" "INCREMENT" 
"INDEX" "INDICATOR" "INFILE" "INHERIT" "INITIAL" "INITIALIZE" "INITIALLY" "INITIATE" "INNER" "INOUT" "INPUT" "INS" "INSENSITIVE" "INSERT" "INSTEAD" 
"INT" "INT1" "INT2" "INT3" "INT4" "INT8" "INTEGER" "INTEGERDATE" "INTERSECT" "INTERSECTION" "INTERVAL" "INTO" "IO_AFTER_GTIDS" "IO_BEFORE_GTIDS" 
"IS" "ISNULL" "ISOBID" "ISOLATION" "ITERATE" "JAR" "JOIN" "JOURNAL" "JSON_ARRAY" "JSON_ARRAYAGG" "JSON_EXISTS" "JSON_OBJECT" "JSON_OBJECTAGG" 
"JSON_QUERY" "JSON_TABLE" "JSON_TABLE_PRIMITIVE" "JSON_VALUE" "KEEP" "KEY" "KEYS" "KILL" "KURTOSIS" "LABEL" "LAG" "LANGUAGE" "LARGE" "LAST" 
"LAST_VALUE" "LATERAL" "LC_CTYPE" "LE" "LEAD" "LEADING" "LEAVE" "LEFT" "LESS" "LEVEL" "LIKE" "LIKE_REGEX" "LIMIT" "LINEAR" "LINENO" "LINES" 
"LISTAGG" "LN" "LOAD" "LOADING" "LOCAL" "LOCALE" "LOCALTIME" "LOCALTIMESTAMP" "LOCATOR" "LOCATORS" "LOCK" "LOCKING" "LOCKMAX" "LOCKSIZE" "LOG" 
"LOG10" "LOGGING" "LOGON" "LONG" "LONGBLOB" "LONGTEXT" "LOOP" "LOWER" "LOW_PRIORITY" "LT" "MACRO" "MAINTAINED" "MAP" "MASTER_BIND" 
"MASTER_SSL_VERIFY_SERVER_CERT" "MATCH" "MATCHES" "MATCH_NUMBER" "MATCH_RECOGNIZE" "MATERIALIZED" "MAVG" "MAX" "MAXEXTENTS" "MAXIMUM" "MAXVALUE" 
"MCHARACTERS" "MDIFF" "MEDIUMBLOB" "MEDIUMINT" "MEDIUMTEXT" "MEMBER" "MERGE" "METHOD" "MICROSECOND" "MICROSECONDS" "MIDDLEINT" "MIN" "MINDEX" 
"MINIMUM" "MINUS" "MINUTE" "MINUTES" "MINUTE_MICROSECOND" "MINUTE_SECOND" "MLINREG" "MLOAD" "MLSLABEL" "MOD" "MODE" "MODIFIES" "MODIFY" 
"MODULE" "MONITOR" "MONRESOURCE" "MONSESSION" "MONTH" "MONTHS" "MSUBSTR" "MSUM" "MULTISET" "NAMED" "NAMES" "NATIONAL" "NATURAL" "NCHAR" "NCLOB" 
"NE" "NESTED_TABLE_ID" "NEW" "NEW_TABLE" "NEXT" "NEXTVAL" "NO" "NOAUDIT" "NOCHECK" "NOCOMPRESS" "NONCLUSTERED" "NONE" "NORMALIZE" "NOT" "NOTNULL" 
"NOWAIT" "NO_WRITE_TO_BINLOG" "NTH_VALUE" "NTILE" "NULL" "NULLIF" "NULLIFZERO" "NULLS" "NUMBER" "NUMERIC" "NUMPARTS" "OBID" "OBJECT" "OBJECTS" 
"OCCURRENCES_REGEX" "OCTET_LENGTH" "OF" "OFF" "OFFLINE" "OFFSET" "OFFSETS" "OLD" "OLD_TABLE" "OMIT" "ON" "ONE" "ONLINE" "ONLY" "OPEN" "OPENDATASOURCE" 
"OPENQUERY" "OPENROWSET" "OPENXML" "OPERATION" "OPTIMIZATION" "OPTIMIZE" "OPTIMIZER_COSTS" "OPTION" "OPTIONALLY" "OR" "ORDER" "ORDINALITY" "ORGANIZATION" 
"OUT" "OUTER" "OUTFILE" "OUTPUT" "OVER" "OVERLAPS" "OVERLAY" "OVERRIDE" "PACKAGE" "PAD" "PADDED" "PARAMETER" "PARAMETERS" "PART" "PARTIAL" "PARTITION" 
"PARTITIONED" "PARTITIONING" "PASSWORD" "PATH" "PATTERN" "PCTFREE" "PER" "PERCENT" "PERCENTILE" "PERCENTILE_CONT" "PERCENTILE_DISC" "PERCENT_RANK" "PERIOD" "PERM" 
"PERMANENT" "PIECESIZE" "PIVOT" "PLACING" "PLAN" "PORTION" "POSITION" "POSITION_REGEX" "POSTFIX" "POWER" "PRECEDES" "PRECISION" "PREFIX" "PREORDER" 
"PREPARE" "PRESERVE" "PREVVAL" "PRIMARY" "PRINT" "PRIOR" "PRIQTY" "PRIVATE" "PRIVILEGES" "PROC" "PROCEDURE" "PROFILE" "PROGRAM" "PROPORTIONAL" 
"PROTECTION" "PSID" "PTF" "PUBLIC" "PURGE" "QUALIFIED" "QUALIFY" "QUANTILE" "QUERY" "QUERYNO" "RADIANS" "RAISERROR" "RANDOM" "RANGE" "RANGE_N" "RANK" 
"RAW" "READ" "READS" "READTEXT" "READ_WRITE" "REAL" "RECONFIGURE" "RECURSIVE" "REF" "REFERENCES" "REFERENCING" "REFRESH" "REGEXP" "REGR_AVGX" "REGR_AVGY" 
"REGR_COUNT" "REGR_INTERCEPT" "REGR_R2" "REGR_SLOPE" "REGR_SXX" "REGR_SXY" "REGR_SYY" "RELATIVE" "RELEASE" "RENAME" "REPEAT" "REPLACE" "REPLICATION" 
"REPOVERRIDE" "REQUEST" "REQUIRE" "RESIGNAL" "RESOURCE" "RESTART" "RESTORE" "RESTRICT" "RESULT" "RESULT_SET_LOCATOR" "RESUME" "RET" "RETRIEVE" "RETURN" 
"RETURNING" "RETURNS" "REVALIDATE" "REVERT" "REVOKE" "RIGHT" "RIGHTS" "RLIKE" "ROLE" "ROLLBACK" "ROLLFORWARD" "ROLLUP" "ROUND_CEILING" "ROUND_DOWN" 
"ROUND_FLOOR" "ROUND_HALF_DOWN" "ROUND_HALF_EVEN" "ROUND_HALF_UP" "ROUND_UP" "ROUTINE" "ROW" "ROWCOUNT" "ROWGUIDCOL" "ROWID" "ROWNUM" "ROWS" "ROWSET" 
"ROW_NUMBER" "RULE" "RUN" "RUNNING" "SAMPLE" "SAMPLEID" "SAVE" "SAVEPOINT" "SCHEMA" "SCHEMAS" "SCOPE" "SCRATCHPAD" "SCROLL" "SEARCH" "SECOND" "SECONDS" 
"SECOND_MICROSECOND" "SECQTY" "SECTION" "SECURITY" "SECURITYAUDIT" "SEEK" "SEL" "SELECT" "SEMANTICKEYPHRASETABLE" "SEMANTICSIMILARITYDETAILSTABLE" 
"SEMANTICSIMILARITYTABLE" "SENSITIVE" "SEPARATOR" "SEQUENCE" "SESSION" "SESSION_USER" "SET" "SETRESRATE" "SETS" "SETSESSRATE" "SETUSER" "SHARE" "SHOW" 
"SHUTDOWN" "SIGNAL" "SIMILAR" "SIMPLE" "SIN" "SINH" "SIZE" "SKEW" "SKIP" "SMALLINT" "SOME" "SOUNDEX" "SOURCE" "SPACE" "SPATIAL" "SPECIFIC" "SPECIFICTYPE" 
"SPOOL" "SQL" "SQLEXCEPTION" "SQLSTATE" "SQLTEXT" "SQLWARNING" "SQL_BIG_RESULT" "SQL_CALC_FOUND_ROWS" "SQL_SMALL_RESULT" "SQRT" "SS" "SSL" "STANDARD" 
"START" "STARTING" "STARTUP" "STAT" "STATE" "STATEMENT" "STATIC" "STATISTICS" "STAY" "STDDEV_POP" "STDDEV_SAMP" "STEPINFO" "STOGROUP" "STORED" "STORES" 
"STRAIGHT_JOIN" "STRING_CS" "STRUCTURE" "STYLE" "SUBMULTISET" "SUBSCRIBER" "SUBSET" "SUBSTR" "SUBSTRING" "SUBSTRING_REGEX" "SUCCEEDS" "SUCCESSFUL" 
"SUM" "SUMMARY" "SUSPEND" "SYMMETRIC" "SYNONYM" "SYSDATE" "SYSTEM" "SYSTEM_TIME" "SYSTEM_USER" "SYSTIMESTAMP" "TABLE" "TABLESAMPLE" "TABLESPACE" "TAN" 
"TANH" "TBL_CS" "TEMPORARY" "TERMINATE" "TERMINATED" "TEXTSIZE" "THAN" "THEN" "THRESHOLD" "TIME" "TIMESTAMP" "TIMEZONE_HOUR" "TIMEZONE_MINUTE" "TINYBLOB" 
"TINYINT" "TINYTEXT" "TITLE" "TO" "TOP" "TRACE" "TRAILING" "TRAN" "TRANSACTION" "TRANSLATE" "TRANSLATE_CHK" "TRANSLATE_REGEX" "TRANSLATION" "TREAT" 
"TRIGGER" "TRIM" "TRIM_ARRAY" "TRUE" "TRUNCATE" "TRY_CONVERT" "TSEQUAL" "TYPE" "UC" "UESCAPE" "UID" "UNDEFINED" "UNDER" "UNDO" "UNION" "UNIQUE" 
"UNKNOWN" "UNLOCK" "UNNEST" "UNPIVOT" "UNSIGNED" "UNTIL" "UPD" "UPDATE" "UPDATETEXT" "UPPER" "UPPERCASE" "USAGE" "USE" "USER" "USING" "UTC_DATE" 
"UTC_TIME" "UTC_TIMESTAMP" "VALIDATE" "VALIDPROC" "VALUE" "VALUES" "VALUE_OF" "VARBINARY" "VARBYTE" "VARCHAR" "VARCHAR2" "VARCHARACTER" "VARGRAPHIC" 
"VARIABLE" "VARIADIC" "VARIANT" "VARYING" "VAR_POP" "VAR_SAMP" "VCAT" "VERBOSE" "VERSIONING" "VIEW" "VIRTUAL" "VOLATILE" "VOLUMES" "WAIT" "WAITFOR" 
"WHEN" "WHENEVER" "WHERE" "WHILE" "WIDTH_BUCKET" "WINDOW" "WITH" "WITHIN" "WITHIN_GROUP" "WITHOUT" "WLM" "WORK" "WRITE" "WRITETEXT" "XMLCAST" "XMLEXISTS" 
"XMLNAMESPACES" "XOR" "YEAR" "YEARS" "YEAR_MONTH" "ZEROFILL" "ZEROIFNULL" "ZONE"
```

# CloudWatch 中的 CloudWatch Metrics Insights 查詢警示
<a name="cloudwatch-metrics-insights-alarms"></a>

您可在 Metrics Insights 查詢上建立警示。這有助您讓警示追蹤多個資源，且之後亦無需更新。查詢會擷取新資源和變更的資源。例如，您可以建立警示，以監看機群的 CPU 使用率，且該警示會自動評估您在警示建立後啟動的新執行個體。

在為 CloudWatch 跨帳戶可觀測性設定的監控帳戶中，您的 Metrics Insights 警示可監視來源帳戶和監控帳戶本身中的資源。如需有關如何將警示查詢限制給特定帳戶或按帳戶 ID 對結果分組的詳細資訊，請參閱 [CloudWatch Metrics Insights 中的查詢元件和語法](cloudwatch-metrics-insights-querylanguage.md) 中的 `WHERE` 和 `GROUP BY` 一節。

**在警示查詢中使用標籤**

您可以在 Metrics Insights 查詢上建立警示，這些查詢使用 AWS 資源標籤來篩選和分組指標。若要搭配使用標籤與警示，請在 [https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/) 上選擇**設定**。在 **CloudWatch 設定**頁面的**在遙測上啟用資源標籤**下，選擇**啟用**。內容感知警示會自動監控特定應用程式、環境或團隊，以因應資源變動。

例如，您可以建立警示，用於監控標記為特定應用程式之所有 Amazon EC2 執行個體的 CPU 使用率。

```
SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE tag.Application = 'Orders' AND tag.Environment = 'Prod'
```

標籤型警示會隨著您新增或移除帶相符標籤的資源而自動調整，提供與您的操作結構相符的動態監控。

**Contents**
+ [建立 Metrics Insights CloudWatch 警示](cloudwatch-metrics-insights-alarm-create.md)

# 建立 Metrics Insights CloudWatch 警示
<a name="cloudwatch-metrics-insights-alarm-create"></a>

**使用主控台在 Metrics Insights 查詢上建立警示**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Metrics** (指標)、**All metrics** (所有指標)。

1. (選用) 若要執行預先建置的範例查詢，請選擇 **Add query** (新增查詢)，然後選取要執行的查詢。或者，您也可以選擇 **Editor** (編輯器) 以編輯範例查詢，然後選擇 **Run** (執行) 來執行修改的查詢。

1. 若要建立自己的查詢，請選擇**多來源查詢**。然後您可以使用**建置器**檢視、**編輯器**檢視，也可以同時使用兩者。您可以隨時在兩個檢視之間切換，並在兩個檢視中查看工作進度。

   在 **Builder** (建置器) 檢視中，您可以瀏覽並選取指標命名空間、指標名稱、篩選條件、群組和排序選項。對於這些選項中的每一個，查詢建置器都會為您提供環境中可能的選項清單，以供您選擇。

   在 **Editor** (編輯器) 檢視中，您可以開始編寫查詢。輸入時，編輯器會根據您目前輸入的字元提供建議。

   例如，建立針對警示的 Metrics Insights 查詢時，您可以使用標籤對指標進行篩選和分組，以進行更精準的監控。
   + 依標籤篩選 – 使用 `WHERE tag.keyName = 'value'` 監控具有特定標籤的資源

     ```
     SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE tag.Environment = 'Prod'
     ```
   + 將標籤與維度結合 – 將標籤篩選條件與現有指標維度結合

     ```
     SELECT AVG(Duration) FROM "AWS/Lambda" WHERE tag.Application = 'OrderService' AND FunctionName = 'process%'
     ```
**注意**  
使用標籤時，僅當評估時段內關聯資源上存在指定的標籤時，警示才與指標相符。

1. 當您對您的查詢感到滿意時，請選擇 **Run** (執行)。

1. 選擇 **Create alarm** (建立警示)。

1. 在 **Conditions (條件)** 下，指定以下內容：

   1. 針對 **Whenever *metric* is (指標為...時)**，請指定指標是否必須大於、小於，或等於閾值。在 **than... (於...)** 下，指定閾值。

   1. 選擇 **Additional configuration (其他組態)**。針對 **Datapoints to alarm (要警示的資料點)**，請指定 (資料點) 必須處於 `ALARM` 狀態多少評估期間，才會觸發警示。如果此處的兩個值相符，您便可以建立警示，在許多連續期間違規時移至 `ALARM` 狀態。

      若要建立 N 個中有 M 個警示，請針對第一個值，指定低於您為第二個值所指定值的值。如需詳細資訊，請參閱[警示評估](alarm-evaluation.md)。

   1. 針對 **Missing data treatment (遺失資料處理)**，選擇警示在遺失某些資料點時的行為。如需詳細資訊，請參閱[設定 CloudWatch 警示如何處理遺失資料](alarms-and-missing-data.md)。

1. 選擇**下一步**。

1. 在 **Notification (通知)** 下，選取 SNS 主題來在警示處於 `ALARM` 狀態、`OK` 狀態或 `INSUFFICIENT_DATA` 狀態時進行通知。

   若要讓警示針對相同的警示狀態或不同警示狀態傳送多個通知，請選擇 **Add notification (新增通知)**。

   若要讓警示不傳送通知，請選擇 **Remove (移動)**。

1. 若要讓警示執行 Auto Scaling、 EC2 或 Systems Manager 動作，請選擇適當的按鈕，然後選擇警示狀態及要執行的動作。警示只能在進入 ALARM 狀態時執行 Systems Manager 動作。如需有關 Systems Manager 動作的詳細資訊，請參閱[設定 CloudWatch 以從警示建立 OpsItems](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-create-OpsItems-from-CloudWatch-Alarms.html) 和[事件建立](https://docs.aws.amazon.com/incident-manager/latest/userguide/incident-creation.html)。
**注意**  
若要建立執行 SSM Incident Manager 動作的警示，您必須具備特定許可。如需詳細資訊，請參閱 [AWS Systems Manager Incident Manager 的身分型政策範例](https://docs.aws.amazon.com/incident-manager/latest/userguide/security_iam_id-based-policy-examples.html)。

1. 完成時，請選擇**下一步**。

1. 輸入警示的名稱與說明。名稱只能包含 ASCII 字元。然後選擇**下一步**。

1. 在 **Preview and create (預覽及建立)** 下，請確認資訊和條件都是您希望的內容，然後選擇 **Create alarm (建立警示)**。

**使用 在 Metrics Insights 查詢上建立警示 AWS CLI**

使用 `put-metric-alarm` 命令，在 `metrics` 參數中指定 Metrics Insights 查詢。例如，若任何執行個體的 CPU 使用率超過 50%，則下列命令會讓警示進入 ALARM 狀態。

```
aws cloudwatch put-metric-alarm —alarm-name Prod-App-CPU-Alarm —evaluation-periods 1 —comparison-operator GreaterThanThreshold —metrics '[{"Id":"m1","Expression":"SELECT MAX(CPUUtilization) FROM \"AWS/EC2\" WHERE tag.Environment = '\''Prod'\'' AND tag.Application = '\''OrderService'\''", "Period":60}]' —threshold 80
```

# 使用 Metrics Insights 查詢搭配指標數學
<a name="cloudwatch-metrics-insights-math"></a>

您可以使用 Metrics Insights 查詢作為指標數學函數的輸入。如需指標數學的詳細資訊，請參閱 [搭配 CloudWatch 指標使用數學表達式](using-metric-math.md)。

不包含 **GROUP BY** (分組依據) 子句的 Metrics Insights 查詢會傳回單一時間序列。因此，其傳回的結果可以搭配使用單一時間序列作為輸入的任何指標數學函數使用。

包含 **GROUP BY** (分組依據) 子句的 Metrics Insights 查詢會傳回多個時間序列。因此，其傳回的結果可以搭配使用時間序列陣列作為輸入的任何指標數學函數使用。

例如，下列查詢會以時間序列陣列傳回區域中每個儲存貯體下載的位元組總數：

```
SELECT SUM(BytesDownloaded) 
FROM SCHEMA("AWS/S3", BucketName, FilterId) 
WHERE FilterId = 'EntireBucket'
GROUP BY BucketName
```

在主控台中的圖形或 [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) 操作中，此查詢的結果為 `q1`。此查詢會傳回以位元組為單位的結果，所以如果想看到改以 MB 為單位的結果，您可以使用以下數學函數：

```
q1/1024/1024
```

# 使用自然語言來產生和更新 CloudWatch Metrics Insights 查詢
<a name="cloudwatch-metrics-insights-query-assist"></a>

 CloudWatch 支援自然語言查詢功能，可協助您針對 [CloudWatch Metrics Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/query_with_cloudwatch-metrics-insights.html) 和 [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 產生和更新查詢。

 使用此功能，可以用簡單的英文來提出問題或描述您尋找的 CloudWatch 資料。自然語言功能會根據您輸入的提示產生查詢，並逐行說明查詢的運作方式。也可以更新查詢以進一步調查您的資料。

 根據您的環境，可以輸入「哪個 Amazon Elastic Compute Cloud 執行個體的網路輸出最高？」 和「根據取用的讀取顯示排名前 10 位的 Amazon DynamoDB 資料表」等提示。

**注意**  
自然語言查詢功能現已在 10 個區域全面開放使用。對於某些區域，此功能會對美國區域進行跨區域呼叫，以處理查詢提示。下表所列為支援的區域，並顯示每個區域處理其提示的位置。  


| 支援的區域 | 處理提示的區域 | 
| --- | --- | 
|  美國東部 (維吉尼亞北部)  |  美國東部 (維吉尼亞北部)  | 
|  美國東部 (俄亥俄)  |  美國東部 (維吉尼亞北部)  | 
|  美國西部 (奧勒岡)  |  美國西部 (奧勒岡)  | 
|  亞太地區 (香港)  |  美國西部 (奧勒岡)  | 
|  亞太地區 (新加坡)  |  美國西部 (奧勒岡)  | 
|  亞太地區 (悉尼)  |  美國西部 (奧勒岡)  | 
|  亞太地區 (東京)  |  亞太地區 (東京)  | 
|  歐洲 (法蘭克福)  |  歐洲 (法蘭克福)  | 
|  歐洲 (愛爾蘭)  |  美國東部 (維吉尼亞北部)  | 
|  歐洲 (斯德哥爾摩)  |  美國東部 (維吉尼亞北部)  | 

 若要使用此功能產生 CloudWatch Metrics Insights 查詢，請在*建置器*或*編輯器*檢視中開啟 CloudWatch Metrics Insights 查詢編輯器，然後選擇**產生查詢**。

**重要**  
 若要使用自然語言查詢功能，必須使用 [CloudWatchFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchFullAccess.html)、[CloudWatchReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchReadOnlyAccess.html)、[CloudWatchFullAccessV2](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchFullAccessV2.html)、[AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html) 或 [ReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) 政策。  
 也可以在新的或現有的客戶管理政策或內嵌政策中包含 `cloudwatch:GenerateQuery` 動作。

## 查詢範例
<a name="cloudwatch-metrics-insights-query-assist-examples"></a>

 本節中的範例說明如何使用自然語言功能產生及更新查詢。

**注意**  
 如需有關 CloudWatch Metrics Insights 查詢編輯器和語法的詳細資訊，請參閱 [CloudWatch Metrics Insights 查詢元件和語法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-insights-querylanguage.html)。

### 範例：產生自然語言查詢
<a name="cloudwatch-metrics-insights-query-assist-example-1"></a>

 若要使用自然語言產生查詢，請輸入提示並選擇**產生新查詢**。此範例顯示執行基本搜尋的查詢。

**提示詞**  
 以下是一個提示範例，它指示功能去搜尋耗用最多讀取容量的前 10 個 DynamoDB 表格。

```
Show top 10 DynamoDB Tables by consumed reads
```

**Query**  
 以下是自然語言功能根據提示產生的查詢範例。請注意提示在查詢前出現在註解中的方式。查詢之後，您可以閱讀描述查詢運作方式的說明。

```
# Show top 10 DynamoDB Tables by consumed reads
SELECT SUM("ConsumedReadCapacityUnits")
FROM "AWS/DynamoDB"
GROUP BY TableName
ORDER BY SUM() DESC
LIMIT 10
# This query selects the sum of consumed read capacity units for each DynamoDB table, groups the results by table name, orders the results from highest to lowest read capacity consumption, and limits the results to the top 10 tables.
```

**注意**  
 若要關閉提示的外觀以及查詢運作方式的說明，請使用編輯器中的齒輪圖示。

### 範例：更新自然語言查詢
<a name="cloudwatch-metrics-insights-query-assist-example-2"></a>

 可以透過編輯初始提示，然後選擇**更新查詢**來更新查詢。

**更新提示**  
 下列範例顯示先前提示的更新版本。現在，此提示會指示功能按照傳回的位元組數排序結果，而不是搜尋消耗最多讀取容量的前 10 個 DynamoDB 表格。

```
Sort by bytes returned instead
```

**更新查詢**  
 以下是更新查詢的範例。請注意更新後的提示在更新後的查詢前出現在註解中的方式。查詢之後，您可以閱讀描述原始查詢更新方式的說明。

```
# Sort by bytes returned instead
SELECT SUM("ReturnedBytes")
FROM "AWS/DynamoDB"
GROUP BY TableName
ORDER BY SUM() DESC
LIMIT 10
# This query modifies the original query to select the sum of returned bytes instead of consumed read capacity units, and orders the results from highest to lowest sum of returned bytes, limiting the results to the top 10 tables.
```

## 選擇不使用您的資料以改善服務
<a name="cloudwatch-metrics-insights-query-assist-service-data"></a>

 您提供用於訓練 AI 模型並產生相關查詢的自然語言提示資料僅用於提供和維護您的服務。此資料可用於改善 CloudWatch Metrics Insights 的品質。我們將您的信任和隱私以及內容安全性放在首位。如需詳細資訊，請參閱 [AWS 服務條款](https://aws.amazon.com/service-terms/)和 [AWS 負責任的 AI 政策](https://aws.amazon.com/machine-learning/responsible-ai/policy/)。

 透過建立 AI 服務退出政策，可選擇不將您的內容用於開發或改進自然語言查詢的品質。若要選擇退出所有 CloudWatch AI 功能的資料收集 (包括查詢產生功能)，您必須建立 CloudWatch 的退出政策。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的 [AI 服務退出政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out.html)。

# SQL 推斷
<a name="cloudwatch-metrics-insights-inference"></a>

CloudWatch Metrics Insights 使用數種機制來推斷指定 SQL 查詢的意圖。

**Topics**
+ [時段](#cloudwatch-metrics-insights-inference-timebucketing)
+ [欄位投影](#cloudwatch-metrics-insights-inference-fieldsprojection)
+ [ORDER BY 全域彙總](#cloudwatch-metrics-insights-inference-OrderBy)

## 時段
<a name="cloudwatch-metrics-insights-inference-timebucketing"></a>

查詢產生的時間序列資料點會根據請求的期間以時段彙整。若要彙總標準 SQL 中的值，必須定義明確的 GROUP BY 子句，以便一起收集指定期間的所有觀察值。由於這是查詢時間序列資料的標準方式，因此 CloudWatch Metrics Insights 會推斷時段，而不需要表達明確的 **GROUP BY** (分組依據) 子句。

例如，當以一分鐘的期間執行查詢時，屬於該分鐘直到下一分鐘 (不包含) 的所有觀察值都會彙整到該時段的開始時間。這讓 Metrics Insights SQL 陳述式更簡潔且更簡短。

```
SELECT AVG(CPUUtilization)
FROM SCHEMA("AWS/EC2", InstanceId)
```

上一個查詢會傳回單一時間序列 (時間戳記-值對)，代表所有 Amazon EC2 執行個體的平均 CPU 使用率。假設請求的期間為一分鐘，傳回的每個資料點代表在特定一分鐘間隔內測量之所有觀測值的平均值 (包含開始時間、不包含結束時間)。與特定資料點相關的時間戳記是儲存貯體的開始時間

## 欄位投影
<a name="cloudwatch-metrics-insights-inference-fieldsprojection"></a>

Metrics Insights 查詢一律會傳回時間戳記投影。您不需要在 **SELECT** (選取) 子句中指定時間戳記欄來取得每個相應資料點值的時間戳記。如需如何計算時間戳記的詳細資訊，請參閱 [時段](#cloudwatch-metrics-insights-inference-timebucketing)。

使用 **GROUP BY** (分組依據) 時，每個群組名稱也會在結果中推斷和投影，以便您可以將傳回的時間序列分組。

```
SELECT AVG(CPUUtilization)
FROM SCHEMA("AWS/EC2", InstanceId)
GROUP BY InstanceId
```

上一個查詢會傳回每個 Amazon EC2 執行個體的時間序列。每個時間序列皆依執行個體 ID 的值進行標記。

## ORDER BY 全域彙總
<a name="cloudwatch-metrics-insights-inference-OrderBy"></a>

使用 **ORDER BY** (排序依據) 時，**FUNCTION()** (函數 ()) 推斷您要排序的彙總函數 (查詢指標的資料點值)。彙總操作會在所有查詢的時段中，跨每個個別時間序列的所有相符資料點執行。

```
SELECT AVG(CPUUtilization)
FROM SCHEMA("AWS/EC2", InstanceId)
GROUP BY InstanceId
ORDER BY MAX()
LIMIT 10
```

上一個查詢會傳回每個 Amazon EC2 執行個體的 CPU 使用率，將結果集限制為 10 個項目。結果是根據請求的時段內個別時間序列的最大值來排序。**ORDER BY** (排序依據) 子句會在 **LIMIT** (限制) 之前套用，以便在超過 10 個時間序列時計算排序。

# Metrics Insights 配額
<a name="cloudwatch-metrics-insights-limits"></a>

CloudWatch Metrics Insights 目前具有下列配額：
+ 查詢最多兩週的資料，以便在指標、小工具和警示圖表中進行視覺化呈現。您可以查詢最近三小時的資料，以進行警示條件評估。
+ 單一查詢可處理不超過 10,000 個指標。這表示如果 **SELECT** (選取)、**FROM** (從) 和 **WHERE** (哪裡) 子句符合 10,000 個以上的指標時，查詢只會處理所找到這些指標中的前 10,000 個。
+ 單個查詢可以傳回不超過 500 個時間序列。這表示如果查詢傳回超過 500 個指標，則並非所有指標都會在查詢結果中傳回。如果您使用 **ORDER BY** (排序依據) 子句，則會排序所有正在處理的指標，並根據您的 **ORDER BY** (排序依據) 子句會傳回擁有最高或最低值的 500 個指標。

  如果沒有包含 **ORDER BY** (排序依據) 子句，則無法控制傳回哪 500 個相符指標。
+ 每個區域最多可以有 200 個 Metrics Insights 警示。
+ Metrics Insights 不支援高解析度資料，因為此類資料是回報的精細度低於一分鐘的指標資料。若您請求高解析度資料，請求雖不會失敗，但輸出資料會以一分鐘的精細度彙總。
+ 每個 [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) 操作只能有一個查詢，但您可以在每個包含一個查詢的儀表板中擁有多個小工具。
+ 如果搭配 **GROUP BY** 或 **WHERE** 使用標籤的查詢符合具有超過 10 個標籤更新的指標，則查詢結果中只會包含最近 10 個標記版本的指標。

# Metrics Insights 範例查詢
<a name="cloudwatch-metrics-insights-queryexamples"></a>

本節包含實用的 CloudWatch Metrics Insights 查詢範例，您可以直接複製和使用，或在查詢編輯器中複製和修改。部分範例已在主控台中提供，您可以藉由在 **Metrics** (指標) 檢視中選擇 **Add query** (新增查詢)，來存取這些範例。

## Application Load Balancer 範例
<a name="cloudwatch-metrics-insights-queryexamples-applicationloadbalancer"></a>

**所有負載平衡器的請求總計**

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer)
```

**前 10 名最活躍的負載平衡器**

```
SELECT MAX(ActiveConnectionCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer) 
GROUP BY LoadBalancer 
ORDER BY SUM() DESC 
LIMIT 10
```

## AWS API 用量範例
<a name="cloudwatch-metrics-insights-queryexamples-APIusage"></a>

**依您帳戶中的呼叫數量排名前 20 AWS APIs **

```
SELECT COUNT(CallCount) 
FROM SCHEMA("AWS/Usage", Class, Resource, Service, Type) 
WHERE Type = 'API' 
GROUP BY Service, Resource 
ORDER BY COUNT() DESC 
LIMIT 20
```

**依呼叫排序的 CloudWatch API**

```
SELECT COUNT(CallCount) 
FROM SCHEMA("AWS/Usage", Class, Resource, Service, Type) 
WHERE Type = 'API' AND Service = 'CloudWatch' 
GROUP BY Resource 
ORDER BY COUNT() DESC
```

## DynamoDB 範例
<a name="cloudwatch-metrics-insights-queryexamples-DynamoDB"></a>

**取用讀取的前 10 個資料表**

```
SELECT SUM(ProvisionedWriteCapacityUnits)
FROM SCHEMA("AWS/DynamoDB", TableName) 
GROUP BY TableName
ORDER BY MAX() DESC LIMIT 10
```

**依傳回位元組排序的前 10 個資料表**

```
SELECT SUM(ReturnedBytes)
FROM SCHEMA("AWS/DynamoDB", TableName) 
GROUP BY TableName
ORDER BY MAX() DESC LIMIT 10
```

**依使用者錯誤排序的前 10 個資料表**

```
SELECT SUM(UserErrors)
FROM SCHEMA("AWS/DynamoDB", TableName) 
GROUP BY TableName
ORDER BY MAX() DESC LIMIT 10
```

## Amazon Elastic Block Store 範例
<a name="cloudwatch-metrics-insights-queryexamples-EBS"></a>

**依寫入位元組排序的前 10 個 Amazon EBS 磁碟區**

```
SELECT SUM(VolumeWriteBytes) 
FROM SCHEMA("AWS/EBS", VolumeId) 
GROUP BY VolumeId 
ORDER BY SUM() DESC 
LIMIT 10
```

**Amazon EBS 磁碟區的平均寫入時間**

```
SELECT AVG(VolumeTotalWriteTime) 
FROM SCHEMA("AWS/EBS", VolumeId)
```

## Amazon EC2 範例
<a name="cloudwatch-metrics-insights-queryexamples-EC2"></a>

**依最高排序的 EC2 執行個體 CPU 使用率**

```
SELECT AVG(CPUUtilization) 
  FROM SCHEMA("AWS/EC2", InstanceId) 
  GROUP BY InstanceId 
  ORDER BY AVG() DESC
```

**整個機群的平均 CPU 使用率**

```
SELECT AVG(CPUUtilization) 
FROM SCHEMA("AWS/EC2", InstanceId)
```

**依最高 CPU 使用率排序的前 10 個執行個體**

```
SELECT MAX(CPUUtilization) 
FROM SCHEMA("AWS/EC2", InstanceId) 
GROUP BY InstanceId 
ORDER BY MAX() DESC 
LIMIT 10
```

**在這種情況下，CloudWatch 代理程式正在收集每個應用程式的 `CPUUtilization` 指標。此查詢會針對特定應用程式名稱篩選此指標的平均值。**

```
SELECT AVG(CPUUtilization)
FROM "AWS/CWAgent"
WHERE ApplicationName = 'eCommerce'
```

## Amazon Elastic Container Service 範例
<a name="cloudwatch-metrics-insights-queryexamples-ECS"></a>

**所有 ECS 叢集的平均 CPU 使用率**

```
SELECT AVG(CPUUtilization) 
FROM SCHEMA("AWS/ECS", ClusterName)
```

**依記憶體使用率排序的前 10 個叢集**

```
SELECT AVG(MemoryUtilization) 
FROM SCHEMA("AWS/ECS", ClusterName) 
GROUP BY ClusterName 
ORDER BY AVG() DESC
LIMIT 10
```

**依 CPU 使用率排序的前 10 項服務**

```
SELECT AVG(CPUUtilization) 
FROM SCHEMA("AWS/ECS", ClusterName, ServiceName) 
GROUP BY ClusterName, ServiceName 
ORDER BY AVG() DESC 
LIMIT 10
```

**依執行任務排序的前 10 項服務 (Container Insights)**

```
SELECT AVG(RunningTaskCount) 
FROM SCHEMA("ECS/ContainerInsights", ClusterName, ServiceName) 
GROUP BY ClusterName, ServiceName 
ORDER BY AVG() DESC 
LIMIT 10
```

## Amazon Elastic Kubernetes Service Container Insights 範例
<a name="cloudwatch-metrics-insights-queryexamples-EKSCI"></a>

**所有 EKS 叢集的平均 CPU 使用率**

```
SELECT AVG(pod_cpu_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName)
```

**依節點 CPU 使用率排序的前 10 個叢集**

```
SELECT AVG(node_cpu_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName) 
GROUP BY ClusterName
ORDER BY AVG() DESC LIMIT 10
```

**依 Pod 記憶體使用率排序的前 10 個叢集**

```
SELECT AVG(pop_memory_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName) 
GROUP BY ClusterName
ORDER BY AVG() DESC LIMIT 10
```

**依 CPU 使用率排序的前 10 個節點**

```
SELECT AVG(node_cpu_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName, NodeName) 
GROUP BY ClusterName, NodeName 
ORDER BY AVG() DESC LIMIT 10
```

**依記憶體使用率排序的前 10 個 Pod**

```
SELECT AVG(pod_memory_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName, PodName) 
GROUP BY ClusterName, PodName 
ORDER BY AVG() DESC LIMIT 10
```

## EventBridge 範例
<a name="cloudwatch-metrics-insights-queryexamples-EventBridge"></a>

**依調用排序的前 10 個規則**

```
SELECT SUM(Invocations)
FROM SCHEMA("AWS/Events", RuleName) 
GROUP BY RuleName
ORDER BY MAX() DESC LIMIT 10
```

**依失敗調用排序的前 10 個規則**

```
SELECT SUM(FailedInvocations)
FROM SCHEMA("AWS/Events", RuleName) 
GROUP BY RuleName
ORDER BY MAX() DESC LIMIT 10
```

**依相符規則排序的前 10 個規則**

```
SELECT SUM(MatchedEvents)
FROM SCHEMA("AWS/Events", RuleName) 
GROUP BY RuleName
ORDER BY MAX() DESC LIMIT 10
```

## Kinesis 範例
<a name="cloudwatch-metrics-insights-queryexamples-Kinesis"></a>

**依寫入位元組排序的前 10 個串流**

```
SELECT SUM("PutRecords.Bytes") 
FROM SCHEMA("AWS/Kinesis", StreamName) 
GROUP BY StreamName
ORDER BY SUM() DESC LIMIT 10
```

**依串流中最早項目排序的前 10 個串流**

```
SELECT MAX("GetRecords.IteratorAgeMilliseconds") 
FROM SCHEMA("AWS/Kinesis", StreamName) 
GROUP BY StreamName
ORDER BY MAX() DESC LIMIT 10
```

## Lambda 範例
<a name="cloudwatch-metrics-insights-queryexamples-Lambda"></a>

**依調用次數排序的 Lambda 函數**

```
SELECT SUM(Invocations) 
FROM SCHEMA("AWS/Lambda", FunctionName) 
GROUP BY FunctionName 
ORDER BY SUM() DESC
```

**依最長執行時間排序的前 10 個 Lambda 函數**

```
SELECT AVG(Duration) 
FROM SCHEMA("AWS/Lambda", FunctionName) 
GROUP BY FunctionName 
ORDER BY MAX() DESC 
LIMIT 10
```

**依錯誤計數排序的前 10 個 Lambda 函數**

```
SELECT SUM(Errors) 
FROM SCHEMA("AWS/Lambda", FunctionName) 
GROUP BY FunctionName 
ORDER BY SUM() DESC 
LIMIT 10
```

## CloudWatch Logs 範例
<a name="cloudwatch-metrics-insights-queryexamples-CloudWatchLogs"></a>

**依傳入事件排序的前 10 個日誌群組**

```
SELECT SUM(IncomingLogEvents)
FROM SCHEMA("AWS/Logs", LogGroupName) 
GROUP BY LogGroupName
ORDER BY SUM() DESC LIMIT 10
```

**依寫入位元組排序的前 10 個日誌群組**

```
SELECT SUM(IncomingBytes)
FROM SCHEMA("AWS/Logs", LogGroupName) 
GROUP BY LogGroupName
ORDER BY SUM() DESC LIMIT 10
```

## Amazon RDS 範例
<a name="cloudwatch-metrics-insights-queryexamples-RDS"></a>

**依最高 CPU 使用率排序的前 10 個 Amazon RDS 執行個體**

```
SELECT MAX(CPUUtilization)
FROM SCHEMA("AWS/RDS", DBInstanceIdentifier) 
GROUP BY DBInstanceIdentifier
ORDER BY MAX() DESC 
LIMIT 10
```

**按寫入排序的前 10 個 Amazon RDS 叢集**

```
SELECT SUM(WriteIOPS)
FROM SCHEMA("AWS/RDS", DBClusterIdentifier) 
GROUP BY DBClusterIdentifier
ORDER BY MAX() DESC 
LIMIT 10
```

## Amazon Simple Storage Service 範例
<a name="cloudwatch-metrics-insights-queryexamples-S3"></a>

**儲存貯體的平均延遲**

```
SELECT AVG(TotalRequestLatency) 
FROM SCHEMA("AWS/S3", BucketName, FilterId) 
WHERE FilterId = 'EntireBucket' 
GROUP BY BucketName 
ORDER BY AVG() DESC
```

**依位元組下載的前 10 個儲存貯體**

```
SELECT SUM(BytesDownloaded) 
FROM SCHEMA("AWS/S3", BucketName, FilterId) 
WHERE FilterId = 'EntireBucket'
GROUP BY BucketName 
ORDER BY SUM() DESC 
LIMIT 10
```

## Amazon Simple Notification Service 範例
<a name="cloudwatch-metrics-insights-queryexamples-SNS"></a>

**SNS 主題發布的訊息總數**

```
SELECT SUM(NumberOfMessagesPublished) 
FROM SCHEMA("AWS/SNS", TopicName)
```

**依已發布訊息排序的前 10 大主題**

```
SELECT SUM(NumberOfMessagesPublished) 
FROM SCHEMA("AWS/SNS", TopicName) 
GROUP BY TopicName 
ORDER BY SUM() DESC 
LIMIT 10
```

**依訊息傳遞失敗排序的前 10 大主題**

```
SELECT SUM(NumberOfNotificationsFailed) 
FROM SCHEMA("AWS/SNS", TopicName)
GROUP BY TopicName 
ORDER BY SUM() DESC 
LIMIT 10
```

## Amazon SQS 範例
<a name="cloudwatch-metrics-insights-queryexamples-SQS"></a>

**依可見訊息數目排序的前 10 個佇列**

```
SELECT AVG(ApproximateNumberOfMessagesVisible)
FROM SCHEMA("AWS/SQS", QueueName) 
GROUP BY QueueName
ORDER BY AVG() DESC 
LIMIT 10
```

**前 10 個最活躍的佇列**

```
SELECT SUM(NumberOfMessagesSent)
FROM SCHEMA("AWS/SQS", QueueName) 
GROUP BY QueueName
ORDER BY SUM() DESC 
LIMIT 10
```

**依最早訊息存留天數排序的前 10 個佇列**

```
SELECT AVG(ApproximateAgeOfOldestMessage)
FROM SCHEMA("AWS/SQS", QueueName) 
GROUP BY QueueName
ORDER BY AVG() DESC 
LIMIT 10
```

# Metrics Insights 字彙
<a name="cloudwatch-metrics-insights-glossary"></a>

**label**  
在 Metrics Insights 中，標籤是索引鍵值組，用來定義查詢範圍以傳回特定資料集，或定義將查詢結果分隔成不同時間序列的準則。標籤索引鍵類似於 SQL 中的資料欄名稱。標籤必須是 CloudWatch 指標維度。

**觀察**  
觀察值是針對指定時間之指定指標記錄的值。

# 對 Metrics Insights 進行疑難排解
<a name="cloudwatch-metrics-insights-troubleshooting"></a>

## 結果包括「Other」，但我沒有以此作為維度
<a name="cloudwatch-metrics-insights-troubleshooting-other"></a>

這表示查詢包含 **GROUP BY** (分組依據) 子句，該子句會指定查詢所傳回之某些指標中未使用的標籤索引鍵。在此情況下，會傳回名為 `Other` 的空值群組。不包含該標籤索引鍵的指標可能是彙總的指標，該指標會傳回跨該標籤索引鍵所有值彙總的值。

 例如，假設我們有下列查詢：

```
SELECT AVG(Faults) 
FROM MyCustomNamespace 
GROUP BY Operation, ServiceName
```

如果某些傳回的指標不包含 `ServiceName` 作為維度，則這些指標會顯示為像 `ServiceName` 值一樣擁有 `Other`。

為了防止在結果中看到「Other」，請在您的 **FROM** (從) 子句中使用 **SCHEMA** (結構描述)，如下列範例所示：

```
SELECT AVG(Faults) 
FROM SCHEMA(MyCustomNamespace, Operation)
GROUP BY Operation, ServiceName
```

這會將傳回的結果限制為僅同時具有 `Operation` 和 `ServiceName` 維度的指標。

## 我的圖形中最舊的時間戳記比其他時間戳記的指標值低
<a name="cloudwatch-metrics-insights-troubleshooting-oldest"></a>

CloudWatch Metrics Insights 支援最多兩週的歷史資料。當您以大於一分鐘的時段繪製時，可能會出現最舊的資料點與預期值不同的情況。這是因為 CloudWatch Metrics Insights 查詢只會傳回兩週的保留期內的資料。在這種情況下，查詢中最舊的資料點只會傳回兩週邊界內度量的觀測值，而不是傳回該資料點時段內的所有觀測值。

## 使用標籤型查詢時，不同時段的不一致指標值
<a name="cloudwatch-metrics-insights-troubleshooting-tag-mutations"></a>

當您在 CloudWatch Metrics Insights 查詢中使用 `WHERE`或 `GROUP BY`子句搭配標籤時，您可能會看到不同的指標值，具體取決於選取的時段。例如，6 小時期間可能顯示峰值 20，而 1 小時期間在相同的時段僅顯示 2。

這是因為標籤時間戳記是以第二層解析度存放，而指標資料點會與句點邊界 （例如，每分鐘或每小時的開始） 對齊。為了判斷哪些資料點符合標籤時間範圍，CloudWatch 會透過減去一個期間來調整範圍的開始。隨著期間越長，此調整會在標籤時間戳記與最早包含的資料點之間產生更寬的間隙，這可能會導致範圍起點附近的資料點遭到排除。

下列範例顯示這如何影響查詢結果。指標有兩個標籤值： `env=beta`（從 00：00 到 01：30) 和 `env=gamma`（從 01：30 到 03：00)。每個標籤涵蓋 90 分鐘的資料，SUM 為 270。

![\[兩個 CloudWatch 指標圖形，比較標籤型查詢結果與 1 分鐘和 3 小時期間。\]](http://docs.aws.amazon.com/zh_tw/AmazonCloudWatch/latest/monitoring/images/metrics-insights-tag-alignment.png)



| **env=beta，間隔 1 分鐘** | 統計數字 | 預期 | 已傳回 | 差異 | 
| --- | --- | --- | --- | --- | 
| SUM | 270 | 271 | \$11 | 
| AVG | 3.0 | 3.0 | 0 | 
| MIN | 1 | 1 | 0 | 
| MAX | 5 | 5 | 0 | 
| SAMPLE\$1COUNT | 90 | 91 | \$11 | 


| **env=gamma，間隔 1 分鐘** | 統計數字 | 預期 | 已傳回 | 差異 | 
| --- | --- | --- | --- | --- | 
| SUM | 270 | 275 | 第 5 版及更新版本 | 
| AVG | 3.0 | 3.0 | 0 | 
| MIN | 1 | 1 | 0 | 
| MAX | 5 | 5 | 0 | 
| SAMPLE\$1COUNT | 90 | 91 | \$11 | 

在 1 分鐘的期間內，對齊調整很小 (1 分鐘），因此每個標籤只會包含 1 個額外的資料點。在 3 小時期間內，調整會涵蓋整個查詢範圍：


| **env=具有 3 小時期間的 Beta 版** | 統計數字 | 預期 | 已傳回 | 差異 | 
| --- | --- | --- | --- | --- | 
| SUM | 270 | 540 | \$1270 | 
| AVG | 3.0 | 3.0 | 0 | 
| MIN | 1 | 1 | 0 | 
| MAX | 5 | 5 | 0 | 
| SAMPLE\$1COUNT | 90 | 180 | \$190 | 


| **env= 3 小時期間的 gamma** | 統計數字 | 預期 | 已傳回 | 差異 | 
| --- | --- | --- | --- | --- | 
| SUM | 270 | 540 | \$1270 | 
| AVG | 3.0 | 3.0 | 0 | 
| MIN | 1 | 1 | 0 | 
| MAX | 5 | 5 | 0 | 
| SAMPLE\$1COUNT | 90 | 180 | \$190 | 

在 3 小時期間內，兩個標籤都會傳回整個資料集 (SUM = 540， SAMPLE\$1COUNT = 180)，因為單一彙總資料點的時間戳記落在兩個調整的範圍內。標籤界限會有效清除。

若要降低此行為的影響，請嘗試下列方法：
+ **使用較小的彙總期間。**較短的期間 （例如 1 分鐘或 5 分鐘） 更接近標籤時間戳記的第二級解析度，這會將對齊差距降至最低，並更有可能包含所有相關的資料點。
+ **使用以維度為基礎的篩選，而非標籤。**如果您的使用案例允許，則依維度篩選，而非標籤。維度型查詢不受此行為影響。例如，使用 `WHERE InstanceId = 'i-1234567890abcdef0'` 代替 `WHERE tag."my-tag" = 'my-value'`。
+ **以一致的精細程度進行查詢。**比較不同時段的指標資料時，請使用相同的期間，以避免對齊調整所造成的非預期差異。