github robintra/perf-sentinel v0.2.0

latest releases: chart-v0.2.50, v0.8.5, chart-v0.2.49...
2 months ago

perf-sentinel v0.2.0

Second release. Adds multi-format trace ingestion, interactive inspection, SARIF export, and deeper detection capabilities.

New Features

  • Explain mode (perf-sentinel explain --trace-id ID): colored span tree view with JSON output, depth guard (256), and cyclic parent protection
  • TUI inspect mode (perf-sentinel inspect): 3-panel ratatui interface (traces, findings, detail + span tree) with cached tree per trace
  • SARIF v2.1.0 export (--format sarif): compatible with GitHub/GitLab code scanning integration
  • Jaeger & Zipkin ingestion: Jaeger JSON and Zipkin JSON v2 formats with auto-detection via byte-level heuristics
  • pg_stat_statements ingestion (perf-sentinel pg-stat): CSV/JSON auto-detection, top-N rankings by total_exec_time/calls/mean_exec_time, cross-reference with trace findings via --traces
  • Fanout detection: new ExcessiveFanout finding type with configurable max_fanout (default 20, range 1–100,000)
  • Cross-trace slow percentiles: p50/p95/p99 via nearest-rank algorithm
  • Grafana Exemplars: OpenMetrics exemplar annotations on findings_total and io_waste_ratio metrics

Improvements

  • SQL tokenizer: double-quoted identifiers and PostgreSQL dollar-quoted strings ($$/$tag$) now supported; CTEs and CALL confirmed working
  • ID validation: sanitize_id() with char-boundary-aware UTF-8 truncation (MAX_ID_LENGTH=128) at normalize boundary
  • Pipeline: analyze_with_traces() extracted to reduce duplication; shared sort_findings() between pipeline and inspect
  • parent_span_id added to SpanEvent for tree building and fanout detection
  • is_avoidable_io() as single source of truth for waste classification
  • SonarCloud complexity fixes across SQL tokenizer, bench, and normalize modules
  • Security audit workflow updated to actions-rust-lang/audit v1.2.7

Documentation

  • OTel Collector config (otel-collector-config.yaml) with batch, tail_sampling, and filter examples
  • Docker Compose with healthchecks
  • Contributor Covenant Code of Conduct v2.1
  • Generic domain examples in tests and fixtures

Performance

  • >100k events/sec throughput
  • <5 MB RSS idle, <20 MB loaded (10k traces)
  • <10 MB binary size (stripped, LTO)
  • <1ms latency per event

Install

# Prebuilt binaries (Linux amd64/arm64, macOS arm64, Windows amd64)
curl -LO https://github.com/robintra/perf-sentinel/releases/download/v0.2.0/perf-sentinel-linux-amd64
chmod +x perf-sentinel-linux-amd64
sudo mv perf-sentinel-linux-amd64 /usr/local/bin/perf-sentinel
# From crates.io
cargo install perf-sentinel
# Docker Hub (linux/amd64, linux/arm64)
docker pull robintrassard/perf-sentinel:0.2.0
docker run --rm robintrassard/perf-sentinel:0.2.0

Also available on GHCR: ghcr.io/robintra/perf-sentinel:0.2.0

Links

Don't miss a new perf-sentinel release

NewReleases is sending notifications on new releases.