Como usar padrões de filtros para fazer a correspondência de termos em eventos de log JSON - CloudWatch Registros da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como usar padrões de filtros para fazer a correspondência de termos em eventos de log JSON

Use padrões de filtro JSON quando seus registros estiverem estruturados no formato JSON. Esses padrões permitem segmentar campos e valores específicos em objetos JSON, tornando-os ideais para:

  • Registros de aplicativos: segmente tipos de eventos IDs, usuários ou códigos de erro específicos

  • AWS registros de serviço: filtro CloudTrail, registros de fluxo de VPC ou outros registros estruturados AWS

  • Microsserviços: monitore aplicativos em contêineres que geram JSON estruturado

Por exemplo, use { $.eventType = "UpdateTrail" } para encontrar CloudTrail eventos específicos ou { $.sourceIPAddress != 123.123.* } para identificar tráfego de intervalos de IP inesperados.

Expanda as seções a seguir e navegue pelas guias para ver exemplos que mostram como criar padrões de filtro JSON para cenários de monitoramento comuns, desde padrões básicos de condição única até expressões compostas complexas.

Os exemplos a seguir mostram como usar padrões de filtro com eventos de log JSON em cenários comuns de monitoramento e solução de problemas. Cada exemplo inclui a sintaxe do padrão de filtro e casos de uso práticos em que você o aplicaria.

Esses padrões funcionam com qualquer registro formatado em JSON de aplicativos, AWS serviços, contêineres ou sistemas personalizados. Você pode usá-los com filtros métricos para criar CloudWatch métricas, filtros de assinatura para encaminhar registros para outros serviços ou Live Tail para monitorar registros em tempo real.

nota

Se você testar um padrão de filtro de exemplo com o evento de log JSON de exemplo, deverá inserir o log JSON de exemplo em uma única linha.

Exemplo de evento de log JSON para teste:

{ "eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": [ "value", "another value" ], "objectList": [ { "name": "a", "id": 1 }, { "name": "b", "id": 2 } ], "SomeObject": null, "cluster.name": "c" }
Monitor application events by type

Acompanhe tipos de eventos específicos nos registros do seu aplicativo JSON para monitorar o comportamento do sistema.

Padrão de filtro:

{ $.eventType = "UpdateTrail" }

Casos de uso:

  • Monitoramento de aplicativos: acompanhe ações específicas do usuário ou eventos do sistema

  • Análise de negócios: conte ocorrências de tipos específicos de eventos

  • Solução de problemas: concentre-se em operações específicas ao investigar problemas

Esse padrão funciona com qualquer registro JSON contendo um campo eventType, como:

  • Registros do aplicativo: {"eventType": "UserLogin", "userId": "123"}

  • Registros do sistema: {"eventType": "ConfigUpdate", "component": "database"}

  • Registros da API: {"eventType": "UpdateTrail", "source": "cloudtrail"}

Block suspicious IP addresses

Identifique o tráfego que não corresponde aos padrões de endereço IP esperados para o monitoramento de segurança.

Padrão de filtro:

{ $.sourceIPAddress != 123.123.* }

Casos de uso:

  • Monitoramento de segurança: encontre solicitações de intervalos de IP inesperados

  • Controle de acesso: monitore o tráfego fora da sua rede corporativa

  • Detecção de ameaças: identifique possíveis tentativas de acesso não autorizado

Track specific application events

Monitore valores específicos em matrizes JSON para rastrear o comportamento do aplicativo e as ações do usuário.

Padrão de filtro:

{ $.arrayKey[0] = "value" }

Casos de uso:

  • Rastreamento do comportamento do usuário: monitore ações específicas do usuário nos registros do aplicativo

  • Uso de recursos: acompanhe quando recursos específicos do aplicativo são usados

  • Análise de erros: encontre registros com categorias de erro específicas em matrizes

Find events using pattern matching

Use padrões regex para encontrar eventos com correspondência flexível para valores de campo.

Padrão de filtro:

{ $.eventType = %Trail% }

Casos de uso:

  • Rastreamento flexível de eventos: encontre todos os eventos que contêm padrões de texto específicos

  • Monitoramento de API: acompanhe famílias de APIs sem especificar nomes exatos

  • Análise de registros: pesquise correspondências parciais em nomes ou descrições de eventos

Monitor application data with wildcards

Use curingas e regex para encontrar padrões específicos em qualquer elemento da matriz.

Padrão de filtro:

{ $.arrayKey[*] = %val.{2}% }

Casos de uso:

  • Validação de dados: encontre matrizes contendo valores que correspondam a padrões específicos

  • Filtragem de conteúdo: monitore o conteúdo gerado pelo usuário para padrões específicos

  • Garantia de qualidade: acompanhe a conformidade do formato de dados nos registros do aplicativo

Track network traffic patterns

Monitore endereços IP dentro de intervalos específicos usando padrões de regex e curingas.

Padrão de filtro:

{ $.* = %111\.111\.111\.1[0-9]{1,2}% }

