

# CloudWatch 搜索表达式示例
<a name="search-expression-examples"></a>

以下示例演示了更多搜索表达式用法和语法。让我们首先在区域内的所有实例中搜索 `CPUUtilization`，然后查看变体。

此示例为区域中的每个实例显示一行，从而显示 `AWS/EC2` 命名空间中的 `CPUUtilization` 指标。

```
SEARCH(' {AWS/EC2,InstanceId} MetricName="CPUUtilization" ', 'Average')
```

将 `InstanceId` 更改为 `InstanceType` 会更改图表，以便为区域中使用的每个实例类型显示一行。来自每个类型的所有实例的数据针对该实例类型聚合为一行。

```
SEARCH(' {AWS/EC2,InstanceType} MetricName="CPUUtilization" ', 'Average')
```

以下示例按实例类型聚合 `CPUUtilization`，并为包含字符串 `micro` 的每个实例类型显示一行。

```
SEARCH('{AWS/EC2,InstanceType} InstanceType=micro MetricName="CPUUtilization" ', 'Average')
```

此示例缩小了上一个示例，将 `InstanceType` 更改为 t2.micro 实例的精确搜索。

```
SEARCH('{AWS/EC2,InstanceType} InstanceType="t2.micro" MetricName="CPUUtilization" ', 'Average')
```

以下搜索删除了查询的 `{metric schema}` 部分，因此所有命名空间中的 `CPUUtilization` 指标都显示在图表中。这可以返回不少结果，因为该图表为来自每个 AWS 服务的 `CPUUtilization` 指标包含多个行（沿不同维度聚合）。

```
SEARCH('MetricName="CPUUtilization" ', 'Average')
```

要稍微缩小这些结果范围，可以指定两个特定的指标名称空间。

```
SEARCH('MetricName="CPUUtilization" AND ("AWS/ECS" OR "AWS/ES") ', 'Average')
```

前面的示例是使用一个搜索查询来搜索特定的多个名称空间的唯一方法，因为您在每个查询中只能指定一个指标架构。但是，要添加更多结构，可以在图表中使用两个查询，如以下示例所示。在此示例中，还通过指定用于聚合 Amazon ECS 数据的维度来添加更多结构。

```
SEARCH('{AWS/ECS ClusterName}, MetricName="CPUUtilization" ', 'Average')
SEARCH(' {AWS/EBS} MetricName="CPUUtilization" ', 'Average')
```

以下示例返回名为 `ConsumedLCUs` 的 Elastic Load Balancing 指标和包含令牌 `flow` 的所有 Elastic Load Balancing 指标或维度。

```
SEARCH('{AWS/NetworkELB, LoadBalancer} "ConsumedLCUs" OR flow ', 'Maximum')
```

以下示例使用嵌套分组。它返回所有函数的 `Errors` 的 Lambda 指标，以及名称中包含字符串 `ProjectA` 或 `ProjectB` 的函数的 `Invocations`。

```
SEARCH('{AWS/Lambda,FunctionName} MetricName="Errors" OR (MetricName="Invocations" AND (ProjectA OR ProjectB)) ', 'Average')
```

以下示例显示了所有自定义指标，不包括 AWS 服务生成的指标。

```
SEARCH('NOT Namespace=AWS ', 'Average')
```

以下示例显示具有包含字符串 `Errors` 作为其名称一部分的指标名称、命名空间、维度名称和维度值的指标。

```
SEARCH('Errors', 'Average')
```

以下示例将搜索缩小到精确匹配。例如，此搜索会查找指标名称 `Errors`，但不会查找名为 `ConnectionErrors` 或 `errors` 的指标。

```
SEARCH(' "Errors" ', 'Average')
```

以下示例说明如何在搜索词的指标架构部分中指定包含空格或特殊字符的名称。

```
SEARCH('{"Custom-Namespace", "Dimension Name With Spaces"}, ErrorCount ', 'Maximum')
```

## CloudWatch 跨账户可观测性搜索表达式示例
<a name="search-expression-examples"></a>

**CloudWatch 跨账户可观测性示例**

如果您登录的账户在 CloudWatch 跨账户可观测性中设置为监控账户，则可以使用 **SEARCH**（搜索）函数从指定的源账户返回指标。有关更多信息，请参阅 [CloudWatch 跨账户可观测性](CloudWatch-Unified-Cross-Account.md)。

以下示例从账户 ID 为 111122223333 的账户中检索所有 Lambda 指标。

```
SEARCH(' AWS/Lambda :aws.AccountId = 111122223333 ', 'Average')
```

以下示例从两个账户中检索所有 `AWS/EC2` 指标：111122223333 和 777788889999。

```
SEARCH(' AWS/EC2 :aws.AccountId = (111122223333 OR 777788889999) ', 'Average')
```

以下示例从源账户 111122223333 和监控账户本身检索所有 `AWS/EC2` 指标。

```
SEARCH(' AWS/EC2 :aws.AccountId = (111122223333 OR 'LOCAL') ', 'Average')
```

以下示例将检索账户 `444455556666` 中指标 `MetaDataToken` 的 `SUM`，维度为 `InstanceId`。

```
SEARCH('{AWS/EC2,InstanceId} :aws.AccountId=444455556666 MetricName=\"MetadataNoToken\"','Sum')
```