proctap scrapes high-signal, low-overhead metrics straight from /proc and /sys, and exposes them at GET /metrics for Prometheus scraping. Built in Rust with axum and the Prometheus client crate.
- diskstat — Block device I/O stats from /sys/class/block//stat.
- ethtool — Driver/firmware NIC counters via
ethtool -S <iface>. - interrupts — IRQ distribution from /proc/interrupts (per IRQ × CPU).
- memstat — Memory info from /proc/meminfo.
- netdev_stat — Per-interface NIC stats from /sys/class/net//statistics/*.
- proc — Process scheduler stats from /proc//sched (per matching process).
- queues — Per-queue NIC sysfs values from /sys/class/net//queues/{rx,tx}-*/.
- snmp — Kernel TCP/UDP/IP counters from /proc/net/snmp.
- softirqs — SoftIRQ totals from /proc/softirqs (per CPU).
- softnet_stat — Per-CPU networking backlog stats from /proc/net/softnet_stat.
# Requires Rust (stable)
cargo build --release
# Run the exporter
./target/release/proctap \
--interval 5 \
--proc-prefixes pingScrape at: http://<host>:9000/metrics.
Finding the right
--proc-prefixes: it matches Linuxcomm(truncated to 15 chars). Check with:cat /proc/<PID>/commExample: if you runping 127.0.0.1, the comm is likelyping.
| Flag | Default | Description |
|---|---|---|
--interval |
5 |
Collection interval (seconds). |
--proc-prefixes |
(none) | Match comm; exporter publishes per-PID metrics for that process. |
--monitor |
(optional) | Comma-separated subset, e.g. sched,net,disks,interrupts,meminfo. |
Note: Linux truncates
commto 15 chars.