Pular para o conteúdo

ebpf_exporter - Métricas de Kernel Customizadas para Prometheus - Guia de Referência

ebpf_exporter - Métricas de Kernel Customizadas para Prometheus - Guia de Referência

ebpf_exporter (by Cloudflare) faz ponte eBPF e Prometheus. Exportadores padrão superficiam contadores que o kernel já publica; ebpf_exporter deixa você anexar programas eBPF customizados a sondas de kernel e exportar o que quer que eles meçam como métricas Prometheus — histogramas de latência de I/O de disco, causas de retransmissão TCP, delay de run-queue scheduler, comportamento de page-cache. Transforma perguntas de kernel profundas, ad-hoc em séries temporais continuamente-scrapeadas.

Requisitos

  • Kernel Linux com BPF + BTF (5.x recomendado)
  • Privilégios root / CAP_BPF
  • Prometheus para scrape do endpoint

Instalação

MétodoComando
BinárioBaixar de GitHub Releases
Dockerdocker run --privileged -p 9435:9435 cloudflare/ebpf_exporter
Do código-fontegit clone https://github.com/cloudflare/ebpf_exporter && make
Executarsudo ebpf_exporter --config.dir=examples --config.names=biolatency
Métricashttp://localhost:9435/metrics

Executando com Exemplos Inclusos

# Exportar histogramas de latência de I/O de bloco
sudo ./ebpf_exporter --config.dir=examples --config.names=biolatency

# Múltiplos programas de uma vez
sudo ./ebpf_exporter --config.dir=examples \
  --config.names=biolatency,tcp-syn-backlog,run-queue-latency
FlagPropósito
--config.dirDiretório de configs de programa
--config.namesQuais programas carregar (comma-separated)
--web.listen-addressEndereço bind (padrão :9435)
--debugCarregamento verbose/diagnósticos

Programas Inclusos (exemplos)

ProgramaMede
biolatencyHistograma de latência de I/O de bloco
bio-tracepointsI/O de disco por dispositivo/operação
run-queue-latencyDelay de scheduler antes de uma task executar
tcp-syn-backlogProfundidade de SYN backlog
tcp-window-clampsEventos de clamping de janela TCP
timersComportamento de timer/softirq
cachestatPage cache hit/miss
oomkillEventos de OOM kill

Estrutura de Config

Um programa acopla um objeto eBPF compilado com definições de métricas:

metrics:
  histograms:
    - name: bio_latency_seconds
      help: Block IO latency histogram
      bucket_type: exp2
      bucket_multiplier: 0.000001   # microseconds → seconds
      bucket_min: 0
      bucket_max: 26
      labels:
        - name: device
          size: 32
          decoders:
            - name: string
        - name: bucket
          size: 8
          decoders:
            - name: uint
CampoPropósito
counters / histogramsTipo de métrica para exportar
bucket_typeBucketing de histograma exp2 / linear
bucket_multiplierEscalar unidades de kernel bruto para segundos
labelsMap chaves de mapa BPF para labels Prometheus
decodersConverter bytes brutos (string, uint, ksym, cgroup…)

Decodificadores Úteis

DecodificadorConverte
stringArray de byte → label string
uintInteiro bruto
ksymEndereço de kernel → nome de símbolo
majorminorNúmeros de dispositivo → sda, nvme0n1
cgroupID de cgroup → caminho
static_mapEnum numérico → label legível

Consultando em Prometheus

# p99 block I/O latency por dispositivo
histogram_quantile(0.99,
  sum(rate(bio_latency_seconds_bucket[5m])) by (le, device))

# Scheduler run-queue delay p95 (sinal de saturação de CPU)
histogram_quantile(0.95,
  sum(rate(run_queue_latency_seconds_bucket[5m])) by (le))

Quando Alcançar por Isso

PerguntaExportadores padrãoebpf_exporter
”O disco está ocupado?”Sim (node_exporter)
“Qual é a distribuição de latência de I/O?”NãoSim
”Quanto tempo tasks esperam para serem agendadas?”NãoSim
”Por que retransmissões TCP estão acontecendo?”ParcialmenteSim
”Qual cgroup causou isso?”NãoSim (cgroup decoder)

ebpf_exporter vs Ferramentas Relacionadas

FerramentaModelo
ebpf_exporterMétricas eBPF contínuas → Prometheus
bpftraceOne-liners eBPF ad-hoc, interativos
bcc-toolsFerramentas de diagnóstico eBPF pré-construídas
node_exporterMétricas publicadas por kernel padrão
bpftopOverhead de executar programas eBPF

Use bpftrace para explorar uma pergunta interativamente, depois codifique a resposta como uma métrica permanente ebpf_exporter.

Recursos