• /
  • EnglishEspañolFrançais日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

Processador de filtro

O processador de filtro descarta registros de telemetria ou atributos específicos com base em expressões booleanas da OTTL (OpenTelemetry Transformation Language). Use-o para remover dados de teste, logs de depuração, verificações de integridade ou qualquer telemetria de baixo valor antes que saia da sua rede.

Quando usar o processador de filtro

Use o processador de filtro quando precisar:

  • Descarte PII ou dados de ambiente de teste: Remova dados que não devem sair da sua rede
  • Remova logs de nível debug da produção: Filtre por severidade para reduzir o ruído
  • Filtrar solicitações de verificação de integridade: Descarte tráfego de monitoramento repetitivo e de baixo valor
  • Descarte métricas com prefixos ou padrões específicos: Remova fluxos de métricas desnecessários
  • Remova telemetria de baixo valor com base em atributos: Filtre por nome do serviço, ambiente ou tags personalizadas

Como funciona o processador de filtro

O processador de filtro avalia expressões booleanas OTTL em relação a cada registro de telemetria. Quando uma condição é avaliada como true, o registro é descartado.

Isso é o oposto de muitas linguagens de consulta onde WHERE status = 'ERROR' significa "manter erros." No processador de filtro, status == 'ERROR' significa "descartar erros".

Configuração

Adicione um processador de filtro ao seu pipeline:

filter/Logs:
description: Apply drop rules and data processing for logs
output:
- transform/Logs
config:
error_mode: ignore
logs:
rules:
- name: drop the log records
description: drop all records which has severity text INFO
value: log.severity_text == "INFO"

Campos de configuração:

  • logs: Array de expressões booleanas OTTL para filtragem de logs
  • span, span_event: Array de expressões booleanas OTTL para filtragem de spans de rastreamento
  • metric, datapoint: Array de expressões booleanas OTTL para filtragem de métricas

Múltiplas condições: Quando você fornece várias expressões no array, elas são avaliadas com a lógica OU. Se qualquer condição for verdadeira, o registro é descartado.

Operadores booleanos OTTL

Operadores de comparação

  • == - Igual a
  • != - Diferente de
  • < - Menor que
  • <= - Menor ou igual a
  • > - Maior que
  • >= - Maior ou igual a

Operadores lógicos

  • and - Ambas as condições devem ser verdadeiras
  • or - Uma das condições deve ser verdadeira
  • not - Nega uma condição

Correspondência de padrões

  • matches - Correspondência de padrão de regex
logs:
- 'body matches ".*health.*"'
- 'attributes["http.url"] matches ".*\\/api\\/v1\\/health.*"'

Exemplos completos

Exemplo 1: Descartar dados do ambiente de teste

Remova toda a telemetria dos ambientes de teste e desenvolvimento:

filter/Logs:
description: "Drop non-production environments"
config:
error_mode: ignore
logs:
rules:
- name: drop-test-environment
description: Drop logs from test environment
value: resource.attributes["environment"] == "test"
- name: drop-dev-environment
description: Drop logs from dev environment
value: resource.attributes["environment"] == "dev"
- name: drop-local-environment
description: Drop logs from local environment
value: resource.attributes["environment"] == "local"

Exemplo 2: Descartar logs de debug em produção

Mantenha apenas níveis de log significativos em produção:

filter/Logs:
description: "Drop debug and trace logs"
config:
error_mode: ignore
logs:
rules:
- name: drop-debug-logs
description: Drop all DEBUG severity logs
value: severity_text == "DEBUG"
- name: drop-trace-logs
description: Drop all TRACE severity logs
value: severity_text == "TRACE"
- name: drop-low-severity-logs
description: Drop INFO and below severity logs
value: severity_number < 9

Referência do número de gravidade:

  • TRACE = 1-4
  • DEBUG = 5-8
  • INFO = 9-12
  • WARN = 13-16
  • ERRO = 17-20
  • FATAL = 21-24

Exemplo 3: Descartar spans de verificação de integridade

Remova o tráfego de verificação de integridade que não agrega valor diagnóstico:

filter/Traces:
description: "Drop health check spans"
config:
error_mode: ignore
span:
rules:
- name: drop-health-endpoint
description: Drop spans from /health endpoint
value: attributes["http.path"] == "/health"
- name: drop-healthz-endpoint
description: Drop spans from /healthz endpoint
value: attributes["http.path"] == "/healthz"
- name: drop-ping-endpoint
description: Drop spans from /ping endpoint
value: attributes["http.path"] == "/ping"
- name: drop-health-check-spans
description: Drop spans named health_check
value: name == "health_check"

