

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# CloudWatch syntaxe des expressions de recherche
<a name="search-expression-syntax"></a>

Une expression de recherche valide dispose du format suivant.

```
SEARCH(' {Namespace, DimensionName1, DimensionName2, ...} SearchTerm', 'Statistic')
```

Par exemple :

```
SEARCH('{AWS/EC2,InstanceId} MetricName="CPUUtilization"', 'Average')
```
+ La première partie de la requête après le mot `SEARCH`, délimitée par des accolades, est le *schéma de métrique* à rechercher. Le schéma de métrique contient un espace de noms de métrique et un ou plusieurs noms de dimension. L'inclusion d'un schéma de métrique dans une requête de recherche est facultative. Si cette valeur est spécifiée, le schéma de métrique doit contenir un espace de noms et peut éventuellement contenir un ou plusieurs noms de dimension qui sont valides dans cet espace de noms.

  Vous n'avez pas besoin d'utiliser des guillemets à l'intérieur du schéma de métrique, sauf si un espace de noms ou un nom de dimension comprend des espaces ou des caractères non alphanumériques. Dans ce cas, vous devez placer le nom qui contient ces caractères dans des guillemets doubles.
+ Le `SearchTerm` est également facultatif, mais une recherche valide doit contenir le schéma de métrique, le `SearchTerm`, ou les deux à la fois. Il contient `SearchTerm` généralement un ou plusieurs comptes IDs, noms de métriques ou valeurs de dimension. Le `SearchTerm` peut inclure plusieurs termes à rechercher, à la fois par correspondance partielle et par correspondance exacte. Il peut également contenir des opérateurs booléens. 

  L'utilisation d'un identifiant de compte dans un ne `SearchTerm` fonctionne que dans les comptes configurés comme comptes de surveillance à des fins d' CloudWatch observabilité entre comptes. La syntaxe pour un ID de compte dans un `SearchTerm` est `:aws.AccountId = 444455556666`. Vous pouvez également utiliser `'LOCAL'` pour spécifier le compte de surveillance lui-même : `:aws.AccountId = 'LOCAL'`

  Pour de plus amples informations, veuillez consulter [CloudWatch observabilité entre comptes](CloudWatch-Unified-Cross-Account.md).

  Le `SearchTerm` peut inclure un ou plusieurs identifiants, par exemple, `MetricName=` comme dans cet exemple, mais l'utilisation d'indicateurs n'est pas obligatoire.

  Le schéma de métrique et le `SearchTerm` doivent être placés dans des guillemets simples.
+ `Statistic`Il s'agit du nom de toute CloudWatch statistique valide. Il doit être entouré de guillemets simples. Pour de plus amples informations, veuillez consulter [Statistiques](cloudwatch_concepts.md#Statistic).

L'exemple précédent effectue une recherche dans l'espace de noms `AWS/EC2` pour les métriques qui disposent de `InstanceId` comme nom de dimension. Elle renvoie toutes les métriques `CPUUtilization` trouvées, avec le graphique illustrant la statistique `Average`. 

Une expression de recherche ne peut trouver que les métriques ayant généré des données au cours des deux dernières semaines.

**Limites d'expression de recherche**

La taille maximale de la requête d'expression de recherche est de 1 024 caractères. Vous pouvez avoir jusqu'à 100 expressions de recherche dans un même graphique. Un graphique peut afficher jusqu'à 500 séries temporelles.

## CloudWatch expressions de recherche : Tokenisation
<a name="search-expression-syntax-tokenization"></a>

Lorsque vous spécifiez un`SearchTerm`, la fonction de recherche recherche des *jetons*, qui sont des sous-chaînes générées CloudWatch automatiquement à partir de noms de métriques complets, de noms de dimensions, de valeurs de dimension et d'espaces de noms. CloudWatch génère des jetons qui se distinguent par la majuscule en forme de chameau dans la chaîne d'origine. Les caractères numériques servent également comme le début de nouveaux jetons et les caractères non alphanumériques servent de délimiteurs, créant des jetons avant et après les caractères non alphanumériques.

