Os logs de acesso do plano de dados do Service Mesh (ASM) oferecem visibilidade sobre padrões de requisição, taxas de erro e comportamento dos serviços. Em ambientes com alto volume de tráfego, o registro de logs sem filtragem gera sobrecarga nos proxies sidecar e produz mais dados do que é possível analisar de forma eficaz.
A Common Expression Language (CEL) permite escrever regras de filtragem que controlam quais entradas de log o proxy sidecar emite. Cada expressão CEL é avaliada por requisição: as entradas são registradas quando a expressão retorna true e descartadas quando retorna false.
Exemplos de expressões CEL
Os exemplos a seguir variam de filtros de condição única a regras com múltiplas condições.
Filtrar por código de status da resposta
Registre apenas respostas de erro (código de status 400 ou superior):
response.code >= 400
O atributo response.code representa o código de status HTTP. Essa expressão descarta entradas 1xx, 2xx e 3xx, mantendo somente erros de cliente (4xx) e de servidor (5xx).
Corresponder a caminhos de URL da requisição
Registre requisições cujo caminho contenha uma substring específica:
request.url_path.contains('login')
O atributo request.url_path corresponde ao caminho da requisição HTTP sem a string de consulta. O método contains é uma função padrão de string da CEL que retorna um valor booleano.
Combinar condições com operadores lógicos
Crie filtros com múltiplas condições usando && (AND) e || (OR).
AND — todas as condições devem corresponder:
request.url_path.contains('login') && request.headers['x-user-type'] == 'dev'
Registra requisições em que o caminho contém login e o cabeçalho x-user-type é igual a dev. O atributo request.headers é um map<string, string> com todos os cabeçalhos da requisição.
OR — qualquer condição corresponde:
request.url_path.contains('login') || request.url_path.contains('logout')
Registra requisições em que o caminho contém login ou logout.
Atributos CEL compatíveis
Atributos da requisição
|
Atributo |
Tipo |
Descrição |
|
|
string |
Caminho da URL HTTP com a string de consulta |
|
|
string |
Caminho da URL HTTP sem a string de consulta |
|
|
string |
Nome do host extraído da URL HTTP |
|
|
string |
Esquema da URL, como |
|
|
string |
Método HTTP, como |
|
|
map |
Todos os cabeçalhos da requisição |
|
|
string |
Valor do cabeçalho Referer |
|
|
string |
Valor do cabeçalho User-Agent |
|
|
timestamp |
Momento em que o primeiro byte da requisição foi recebido |
|
|
string |
Valor do cabeçalho x-request-id |
|
|
string |
Protocolo da requisição, como |
|
|
string |
String de consulta da URL, como |
|
|
duration |
Duração total da requisição |
|
|
int |
Tamanho do corpo da requisição. Usa o valor do cabeçalho Content-Length quando disponível. |
|
|
int |
Tamanho total da requisição, incluindo cabeçalhos |
Atributos da resposta
|
Atributo |
Tipo |
Descrição |
|
|
int |
Código de status HTTP |
|
|
string |
Descrição do código de status da resposta |
|
|
int |
Detalhes adicionais da resposta além do código de status HTTP, codificados como vetor de bits |
|
|
int |
Código de status gRPC |
|
|
map |
Todos os cabeçalhos da resposta |
|
|
map |
Todos os trailers da resposta |
|
|
int |
Tamanho do corpo da resposta |
|
|
int |
Tamanho total da resposta, incluindo cabeçalhos |
Atributos da conexão downstream
|
Atributo |
Tipo |
Descrição |
|
|
string |
Endereço do cliente downstream |
|
|
int |
Porta do cliente downstream |
|
|
string |
Endereço de destino da conexão downstream |
|
|
int |
Porta de destino da conexão downstream |
|
|
uint |
ID da conexão downstream |
|
|
bool |
Indica se o mTLS está ativado e se a conexão carrega um certificado de cliente |
|
|
string |
Nome do servidor solicitado pela conexão TLS downstream (SNI) |
|
|
string |
Versão do TLS da conexão downstream |
|
|
string |
Campo Subject do certificado do servidor |
|
|
string |
Campo Subject do certificado do cliente |
|
|
string |
Primeira entrada DNS no campo SAN do certificado do servidor |
|
|
string |
Primeira entrada DNS no campo SAN do certificado do cliente |
|
|
string |
Primeira entrada URI no campo SAN do certificado do servidor |
|
|
string |
Primeira entrada URI no campo SAN do certificado do cliente |
|
|
string |
Digest SHA256 do certificado do cliente |
|
|
string |
Motivo da falha de transporte, como falha na validação do certificado |
Atributos da conexão upstream
|
Atributo |
Tipo |
Descrição |
|
|
string |
Endereço de destino da conexão upstream |
|
|
int |
Porta de destino da conexão upstream |
|
|
string |
Versão do TLS da conexão upstream |
|
|
string |
Campo Subject do certificado de cliente usado na conexão upstream |
|
|
string |
Campo Subject do certificado do servidor usado na conexão upstream |
|
|
string |
Primeira entrada DNS no campo SAN do certificado de cliente |
|
|
string |
Primeira entrada DNS no campo SAN do certificado do servidor |
|
|
string |
Primeira entrada URI no campo SAN do certificado de cliente |
|
|
string |
Primeira entrada URI no campo SAN do certificado do servidor |
|
|
string |
Digest SHA256 do certificado do servidor |
|
|
string |
Endereço local da conexão upstream |
|
|
string |
Motivo da falha de transporte upstream, como falha na validação do certificado |