Exemplo 4: Descartar por nome do serviço

Filtrar serviços específicos ou padrões de serviço:

filter/Logs:
description: "Drop deprecated services"
config:
error_mode: ignore
logs:
rules:
- name: drop-legacy-api
description: Drop logs from legacy API v1 service
value: resource.attributes["service.name"] == "legacy-api-v1"
- name: drop-canary-services
description: Drop logs from canary deployment services
value: IsMatch(resource.attributes["service.name"], ".*-canary")

Exemplo 5: Descartar métricas com prefixos específicos

Remova fluxos de métricas desnecessários:

filter/Metrics:
description: "Drop internal metrics"
config:
error_mode: ignore
metric:
rules:
- name: drop-internal-metrics
description: Drop metrics with internal prefix
value: IsMatch(name, "^internal\\.")
- name: drop-test-metrics
description: Drop metrics with test prefix
value: IsMatch(name, "^test_")
- name: drop-debug-metrics
description: Drop metrics marked as debug type in resource attributes
value: resource.attributes["metric.type"] == "debug"
datapoint:
rules:
- name: drop-debug-datapoints
description: Drop datapoints marked as debug type
value: attributes["metric.type"] == "debug"

Exemplo 6: Condições combinadas com AND

Descartar apenas quando múltiplas condições forem verdadeiras:

filter/Logs:
description: "Drop debug logs from specific service in test environment"
config:
error_mode: ignore
logs:
rules:
- name: drop-debug-logs-from-test
description: Drop DEBUG logs from background-worker service in test environment
value: |
severity_text == "DEBUG" and
resource.attributes["service.name"] == "background-worker" and
resource.attributes["environment"] == "test"

Exemplo 7: Manter erros, descartar o restante

Inverta a lógica para manter apenas dados valiosos:

filter/Logs:
description: "Drop non-error logs"
config:
error_mode: ignore
logs:
rules:
- name: drop-non-error-logs
description: Drop everything below ERROR severity level
value: severity_number < 17

Ou use a lógica NOT:

filter/Logs:
description: "Drop non-errors"
config:
error_mode: ignore
logs:
rules:
- name: drop-non-error-logs
description: Drop logs that are not ERROR or FATAL
value: not (severity_text == "ERROR" or severity_text == "FATAL")

Exemplo 8: Correspondência de padrões no corpo do log

Descartar logs que contenham padrões específicos:

filter/Logs:
description: "Drop health check logs by body content"
config:
error_mode: ignore
logs:
rules:
- name: drop-health-check-logs
description: Drop logs with health check in body
value: IsMatch(body, ".*health check.*")
- name: drop-status-endpoint-logs
description: Drop logs with GET /status in body
value: IsMatch(body, ".*GET /status.*")
- name: drop-monitor-ok-logs
description: Drop logs with 200 OK monitor in body
value: IsMatch(body, ".*200 OK.*monitor.*")

Exemplo 9: Descartar spans de alto volume e baixo valor

Remova spans que ocorrem com frequência, mas agregam pouco valor:

filter/Traces:
description: "Drop fast, successful cache hits"
config:
error_mode: ignore
span:
rules:
- name: drop-fast-cache-hits
description: Drop cache hit operations faster than 1ms
value: |
attributes["db.operation"] == "get" and
end_time_unix_nano - start_time_unix_nano < 1000000 and
attributes["cache.hit"] == true

Exemplo 10: Descarte baseado no status HTTP

Filtrar requisições bem-sucedidas, manter erros:

filter/Traces:
description: "Drop successful HTTP requests"
config:
error_mode: ignore
span:
rules:
- name: drop-successful-requests
description: Drop HTTP requests with status code less than 400
value: attributes["http.status_code"] < 400

Exemplo 11: Múltiplas condições com OU

Descartar se alguma condição corresponder:

filter/Logs:
description: "Drop test data, health checks, or debug logs"
config:
error_mode: ignore
logs:
rules:
- name: drop-test-health-debug
description: Drop logs from test environment, health checks, or debug severity
value: |
resource.attributes["environment"] == "test" or
IsMatch(body, ".*health.*") or
severity_text == "DEBUG"

Descartar dados vs. descartar atributos