Une chaîne continue du même type de caractère jeton délimiteur entraîne un jeton. 

Tous les jetons sont générés en minuscules. Le tableau suivant montre des exemples de jetons générés.


| Chaîne d'origine | Jetons générés | 
| --- | --- | 
|  CustomCount1  |  `customcount1`, `custom`, `count`, `1`    | 
|  SDBFailure  |  `sdbfailure`, `sdb`, `failure`  | 
|  Project2-trial333  |  `project2trial333`, `project`, `2`, `trial`, `333`  | 

## CloudWatch expressions de recherche : Correspondances partielles
<a name="search-expression-partial-match"></a>

Lorsque vous spécifiez un `SearchTerm`, le terme recherché provoque également la création d'un jeton. CloudWatch détecte les métriques en fonction des correspondances partielles, qui sont des correspondances d'un jeton unique généré à partir du terme recherché pour un seul jeton généré à partir d'un espace de noms, nom de métrique, nom de dimension ou valeur de dimension.

Les recherches de correspondances partielles pour correspondre à un seul jeton ne sont pas sensibles à la casse. Par exemple, l'utilisation de n'importe quelle expression de recherche peut renvoyer la métrique `CustomCount1` :
+ `count`
+ `Count`
+ `COUNT`

Cependant, l'utilisation de `couNT` en tant qu'expression de recherche ne trouvera pas `CustomCount1`, car la casse dans le terme recherché `couNT` provoque la création de jetons dans `cou` et `NT`.

Les recherches peuvent également correspondre à des jetons composites, qui sont plusieurs jetons qui apparaissent consécutivement dans le nom d'origine. La recherche est sensible à la casse pour faire correspondre un jeton composite. Par exemple, si le terme d'origine est `CustomCount1`, les recherches de `CustomCount` ou de `Count1` réussissent, mais les recherches de `customcount` ou de `count1` échouent.

## CloudWatch expressions de recherche : correspondances exactes
<a name="search-expression-exact-match"></a>

Vous pouvez définir une recherche pour trouver uniquement des correspondances exactes de votre terme de recherche en utilisant des guillemets autour du terme recherché qui nécessite une correspondance exacte. Ces guillemets doubles sont entourés de guillemets simples utilisés par l'ensemble du terme recherché. Par exemple, **SEARCH(' \$1MyNamespace\$1, "CustomCount1" ', 'Maximum')** trouve la chaîne exacte `CustomCount1` si elle existe en tant que nom de dimension, nom de métrique ou valeur de dimension dans l'espace de noms nommé `MyNamespace`. Toutefois, la recherche **SEARCH(' \$1MyNamespace\$1, "customcount1" ', 'Maximum')** ou **SEARCH(' \$1MyNamespace\$1, "Custom" ', 'Maximum')** ne trouve pas cette chaîne.

Vous pouvez combiner des conditions de correspondance partielles et des conditions de correspondance exactes dans une seule expression de recherche. Par exemple,**SEARCH(' \$1AWS/NetworkELB, LoadBalancer\$1 "ConsumedLCUs" OR flow ', 'Maximum')** renvoie la métrique Elastic Load Balancing nommée `ConsumedLCUs`, ainsi que toutes les métriques ou dimensions Elastic Load Balancing qui contiennent le jeton `flow`. 

L'utilisation de la correspondance exacte est également un bon moyen pour trouver des noms dotés de caractères spéciaux, tels que les caractères non alphanumériques ou des espaces, comme dans l'exemple suivant.

```
SEARCH(' {"My Namespace", "Dimension@Name"}, "Custom:Name[Special_Characters" ', 'Maximum')
```

## CloudWatch expressions de recherche : exclusion d'un schéma métrique
<a name="search-expression-no-schema"></a>

Tous les exemples présentés jusqu'à présent incluent un schéma de métrique, en accolades. Les recherches qui omettent un schéma de métrique sont également valides.

