• /
  • 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 amostragem

O processador de amostragem implementa amostragem probabilística para reduzir o volume de dados enquanto preserva o sinal. Use-o para manter todos os erros e requisições lentas, enquanto faz uma amostragem agressiva de casos de sucesso rotineiros, reduzindo custos sem perder valor diagnóstico.

Quando usar o processador de amostragem

O processador de amostragem suporta diferentes recursos dependendo do seu tipo de dados de telemetria:

Para Logs e Eventos

Logs e Eventos suportam amostragem condicional com regras personalizáveis baseadas em gravidade, atributos e outros critérios:

  • Mantenha 100% dos erros ao fazer amostragem de casos de sucesso: Preserve todos os dados de diagnóstico, descarte o tráfego de rotina
  • Amostre serviços de alto volume de forma mais agressiva: Diferentes taxas de amostragem por nível de serviço ou importância
  • Preserve requisições lentas ao amostrar as rápidas: Mantenha outliers de desempenho para análise
  • Aplique diferentes taxas de amostragem por ambiente ou serviço: Produção a 10%, staging a 50%, teste a 100%

Para Traces

Traces suportam apenas amostragem baseada em taxa global. Reduza o volume geral de traces com uma taxa de amostragem uniforme.

Para métricas

A amostragem de métricas não é suportada atualmente pelo processador de amostragem. Em vez disso, use o processador de filtro para descartar métricas indesejadas.

Como funciona a amostragem

O processador de amostragem utiliza amostragem probabilística com regras condicionais:

  1. Porcentagem de amostragem padrão: taxa padrão aplicada a todos os dados que não correspondem às regras condicionais.
  2. Regras: substitua a taxa padrão quando condições específicas forem atendidas.
  3. Fonte de aleatoriedade: campo consistente (como trace_id) garante que dados relacionados sejam amostrados juntos.

Ordem de avaliação: regras são avaliadas na ordem definida. A primeira regra de correspondência determina a taxa de amostragem. Se nenhuma regra corresponder, a porcentagem de amostragem padrão será aplicada.

Configuração

Adicione um processador de amostragem ao seu pipeline:

probabilistic_sampler/Logs:
description: Probabilistic sampling for all logs
config:
default_sampling_percentage: 100
rules:
- 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
conditions:
- resource.attributes["service.name"] == "ruby-test-service"

Campos de configuração:

  • default_sampling_percentage: Taxa de amostragem padrão (0–100) para dados que não correspondem a regras.

  • rules: Matriz de regras (avaliadas em ordem) - suportada apenas para logs e eventos.

    • name: Identificador da regra.
    • description: Descrição legível por humanos.
    • sampling_percentage: Taxa de amostragem para dados correspondentes (0–100).
    • source_of_randomness: Campo a ser usado para decisão de amostragem (tipicamente trace_id).
    • conditions: lista de expressões OTTL para corresponder à telemetria.

Estratégias de amostragem

Mantenha dados valiosos, descarte tráfego de rotina

O padrão mais comum para logs e eventos: preservar todos os dados de diagnóstico (erros, requisições lentas), amostrar agressivamente casos de sucesso rotineiros.

probabilistic_sampler/Logs:
description: "Intelligent log sampling"
config:
default_sampling_percentage: 5 # Sample 5% of everything else
rules:
- name: "preserve-errors"
description: "Keep all errors and fatals"
sampling_percentage: 100
source_of_randomness: "trace.id"
conditions:
- 'severity_text == "ERROR" or severity_text == "FATAL"'
- name: "preserve-warnings"
description: "Keep most warnings"
sampling_percentage: 50
source_of_randomness: "trace.id"
conditions:
- 'severity_text == "WARN"'

Resultado: 100% dos erros + 50% dos avisos + 5% de todo o restante

Amostra por nível de serviço

Diferentes taxas de amostragem para diferentes importâncias de serviço:

probabilistic_sampler/Logs:
description: "Service tier sampling"
config:
default_sampling_percentage: 10
rules:
- name: "critical-services"
description: "Keep most traces from critical services"
sampling_percentage: 80
source_of_randomness: "trace.id"
conditions:
- 'resource.attributes["service.name"] == "checkout" or resource.attributes["service.name"] == "payment"'
- name: "standard-services"
description: "Medium sampling for standard services"
sampling_percentage: 30
source_of_randomness: "trace.id"
conditions:
- 'resource.attributes["service.tier"] == "standard"'

