Syntaxe des règles de Contributor Insights dans CloudWatch - Amazon CloudWatch

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.

Syntaxe des règles de Contributor Insights dans CloudWatch

Cette section explique la syntaxe des règles de Contributor Insights. Utilisez cette syntaxe uniquement lorsque vous créez une règle en entrant un bloc JSON. Si vous utilisez l'Assistant pour créer une règle, vous n'avez pas besoin de connaître la syntaxe. Pour de plus amples informations sur la création de règles à l'aide de l'Assistant, veuillez consulter Créez une règle Contributor Insights dans CloudWatch.

Toutes les correspondances entre les règles et les noms et valeurs des champs d'événements de journal sont sensibles à la casse.

L'exemple suivant illustre la syntaxe des journaux JSON.

{ "Schema": { "Name": "CloudWatchLogRule", "Version": 1 }, "LogGroupNames": [ "API-Gateway-Access-Logs*", "Log-group-name2" ], "LogFormat": "JSON", "Contribution": { "Keys": [ "$.ip" ], "ValueOf": "$.requestBytes", "Filters": [ { "Match": "$.httpMethod", "In": [ "PUT" ] } ] }, "AggregateOn": "Sum" }
Champs dans les règles de Contributor Insights
Schema

La valeur de Schema pour une règle qui analyse les données des CloudWatch journaux doit toujours être {"Name": "CloudWatchLogRule", "Version": 1}

LogGroupNames

Tableau de chaînes. Pour chaque élément du tableau, vous pouvez éventuellement utiliser * à la fin d'une chaîne pour inclure tous les groupes de journaux dont les noms commencent par ce préfixe.

Veillez à utiliser des caractères génériques avec des noms de groupes de journaux. Vous encourez des frais pour chaque événement de journal correspondant à une règle. Si vous recherchez accidentellement plus de groupes de journaux que vous ne le souhaitez, des frais inattendus peuvent vous être facturés. Pour plus d'informations, consultez Amazon CloudWatch Pricing.

LogGroupARNs

Si vous créez cette règle dans un CloudWatch compte de surveillance d'observabilité entre comptes, vous pouvez l'utiliser LogGroupARNs pour spécifier des groupes de journaux dans les comptes sources liés au compte de surveillance, et pour spécifier des groupes de journaux dans le compte de surveillance lui-même. Vous devez spécifier LogGroupNames ou LogGroupARNs dans votre règle, mais pas les deux.

LogGroupARNs est un tableau de chaînes de caractères. Pour chaque élément du tableau, vous pouvez utiliser * comme caractère générique dans certaines situations. Par exemple, vous pouvez spécifier arn:aws:logs:us-west-1:*:log-group/MyLogGroupName2 pour spécifier les groupes de journaux nommés MyLogGroupName2 dans tous les comptes sources et dans le compte de surveillance, dans la région USA Ouest (Californie du Nord). Vous pouvez également spécifier arn:aws:logs:us-west-1:111122223333:log-group/GroupNamePrefix* pour spécifier tous les groupes de journaux dans la région USA Ouest (Californie du Nord) en 111122223333 dont le nom commence par GroupNamePrefix.

Vous ne pouvez pas spécifier un identifiant de AWS compte partiel comme préfixe avec un joker.

Faites attention lorsque vous utilisez des caractères génériques avec un groupe ARNs de journaux. Vous encourez des frais pour chaque événement de journal correspondant à une règle. Si vous recherchez accidentellement plus de groupes de journaux que vous ne le souhaitez, des frais inattendus peuvent vous être facturés. Pour plus d'informations, consultez Amazon CloudWatch Pricing.

LogFormat

Les valeurs valides sont JSON et CLF.

Contribution

Cet objet comprend un tableau Keys avec jusqu'à quatre membres, éventuellement un seul ValueOf, et éventuellement un tableau comportant jusqu'à quatre Filters.

Clés

Tableau comportant jusqu'à quatre champs de journal utilisés comme dimensions pour classer les contributeurs. Si vous entrez plusieurs clés, chaque combinaison unique de valeurs pour les clés est comptabilisée comme un contributeur unique. Les champs doivent être spécifiés à l'aide de la notation de format de propriété JSON.

ValueOf

(Facultatif) Spécifiez cette valeur uniquement lorsque vous spécifiez Sum comme valeur de AggregateOn. ValueOf spécifie un champ de journal avec des valeurs numériques. Dans ce type de règle, les contributeurs sont classés en fonction de leur somme de la valeur de ce champ, au lieu de leur nombre d'occurrences dans les entrées du journal. Par exemple, si vous souhaitez trier les contributeurs en fonction de leur BytesSent total sur une période, vous devez définir ValueOf sur BytesSent et spécifier Sum pour AggregateOn.

