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 especificarLogGroupNames
ouLogGroupARNs
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 definirarn:aws:logs:us-west-1:*:log-group/MyLogGroupName2
para especificar grupos de logs denominadosMyLogGroupName2
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 definirarn: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 comGroupNamePrefix
.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
eCLF
. - Contribuição
-
Esse objeto inclui uma matriz
Keys
com até quatro membros, opcionalmente, um únicoValueOf
e, opcionalmente, uma matriz de até quatroFilters
. - 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 deAggregateOn
. OValueOf
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 peloBytesSent
total durante um período, definaValueOf
comoBytesSent
e especifiqueSum
emAggregateOn
. - 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
ouIsPresent
. Se o campo de operador forIn
,NotIn
ouStartsWith
, 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
ouNotEqualTo
, ele será seguido por um único valor número com o qual será comparado.Se o campo de operador for
IsPresent
, ele será seguido portrue
oufalse
. Esse operador corresponde a eventos de log dependendo se o campo de log especificado estava presente ou não no evento de log. OisPresent
funciona somente com valores no nó folha de propriedades JSON. Por exemplo, um filtro que procura correspondências comc-count
não avaliará um evento de log com um valor dedetails.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
eSum
. 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 campoValueOf
.
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" }