Amostra por ambiente

Maior amostragem em ambientes de teste, menor em produção:

probabilistic_sampler/Logs:
description: "Environment-based sampling"
config:
default_sampling_percentage: 10 # Production default
rules:
- name: "test-environment"
description: "Keep all test data"
sampling_percentage: 100
source_of_randomness: "trace.id"
conditions:
- 'resource.attributes["environment"] == "test"'
- name: "staging-environment"
description: "Keep half of staging data"
sampling_percentage: 50
source_of_randomness: "trace.id"
conditions:
- 'resource.attributes["environment"] == "staging"'

Preservar requisições lentas

Mantenha outliers de desempenho para análise:

probabilistic_sampler/Logs:
description: "Preserve important logs"
config:
default_sampling_percentage: 1 # Sample 1% of routine logs
rules:
- name: "critical-logs"
description: "Keep all error and fatal logs"
sampling_percentage: 100
source_of_randomness: "trace.id"
conditions:
- 'severity_text == "ERROR" or severity_text == "FATAL"'
- name: "warning-logs"
description: "Keep half of warning logs"
sampling_percentage: 50
source_of_randomness: "trace.id"
conditions:
- 'severity_text == "WARN"'
- name: "traced-logs"
description: "Keep logs with trace context"
sampling_percentage: 50
source_of_randomness: "trace.id"
conditions:
- 'trace_id != nil and trace_id.string != "00000000000000000000000000000000"'

Nota: A duração é em nanossegundos (1 segundo = 1.000.000.000 ns).

Exemplos completos

Exemplo 1: Amostragem inteligente de rastreamento para rastreamento distribuído

Para traces, você só pode configurar a porcentagem de amostragem padrão. Essa porcentagem se aplica a todos os traces uniformemente, incluindo traces de erro e traces lentos:

probabilistic_sampler/Traces:
description: Probabilistic sampling for traces
config:
default_sampling_percentage: 55

Exemplo 2: Redução do volume de logs

Reduza drasticamente o volume de logs mantendo os dados de diagnóstico:

probabilistic_sampler/Logs:
description: "Aggressive log sampling, preserve errors"
config:
default_sampling_percentage: 2 # Keep 2% of routine logs
rules:
- name: "keep-errors-fatals"
description: "Keep all errors and fatals"
sampling_percentage: 100
source_of_randomness: "trace.id"
conditions:
- 'severity_number >= 17' # ERROR and above
- name: "keep-some-warnings"
description: "Keep 25% of warnings"
sampling_percentage: 25
source_of_randomness: "trace.id"
conditions:
- 'severity_number >= 13 and severity_number < 17' # WARN

Exemplo 3: Amostra por código de status HTTP

Amostre todas as falhas (100%) e uma fração dos sucessos (5%):

probabilistic_sampler/Logs:
description: "Sample by HTTP response status"
config:
default_sampling_percentage: 5 # 5% of successes
rules:
- name: "keep-server-errors"
description: "Keep all 5xx errors"
sampling_percentage: 100
source_of_randomness: "trace.id"
conditions:
- 'attributes["http.status_code"] >= 500'
- name: "keep-client-errors"
description: "Keep all 4xx errors"
sampling_percentage: 100
source_of_randomness: "trace.id"
conditions:
- 'attributes["http.status_code"] >= 400 and attributes["http.status_code"] < 500'

Exemplo 4: Amostragem de serviço multicamadas

Taxas diferentes para diferentes níveis de importância:

probabilistic_sampler/Logs:
description: "Business criticality sampling"
config:
default_sampling_percentage: 1
rules:
# Critical business services: keep 80%
- name: "critical-services"
description: "High sampling for critical services"
sampling_percentage: 80
source_of_randomness: "trace.id"
conditions:
- 'attributes["business_criticality"] == "critical"'
# Important services: keep 40%
- name: "important-services"
description: "Medium sampling for important services"
sampling_percentage: 40
source_of_randomness: "trace.id"
conditions:
- 'attributes["business_criticality"] == "important"'
# Standard services: keep 10%
- name: "standard-services"
description: "Low sampling for standard services"
sampling_percentage: 10
source_of_randomness: "trace.id"
conditions:
- 'attributes["business_criticality"] == "standard"'

