1 unstable release
Uses new Rust 2024
| 0.1.1 | Jan 17, 2026 |
|---|
#1439 in Network programming
3.5MB
4.5K
SLoC
Contains (debian package, 2MB) rs-linux-exporter_0.1.1_amd64_ubuntu2204.deb, (debian package, 2MB) rs-linux-exporter_0.1.1_amd64_ubuntu2404.deb
rs-linux-exporter
Prometheus-compatible Linux metrics exporter written in Rust.
Overview
rs-linux-exporter aims to provide the most important Linux host metrics with a simple, safe, and fast Rust implementation. The goal is to avoid external dependencies (especially tools and unsafe languages) to keep the binary small and the software reliable.
Goals
- Provide essential Linux metrics for Prometheus scraping
- Keep the binary size small and startup time fast
- Avoid external tool dependencies and unsafe language bindings
- Favor correctness, safety, and predictable performance
Initial focus metrics (implemented)
- System uptime
- CPU usage and load averages
- Memory usage (total/free/available/buffers/cache)
- Disk usage (total/used/free per filesystem)
- Disk I/O (bytes, ops, time per device)
- Network I/O (bytes, packets, errors per interface)
- Process count and basic system limits
Available Datasources
| Datasource | Description |
|---|---|
procfs |
System stats from /proc (CPU, memory, network, disk I/O) |
cpufreq |
CPU frequency per core |
softnet |
Network soft interrupt statistics |
conntrack |
Connection tracking statistics |
filesystems |
Filesystem usage statistics |
hwmon |
Hardware sensors (temperature, fan, voltage, power) |
thermal |
Thermal zones and cooling devices |
rapl |
Intel/AMD RAPL energy consumption (CPU, DRAM) |
power_supply |
Battery and AC adapter status |
nvme |
NVMe device information (model, serial, state) |
edac |
Memory error detection (correctable/uncorrectable) |
numa |
NUMA node memory and hit/miss statistics |
ipmi |
IPMI sensor readings via /dev/ipmi0 |
mdraid |
Linux software RAID (md) array status |
Kernel Modules for Hardware Monitoring
The hwmon and thermal exporters require appropriate kernel modules to be loaded.
The ipmi exporter requires /dev/ipmi0, typically provided by ipmi_devintf and ipmi_si.
Use sensors-detect from the lm-sensors package to identify which modules your
system needs.
Common Modules
| Module | Description |
|---|---|
coretemp |
Intel CPU temperature sensors |
k10temp |
AMD CPU temperature sensors (Family 10h+) |
nct6775 |
Nuvoton Super I/O chips (common on many motherboards) |
it87 |
ITE Super I/O chips |
drivetemp |
SATA/SAS drive temperatures (kernel 5.6+) |
Quick Setup
# Detect and load modules interactively
sudo sensors-detect
# Or load common modules manually
sudo modprobe coretemp # Intel CPUs
sudo modprobe k10temp # AMD CPUs
sudo modprobe drivetemp # Drive temperatures
# Make persistent at boot
echo -e "coretemp\nk10temp\ndrivetemp" | sudo tee /etc/modules-load.d/sensors.conf
Troubleshooting
If sensors are missing:
- Re-run
sensors-detectand follow its recommendations - Check loaded modules:
lsmod | grep -E 'coretemp|k10temp|nct|it87|drivetemp' - Some motherboard chips (IT8655E, IT8625E, IT8686E) may need out-of-tree drivers
- For additional readings, try boot parameter:
acpi_enforce_resources=lax
See lm_sensors ArchWiki for detailed guidance.
Configuration
Configuration is optional. Create a config.toml file in the working directory.
Example config.toml
# Ignore loop devices in filesystem metrics
ignore_loop_devices = true
# Ignore PPP interfaces in network metrics
ignore_ppp_interfaces = true
# Ignore veth and br-* interfaces in network metrics
ignore_veth_interfaces = true
# Disable specific datasources (will not be polled)
# Available: procfs, cpufreq, softnet, conntrack, filesystems, hwmon, thermal, ipmi, mdraid
disabled_datasources = ["thermal", "conntrack"]
# Restrict /metrics access to these CIDR ranges
allowed_metrics_cidrs = ["127.0.0.0/8"]
# Bind address for the HTTP server
bind = "127.0.0.1:9100"
# Log denied /metrics requests
log_denied_requests = true
# Log 404 requests
log_404_requests = false
Contributing
Please check dependency freshness and binary size when submitting changes.
To install helper tools:
cargo install cargo-outdatedcargo install cargo-bloat
Recommended checks:
cargo outdatedcargo bloat --release
Status
This project is a work in progress.
Dependencies
~25–62MB
~1M SLoC