Casos de uso:

  • Monitoramento de rede: rastreie o tráfego de sub-redes IP específicas

  • Análise de segurança: monitore o acesso de intervalos de rede específicos

  • Balanceamento de carga: analise a distribuição do tráfego em intervalos de IP

nota

Cotas

É possível usar no máximo um seletor de curinga em um seletor de propriedades.

Handle JSON properties with special characters

Acesse propriedades JSON que contêm pontos ou outros caracteres especiais em seus nomes.

Padrão de filtro:

{ $.['cluster.name'] = "c" }

Casos de uso:

  • Monitoramento do Kubernetes: rastreie nomes de clusters em registros de contêineres

  • Rastreamento de configuração: monitore as configurações com nomes de propriedades pontilhados

  • Integração de terceiros: manipule registros de sistemas usando convenções de nomenclatura especiais

Find null or missing values

Monitore dados ausentes ou valores nulos que possam indicar problemas no aplicativo.

Padrão de filtro:

{ $.SomeObject IS NULL }

Casos de uso:

  • Monitoramento da qualidade de dados: encontre registros com campos obrigatórios ausentes

  • Depuração de aplicativos: monitore quando os dados esperados não estão presentes

  • Detecção de erros: monitore respostas incompletas da API ou consultas ao banco de dados

Detect missing configuration fields

Encontre registros que não tenham totalmente os campos esperados, o que pode indicar problemas de configuração.

Padrão de filtro:

{ $.SomeOtherObject NOT EXISTS }

Casos de uso:

  • Validação da configuração: garanta que todos os campos obrigatórios estejam presentes nos registros

  • Monitoramento de API: acompanhe solicitações ou respostas incompletas

  • Monitoramento do pipeline de dados: encontre registros sem os campos de esquema esperados

nota

No momento, não há compatibilidade com as variáveis IS NOT e EXISTS.

Use expressões compostas quando precisar combinar várias condições usando os operadores lógicos AND (“&&”) e OR (“||”). Esses padrões ajudam você a criar regras de monitoramento sofisticadas que exigem que vários critérios sejam atendidos ou acionados em qualquer uma das várias condições.

As expressões compostas suportam parênteses (“()”) e seguem a ordem padrão das operações: () > && > ||. Use esses padrões quando filtros simples de condição única não forem suficientes para suas necessidades de monitoramento.

Exemplo de evento de log JSON para teste:

{ "user": { "id": 1, "email": "John.Stiles@example.com" }, "users": [ { "id": 2, "email": "John.Doe@example.com" }, { "id": 3, "email": "Jane.Doe@example.com" } ], "actions": [ "GET", "PUT", "DELETE" ], "coordinates": [ [0, 1, 2], [4, 5, 6], [7, 8, 9] ] }
Monitor specific user actions

Acompanhe quando usuários específicos realizam ações específicas combinando a identificação do usuário com o monitoramento de ações.

Padrão de filtro:

{ ($.user.id = 1) && ($.users[0].email = "John.Doe@example.com") }

Casos de uso:

  • Auditoria de segurança: monitore quando usuários administradores específicos acessam recursos confidenciais

  • Monitoramento de conformidade: garanta que determinados usuários realizem somente ações aprovadas

  • Análise do comportamento do usuário: monitore as correlações entre atributos e ações do usuário

Alert on any suspicious activity

Crie um amplo monitoramento que seja acionado quando ocorrer qualquer uma das várias condições preocupantes.

Padrão de filtro:

{ $.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch" && $.actions[2] = "nonmatch" }

Casos de uso:

  • Monitoramento de segurança: alerte quando usuários específicos estiverem ativos OU quando ocorrerem padrões de dados incomuns

  • Integridade do sistema: monitore qualquer uma das várias condições de erro diferentes

  • Alertas flexíveis: crie regras abrangentes para vários cenários preocupantes

Require multiple conditions for alerts

Reduza os falsos positivos exigindo que várias condições específicas sejam atendidas antes de acionar alertas.

Padrão de filtro:

{ ($.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch") && $.actions[2] = "nonmatch" }

Casos de uso:

  • Alerta de alta confiança: alerta somente quando vários indicadores suspeitos se alinham

  • Regras de negócios complexas: monitore cenários que exigem vários critérios

  • Redução de ruído: evite alertas de eventos isolados únicos

nota

Cotas

É possível usar no máximo um seletor de curinga em um seletor de propriedades e até três seletores de curinga em um padrão de filtro com expressões compostas.

Monitor failed correlation attempts

Monitore quando as relações esperadas entre os campos de dados não coincidem, o que pode indicar problemas de qualidade dos dados.

Padrão de filtro:

{ ($.user.id = 2 && $.users[0].email = "nonmatch") || $.actions[2] = "GET" }

Casos de uso:

  • Validação de dados: encontre registros em que os campos relacionados não correspondam aos padrões esperados

  • Integridade do sistema: monitore a corrupção de dados ou problemas de sincronização

  • Garantia de qualidade: acompanhe quando os relacionamentos de dados se rompem