Sintaxe da regra do Contributor Insights no CloudWatch - Amazon CloudWatch

Sintaxe da regra do Contributor Insights no CloudWatch

Esta seção explica a sintaxe das regras do Contributor Insights Use essa sintaxe somente quando estiver criando uma regra inserindo um bloco JSON. Se você usar o assistente para criar uma regra, não será necessário conhecer a sintaxe. Para obter mais informações sobre como criar regras usando o assistente, consulte Criação de uma regra do Contributor Insights no CloudWatch.

Todas as correspondências de regras a valores e nomes de campos de eventos de logs diferenciam letras maiúsculas de minúsculas.

O exemplo a seguir ilustra a sintaxe de logs 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" }
Campos nas regras do Contributor Insights
Schema

O valor de Schema para uma regra que analisa dados do CloudWatch Logs deverá ser sempre {"Name": "CloudWatchLogRule", "Version": 1}

LogGroupNames

Uma matriz de strings. Para cada elemento na matriz, é possível usar * no final de uma string para incluir todos os grupos de log com nomes que começam com esse prefixo.

Tenha cuidado com o uso de curingas em nomes de grupos de logs. Serão feitas cobranças por cada evento de log que corresponda a uma regra. Se você pesquisar acidentalmente mais grupos de logs do que pretendia, isso poderá gerar cobranças inesperadas. Para obter mais informações, consulte Preços do Amazon CloudWatch.

LogGroupARNs

Se você estiver criando essa regra em uma conta de monitoramento da observabilidade entre contas do CloudWatch, você pode usar LogGroupARNs para especificar grupos de logs nas contas de origem vinculadas à conta de monitoramento e para especificar grupos de logs na própria conta de monitoramento. Você deve especificar LogGroupNames ou LogGroupARNs na regra, mas não ambos.

LogGroupARNs é uma matriz de strings. Para cada elemento da matriz, você tem a opção de usar * como curinga em determinadas situações. Por exemplo, você pode definir arn:aws:logs:us-west-1:*:log-group/MyLogGroupName2 para especificar grupos de logs denominados MyLogGroupName2 em todas as contas de origem e na conta de monitoramento, na região Oeste dos EUA (Norte da Califórnia). Você também pode definir arn:aws:logs:us-west-1:111122223333:log-group/GroupNamePrefix* para especificar todos os grupos de logs na região Oeste dos EUA (Norte da Califórnia) em 111122223333 que tenham nomes começando com GroupNamePrefix.

Você não pode especificar um ID de conta da AWS parcial como prefixo com um curinga.

Tenha cuidado com o uso de curingas com ARNs s de grupos de logs. Serão feitas cobranças por cada evento de log que corresponda a uma regra. Se você pesquisar acidentalmente mais grupos de logs do que pretendia, isso poderá gerar cobranças inesperadas. Para obter mais informações, consulte Preços do Amazon CloudWatch.

LogFormat

Os valores válidos são JSON e CLF.

Contribuição

Esse objeto inclui uma matriz Keys com até quatro membros, opcionalmente, um único ValueOf e, opcionalmente, uma matriz de até quatro Filters.

Chaves

Uma matriz de até quatro campos de log que são usados como dimensões para classificar colaboradores. Se você inserir mais de uma chave, cada combinação exclusiva de valores para as chaves será contada como um colaborador exclusivo. Os campos devem ser especificados usando a notação no formato de propriedade JSON.

ValueOf

(Opcional) Especifique isso somente quando estiver especificando Sum como o valor de AggregateOn. O ValueOf especifica um campo de log com valores numéricos. Nesse tipo de regra, os colaboradores são classificados pela soma do valor desse campo, em vez do número de ocorrências nas entradas do log. Por exemplo, se você quiser classificar os colaboradores pelo BytesSent total durante um período, defina ValueOf como BytesSent e especifique Sum em AggregateOn.

Filtros

Especifica uma matriz de até quatro filtros para restringir os eventos de log que serão incluídos no relatório. Se você especificar vários filtros, eles serão avaliados pelo Contributor Insights com um operador lógico AND (E). Você pode usar isso para excluir eventos de log irrelevantes na pesquisa ou escolher um único colaborador para ter o comportamento analisado.

Cada membro da matriz deve incluir um campo Match e um campo indicando o tipo de operador de correspondência que deve ser usado.

O campo Match especifica um campo de log para ser avaliado no filtro. O campo de log é especificado usando a notação de formato de propriedade JSON.

O campo de operador de correspondência deve ser um dos seguintes: In, NotIn, StartsWith, GreaterThan, LessThan, EqualTo, NotEqualTo ou IsPresent. Se o campo de operador for In, NotIn ou StartsWith, ele será seguido por uma matriz de valores de string a serem verificados. O Contributor Insights avalia a matriz de valores de string com um operador OR (OU). A matriz pode incluir até 10 valores de string.

Se o campo de operador for GreaterThan, LessThan, EqualTo ou NotEqualTo, ele será seguido por um único valor número com o qual será comparado.

Se o campo de operador for IsPresent, ele será seguido por true ou false. Esse operador corresponde a eventos de log dependendo se o campo de log especificado estava presente ou não no evento de log. O isPresent funciona somente com valores no nó folha de propriedades JSON. Por exemplo, um filtro que procura correspondências com c-count não avaliará um evento de log com um valor de details.c-count.c1.

Consulte o seguinte para exemplos de filtro:

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

Os valores válidos são Count e Sum. Especifica se o relatório deve ser agregado com base em uma contagem de ocorrências ou em uma soma dos valores do campo especificada no campo ValueOf.

Notação de formato de propriedade JSON

Os campos Keys, ValueOf e Match seguem o formato de propriedade JSON sem notação de ponto, onde $ representa a raiz do objeto JSON. Isto é seguido por um ponto e por uma string alfanumérica com o nome da subpropriedade. Vários níveis de propriedade são compatíveis.

O primeiro caractere da string só pode ser A-Z ou a-z. Os caracteres a seguir da string podem ser A-Z, a-z ou 0-9.

A lista a seguir ilustra exemplos válidos do formato de propriedade JSON

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

Campo adicional em regras para logs em CLF

Os eventos de log em Common Log Format (CLF) não têm nomes para os campos como JSON. Para fornecer os campos a serem usados pelas regras do Contributor Insights, um log em CLF pode ser tratado como uma matriz com um índice que começa em 1. É possível especificar o primeiro campo como "1", o segundo campo como "2" e assim por diante.

Para tornar uma regra para um log em CLF mais fácil de ler, é possível usar Fields. Isso permite fornecer um alias de nomeação para os locais de campo CLF. Por exemplo, você pode especificar que o local "4" é um endereço IP. Após especificado, IpAddress pode ser usado como uma propriedade em Keys, ValueOf e Filters na regra.

Veja a seguir um exemplo de uma regra para um log em que o CLF usa o campo 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" }