O processador de filtro pode descartar registros inteiros (como mostrado acima) ou descartar atributos específicos de registros que são mantidos.

Para descartar atributos mantendo o registro, você precisa usar a função delete_key() do processador de transformação, e não o processador de filtro. O processador de filtro descarta apenas registros inteiros.

Abordagem incorreta (isso não funcionará):

filter/Logs:
config:
logs:
- 'delete attributes["sensitive_field"]' # This is not valid

Abordagem correta (use o processador de transformação em vez disso):

transform/Logs:
description: "Remove sensitive attribute"
config:
log_statements:
- delete_key(attributes, "sensitive_field")
output: ["filter/Logs"]

Considerações de desempenho

  • A ordem importa: Coloque os processadores de filtro no início do seu pipeline para descartar dados indesejados antes de um processamento custoso
  • Combine condições: Use a lógica and/or em uma única expressão em vez de encadear vários processadores de filtro
  • Desempenho de regex: A correspondência de padrões com matches é mais custosa do que verificações de igualdade exata. Use == quando possível.

Exemplo de ordenação eficiente:

steps:
receivelogs:
description: Receive logs from OTLP and New Relic proprietary sources
output:
- probabilistic_sampler/Logs
receivemetrics:
description: Receive metrics from OTLP and New Relic proprietary sources
output:
- filter/Metrics
receivetraces:
description: Receive traces from OTLP and New Relic proprietary sources
output:
- probabilistic_sampler/Traces
probabilistic_sampler/Logs:
description: Probabilistic sampling for all logs
output:
- filter/Logs
config:
global_sampling_percentage: 100
conditionalSamplingRules:
- name: sample the log records for ruby test service
description: sample the log records for ruby test service with 70%
sampling_percentage: 70
source_of_randomness: trace.id
condition: resource.attributes["service.name"] == "ruby-test-service"
probabilistic_sampler/Traces:
description: Probabilistic sampling for traces
output:
- filter/Traces
config:
global_sampling_percentage: 80
filter/Logs:
description: Apply drop rules and data processing for logs
output:
- transform/Logs
config:
error_mode: ignore
logs:
rules:
- name: drop the log records
description: drop all records which has severity text INFO
value: log.severity_text == "INFO"
filter/Metrics:
description: Apply drop rules and data processing for metrics
output:
- transform/Metrics
config:
error_mode: ignore
metric:
rules:
- name: drop entire metrics
description: delete the metric on basis of humidity_level_metric
value: (name == "humidity_level_metric" and IsMatch(resource.attributes["process_group_id"], "pcg_.*"))
datapoint:
rules:
- name: drop datapoint
description: drop datapoint on the basis of unit
value: (attributes["unit"] == "Fahrenheit" and (IsMatch(attributes["process_group_id"], "pcg_.*") or IsMatch(resource.attributes["process_group_id"], "pcg_.*")))
filter/Traces:
description: Apply drop rules and data processing for traces
output:
- transform/Traces
config:
error_mode: ignore
span:
rules:
- name: delete spans
description: deleting the span for a specified host
value: (attributes["host"] == "host123.example.com" and (IsMatch(attributes["control_group_id"], "pcg_.*") or IsMatch(resource.attributes["control_group_id"], "pcg_.*")))
span_event:
rules:
- name: Drop all the traces span event
description: Drop all the traces span event with name debug event
value: name == "debug_event"
transform/Logs:
description: Transform and process logs
output:
- nrexporter/newrelic
config:
log_statements:
- context: log
name: add new field to attribute
description: for otlp-test-service application add newrelic source type field
conditions:
- resource.attributes["service.name"] == "otlp-java-test-service"
statements:
- set(resource.attributes["source.type"],"otlp")
transform/Metrics:
description: Transform and process metrics
output:
- nrexporter/newrelic
config:
metric_statements:
- context: metric
name: adding a new attributes
description: 'adding a new field into a attributes '
conditions:
- resource.attributes["service.name"] == "payments-api"
statements:
- set(resource.attributes["application.name"], "compute-application")
transform/Traces:
description: Transform and process traces
output:
- nrexporter/newrelic
config:
trace_statements:
- context: span
name: remove the attribute
description: remove the attribute when service name is payment-service
conditions:
- resource.attributes["service.name"] == "payment-service"
statements:
- delete_key(resource.attributes, "service.version")

Referência de expressão booleana OTTL

Para a sintaxe completa do OTTL e operadores adicionais:

Próximos passos

Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.