Filtres

Spécifie un tableau comprenant jusqu'à quatre filtres pour limiter les événements du journal inclus dans le rapport. Si vous spécifiez plusieurs filtres, Contributor Insights les évalue avec un opérateur AND logique. Vous pouvez utiliser cela pour filtrer les événements de journal non pertinents dans votre recherche ou vous pouvez l'utiliser pour sélectionner un seul contributeur afin d'analyser son comportement.

Chaque membre du tableau doit inclure un champ Match et un champ indiquant le type d'opérateur correspondant à utiliser.

Le champ Match spécifie un champ journal à évaluer dans le filtre. Le champ journal est spécifié à l'aide de la notation de format de propriété JSON.

Le champ opérateur correspondant doit être l'un des éléments suivants : In, NotIn, StartsWith, GreaterThan, LessThan, EqualTo, NotEqualTo ou IsPresent. Si le champ opérateur est In, NotIn, ou StartsWith, il est suivi d'un tableau de valeurs de chaîne à vérifier. Contributor Insights évalue le tableau de valeurs de chaîne avec un opérateur OR. Le tableau peut inclure jusqu'à 10 valeurs de chaîne.

Si le champ opérateur est GreaterThan, LessThan, EqualTo ou NotEqualTo, il est suivi d'une seule valeur numérique à comparer.

Si le champ opérateur est IsPresent, il est suivi de true ou de false. Cet opérateur met en correspondance les événements de journal selon que le champ de journal spécifié est présent ou non dans l'événement de journal. Le isPresent fonctionne uniquement avec des valeurs dans le nœud feuille des propriétés JSON. Par exemple, un filtre qui recherche des correspondances de c-count n'évalue pas un événement de journal avec une valeur de details.c-count.c1.

Consultez les quatre exemples de filtres suivants :

{"Match": "$.httpMethod", "In": [ "PUT", ] } {"Match": "$.StatusCode", "EqualTo": 200 } {"Match": "$.BytesReceived", "GreaterThan": 10000} {"Match": "$.eventSource", "StartsWith": [ "ec2", "ecs" ] }
AggregateOn

Les valeurs valides sont Count et Sum. Spécifie si le rapport doit être agrégé en fonction d'un nombre d'occurrences ou d'une somme des valeurs du champ spécifié dans le champ ValueOf.

Notation de format de propriété JSON

Les champs Keys, ValueOf et Match suivent le format de propriété JSON avec notation point, où $ représente la racine de l'objet JSON. Ceci est suivi d'un point, puis d'une chaîne alphanumérique avec le nom de la sous-propriété. Plusieurs niveaux de propriétés sont pris en charge.

Le premier caractère de la chaîne doit être une lettre majuscule ou minuscule. Les caractères suivants de la chaîne peuvent être des lettres majuscules, minuscules ou des chiffres de 0 à 9.

La liste suivante illustre des exemples valides de format de propriété JSON :

$.userAgent $.endpoints[0] $.users[1].name $.requestParameters.instanceId

Champ supplémentaire dans les règles des journaux CLF

Les événements du journal Common Log Format (CLF) n'ont pas de noms pour les champs comme le fait JSON. Pour fournir les champs à utiliser pour les règles Contributor Insights, un événement de journal CLF peut être traité comme un tableau avec un index commençant à partir de 1. Vous pouvez spécifier le premier champ comme "1", le second champ comme "2", etc.

Pour faciliter la lecture d'une règle pour un journal CLF, vous pouvez utiliser Fields. Cela vous permet de fournir un alias de dénomination pour les emplacements de champ CLF. Par exemple, vous pouvez spécifier que l'emplacement « 4 » est une adresse IP. Une fois spécifié, IpAddress peut être utilisé comme propriété dans Keys, ValueOf et Filters dans la règle.

Voici un exemple de règle pour un journal CLF qui utilise le champ Fields.

{ "Schema": { "Name": "CloudWatchLogRule", "Version": 1 }, "LogGroupNames": [ "API-Gateway-Access-Logs*" ], "LogFormat": "CLF", "Fields": { "4": "IpAddress", "7": "StatusCode" }, "Contribution": { "Keys": [ "IpAddress" ], "Filters": [ { "Match": "StatusCode", "EqualTo": 200 } ] }, "AggregateOn": "Count" }