Par exemple, **SEARCH(' "CPUUtilization" ', 'Average')** renvoie tous les noms de métriques, les noms de dimensions, les valeurs de dimension et les espaces de noms qui correspondent exactement à la chaîne `CPUUtilization`. Dans les espaces de noms des AWS métriques, cela peut inclure des métriques provenant de plusieurs services, notamment Amazon EC2, Amazon ECS SageMaker , AI, etc.

Pour limiter cette recherche à un seul AWS service, la meilleure pratique consiste à spécifier l'espace de noms et toutes les dimensions nécessaires dans le schéma métrique, comme dans l'exemple suivant. Bien que cela réduise la recherche pour l'espace de noms `AWS/EC2`, il renvoie toujours des résultats d'autres métriques si vous avez défini `CPUUtilization` comme valeur de dimension pour ces métriques. 

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

Sinon, vous pouvez ajouter l'espace de noms dans le `SearchTerm`, comme illustré dans l'exemple suivant. Mais la recherche ne correspond à aucune chaîne `AWS/EC2` dans cet exemple, même si elle était un nom ou une valeur de dimension personnalisée.

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

## CloudWatch expressions de recherche : Spécification des noms de propriétés dans la recherche
<a name="search-expression-type-of-search-term"></a>

La correspondance exacte de recherche suivante pour `"CustomCount1"` renvoie toutes les métriques dotées exactement de ce nom.

```
SEARCH(' "CustomCount1" ', 'Maximum')
```

Mais elle renvoie également des métriques avec des noms de dimension, des valeurs de dimension ou des espaces de noms de `CustomCount1`. Pour mieux structurer votre recherche, vous pouvez spécifier le nom de la propriété du type d'objet que vous souhaitez rechercher dans vos recherches. L'exemple suivant recherche tous les espaces de noms et renvoie les métriques nommées `CustomCount1`.

```
SEARCH(' MetricName="CustomCount1" ', 'Maximum')
```

Vous pouvez également utiliser des espaces de noms et des name/value paires de dimensions comme noms de propriétés, comme dans les exemples suivants. Le premier exemple illustre également que vous pouvez utiliser les noms de propriété avec des correspondances partielles de recherche.

```
SEARCH(' InstanceType=micro ', 'Average')
```

```
SEARCH(' InstanceType="t2.micro" Namespace="AWS/EC2" ', 'Average')
```

## CloudWatch expressions de recherche : caractères non alphanumériques
<a name="search-expression-syntax-characters"></a>

Les caractères non alphanumériques servent de délimiteurs et indiquent où les noms des métriques, dimensions, espaces de noms et termes de recherche doivent être séparés en jetons. Lorsque les termes provoquent la création de jetons, les caractères non alphanumériques sont enlevés et n'apparaissent pas dans les jetons. Par exemple, `Network-Errors_2` génère les jetons `network`, `errors` et `2`. 

Votre terme de recherche peut inclure des caractères non alphanumériques. Si ces caractères apparaissent dans vos termes de recherche, ils peuvent spécifier des jetons composites dans une correspondance partielle. Par exemple, l'ensemble de recherches suivant trouverait les métriques nommées `Network-Errors-2` ou `NetworkErrors2`. 

```
network/errors
network+errors
network-errors
Network_Errors
```

Lorsque vous faites une recherche de valeur exacte, les caractères non alphanumériques utilisés dans la recherche exacte doivent être les bons caractères qui apparaissent dans la chaîne recherchée. Par exemple, si vous voulez trouver `Network-Errors-2`, la recherche de `"Network-Errors-2"` aboutit, mais une recherche de `"Network_Errors_2"` échoue.

Lorsque vous effectuez une recherche de correspondance exacte, les caractères suivants doivent être placés dans une séquence d'échappement avec une barre oblique inverse.

```
" \ ( )
```

Par exemple, pour trouver le nom de la métrique `Europe\France Traffic(Network)` en correspondance exacte, utilisez le terme de recherche **"Europe\$1\$1France Traffic\$1(Network\$1)"**

## CloudWatch expressions de recherche : opérateurs booléens
<a name="search-expression-boolean-operators"></a>