Exemplo 5: Amostragem baseada em tempo (redução fora de pico)

Amostragem mais alta durante o horário comercial (requer etiquetagem de atributos externos):

probabilistic_sampler/Logs:
description: "Time-based sampling (requires time attribute)"
config:
default_sampling_percentage: 5 # Off-peak default
rules:
- name: "business-hours"
description: "Higher sampling during business hours"
sampling_percentage: 50
source_of_randomness: "trace.id"
conditions:
- 'attributes["is_business_hours"] == true'

Exemplo 6: Amostra por padrão de endpoint

Mantenha todos os endpoints de administração, amostre a API pública agressivamente:

probabilistic_sampler/Logs:
description: "Endpoint-based sampling"
config:
default_sampling_percentage: 10
rules:
- name: "admin-endpoints"
description: "Keep all admin traffic"
sampling_percentage: 100
source_of_randomness: "trace.id"
conditions:
- 'IsMatch(attributes["http.path"], "^/admin/.*")'
- name: "api-endpoints"
description: "Sample public API"
sampling_percentage: 5
source_of_randomness: "trace.id"
conditions:
- 'IsMatch(attributes["http.path"], "^/api/.*")'

Fonte de aleatoriedade

O campo source_of_randomness determina qual atributo é usado para tomar decisões de amostragem consistentes.

Valores comuns:

  • trace_id: Para rastreamentos distribuídos (garante que todos os spans em um rastreamento sejam amostrados juntos)
  • span_id: Para amostragem de span individual (não recomendado para rastreamento distribuído)
  • Atributo personalizado: Qualquer atributo que forneça aleatoriedade

Por que isso importa: Usar trace_id garante que, ao amostrar um trace, você obtenha TODOS os spans desse trace, não apenas spans individuais aleatórios. Isso é fundamental para entender transações distribuídas.

Considerações de desempenho

  • Ordene as regras por frequência: Coloque as condições correspondidas com mais frequência em primeiro lugar para reduzir o tempo de avaliação
  • Desempenho da fonte de aleatoriedade: O uso de trace_id é muito eficiente, pois já está disponível
  • A amostragem ocorre após outros processadores: Coloque a amostragem perto do final do seu pipeline para evitar o desperdício de CPU em dados que serão descartados

Ordenação eficiente de pipelines:

steps:
# ... receive steps...
probabilistic_sampler/Logs:
description: Probabilistic sampling for all logs
output:
- filter/Logs
config:
rules:
- 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
conditions:
- resource.attributes["service.name"] == "ruby-test-service"
default_sampling_percentage: 100
probabilistic_sampler/Traces:
description: Probabilistic sampling for traces
output:
- filter/Traces
config:
default_sampling_percentage: 100
filter/Logs:
description: Apply drop rules and data processing for logs
output:
- transform/Logs
config:
error_mode: ignore
rules:
- name: drop the log records
description: drop all records which has severity text INFO
conditions:
- log.severity_text == "INFO"
context: log
# ... filter steps ...
# ... transdormer steps ...

Exemplos de impacto nos custos

Exemplo: 1TB/dia → 100GB/dia

Antes da amostragem:

  • 1TB de logs por dia
  • 90% são operações de rotina de nível INFO
  • 8% são WARN
  • 2% são ERROR/FATAL

Com amostragem inteligente:

probabilistic_sampler/Logs:
description: "Sample logs by severity level"
config:
default_sampling_percentage: 2 # Sample 2% of INFO and below
rules:
- name: "errors"
description: "Keep all error logs"
sampling_percentage: 100 # Keep 100% of errors
source_of_randomness: "trace.id"
conditions:
- 'severity_number >= 17'
- name: "warnings"
description: "Keep quarter of warning logs"
sampling_percentage: 25 # Keep 25% of warnings
source_of_randomness: "trace.id"
conditions:
- 'severity_number >= 13 and severity_number < 17'

Após a amostragem:

  • INFO: 900GB × 2% = 18GB
  • AVISO: 80GB × 25% = 20GB
  • ERRO/FATAL: 20GB × 100% = 20GB
  • Total: -58GB/dia (redução de 94%)
  • Todos os erros preservados para solução de problemas

Recursos do OpenTelemetry

Próximos passos

Copyright © 2026 New Relic Inc.

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