| extra | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| example.json | ||
| LICENSE | ||
| README.md | ||
Prometheus WireGuard Exporter
Intro
A Prometheus exporter for WireGuard, written in Rust. This tool exports the wg show all dump results in a format that Prometheus can understand. The exporter is very light on your server resources, both in terms of memory and CPU usage.
Prerequisites
- You need Rust to compile this code. Simply follow the instructions on Rust's website to install the toolchain. If you get weird errors while compiling please try and update your Rust version first (I have developed it on
rustc 1.35.0-nightly (8159f389f 2019-04-06)). - You need WireGuard and the
wgCLI in the path. The tool will callwg show all dumpand of course will fail if thewgexecutable is not found. If you want I can add the option of specifying thewgpath in the command line, just open an issue for it.
Compilation
To compile the latest master version:
git clone https://github.com/MindFlavor/prometheus_wireguard_exporter.git
cd prometheus_wireguard_exporter
cargo install --path .
If you want the latest release you can simply use:
cargo install prometheus_wireguard_exporter
Usage
Start the binary with -h to get the complete syntax. The parameters are:
| Parameter | Mandatory | Valid values | Default | Description |
|---|---|---|---|---|
-v |
no | Enable verbose mode. | ||
-p |
no | any valid port number | 9576 | Specify the service port. This is the port your Prometheus instance should point to. |
Once started, the tool will listen on the specified port (or the default one, 9576, if not specified) and return a Prometheus valid response at the url /metrics. So to check if the tool is working properly simply browse the http://localhost:9576/metrics (or whichever port you choose).
Systemd service file
Now add the exporter to the Prometheus exporters as usual. I recommend to start it as a service. It's necessary to run it as root (if there is a non-root way to call wg show all dump please let me know). My systemd service file is like this one:
[Unit]
Description=Prometheus WireGuard Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/prometheus_wireguard_exporter
[Install]
WantedBy=multi-user.target