La recherche prend en charge l'utilisation des opérateurs booléens `AND`, `OR` et `NOT` dans le `SearchTerm`. Les opérateurs booléens sont entourés de guillemets simples que vous utilisez pour insérer l'ensemble du terme recherché. Les opérateurs booléens sont sensibles à la casse. Par conséquent, `and`, `or` et `not` ne sont pas valides comme opérateurs booléens.

Vous pouvez utiliser `AND` explicitement dans votre recherche, par exemple **SEARCH('\$1AWS/EC2,InstanceId\$1 network AND packets', 'Average')**. Si vous n'utilisez aucun opérateur booléen entre les termes recherchés, cela implique une recherche de ceux-ci comme s'il y avait un opérateur `AND`, ce qui génère les mêmes résultats de recherche qu'avec **SEARCH(' \$1AWS/EC2,InstanceId\$1 network packets ', 'Average')**.

Utilisez `NOT` pour exclure des résultats les sous-ensembles de données. Par exemple, **SEARCH(' \$1AWS/EC2,InstanceId\$1 MetricName="CPUUtilization" NOT i-1234567890123456 ', 'Average')** renvoie `CPUUtilization` pour toutes vos instances, à l'exception de l'instance `i-1234567890123456`. Vous pouvez également utiliser une clause `NOT` comme seul terme de recherche. Par exemple, **SEARCH( 'NOT Namespace=AWS ', 'Maximum')** génère toutes vos métriques personnalisées (métriques avec des espaces de noms qui n'incluent pas `AWS`).

Vous pouvez utiliser plusieurs expressions `NOT` dans une requête. Par exemple, **SEARCH(' \$1AWS/EC2,InstanceId\$1 MetricName="CPUUtilization" NOT "ProjectA" NOT "ProjectB" ', 'Average')** renvoie l'élément `CPUUtilization` de toutes les instances de la région, à l'exception de celles ayant des valeurs de dimension `ProjectA` ou `ProjectB`.

Vous pouvez combiner des opérateurs booléens pour des recherches plus puissantes et détaillées, comme dans les exemples suivants. Utilisez des parenthèses pour regrouper les opérateurs.

Les deux exemples suivants renvoient tous les noms de métriques contenant `ReadOps` et provenant à la fois des espaces de noms EC2 et EBS.

```
SEARCH(' (EC2 OR EBS) AND MetricName=ReadOps ', 'Maximum')
```

```
SEARCH(' (EC2 OR EBS) MetricName=ReadOps ', 'Maximum')
```

L'exemple suivant restreint la recherche précédente pour trouver uniquement les résultats qui comprennent `ProjectA`, qui pourrait être la valeur d'une dimension. 

```
SEARCH(' (EC2 OR EBS) AND ReadOps AND ProjectA ', 'Maximum')
```

L'exemple suivant utilise des groupes imbriqués. Elle renvoie les métriques Lambda pour les `Errors` de toutes les fonctions et les `Invocations` de fonctions avec des noms qui incluent les chaînes `ProjectA` ou `ProjectB`.

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

## CloudWatch expressions de recherche : utilisation d'expressions mathématiques
<a name="search-expression-math-expressions"></a>

Vous pouvez utiliser une expression de recherche au sein d'une expression mathématique dans un graphique. 

Par exemple, **SUM(SEARCH(' \$1AWS/Lambda, FunctionName\$1 MetricName="Errors" ', 'Sum'))** renvoie la somme de la métrique `Errors` de toutes vos fonctions Lambda.

L'utilisation de lignes distinctes pour votre expression de recherche et votre expression mathématique peut générer des résultats plus utiles. Par exemple, supposons que vous utilisez les deux expressions suivantes dans un graphique. La première ligne affiche les lignes `Errors` distinctes pour chacune de vos fonctions Lambda. L'ID de cette expression est `e1`. La deuxième ligne ajoute une autre ligne illustrant la somme des erreurs provenant de toutes les fonctions.

```
SEARCH(' {AWS/Lambda, FunctionName}, MetricName="Errors" ', 'Sum')
SUM(e1)
```