A Prometheus exporter for NetBird peer metrics.
NetBird Exporter communicates with the NetBird daemon via gRPC and exports various peer connection metrics in Prometheus format. It's designed to help monitor the health and performance of your NetBird network.
- Exposes NetBird peer connection status
- Tracks connection latency between peers
- Monitors data transfer (bytes sent/received)
- Reports connection types (P2P or relay)
- Supports custom FQDN domain suffix filtering
- NetBird daemon running with socket at
/var/run/netbird.sock - Linux OS (currently the only supported platform)
go install github.com/gocloudio/netbird-exporter/cmd/netbird-exporter@latestdocker pull ghcr.io/gocloudio/netbird-exporter:latest
docker run -p 9101:9101 -v /var/run/netbird.sock:/var/run/netbird.sock ghcr.io/gocloudio/netbird-exporter:latestThe NetBird Exporter can be deployed to Kubernetes using our Helm chart:
# From Helm Repository
helm repo add netbird-exporter https://gocloudio.github.io/netbird-exporter
helm repo update
helm install netbird-exporter netbird-exporter/netbird-exporter
# From OCI Registry (Recommended)
helm install netbird-exporter oci://ghcr.io/gocloudio/netbird-exporter/charts/netbird-exporter --version 0.1.0For more details on the Helm chart, see the chart documentation.
git clone https://github.com/gocloudio/netbird-exporter.git
cd netbird-exporter
go build -o netbird-exporter ./cmd/netbird-exporter
./netbird-exporter./netbird-exporter [flags]--web.listen-address: Address to listen on for web interface and telemetry (default::9101)--web.telemetry-path: Path under which to expose metrics (default:/metrics)--netbird.socket: Address of NetBird daemon socket (default:unix:///var/run/netbird.sock)--ignore-fqdn-domain: Domain suffix to remove from FQDNs (e.g..example.com)
| Metric Name | Description | Labels |
|---|---|---|
netbird_connection |
Connection status (1=connected, 0=disconnected) | local, remote, status, connection_type, local_ip, remote_ip |
netbird_connection_latency |
Connection latency in milliseconds | local, remote |
netbird_connection_received_bytes |
Bytes received from peer | local, remote |
netbird_connection_sent_bytes |
Bytes sent to peer | local, remote |
localandremote: FQDN of the local and remote peers (with domain suffix optionally removed)status: Status of the connection (e.g., "connected", "disconnected")connection_type: Either "p2p" for direct connections or "relay" for relayed connectionslocal_ipandremote_ip: IP addresses of the local and remote peers (CIDR notation removed if present)
Add the following to your prometheus.yml:
scrape_configs:
- job_name: 'netbird'
static_configs:
- targets: ['localhost:9101']A sample Grafana dashboard is available in the dashboards directory.
The Docker images are available from GitHub Container Registry with the following tag patterns:
ghcr.io/gocloudio/netbird-exporter:latest- Latest stable buildghcr.io/gocloudio/netbird-exporter:v1.0.0- Specific versionghcr.io/gocloudio/netbird-exporter:1.0- Major.Minor version
The Helm chart is published in two formats:
- Helm Repository - Available at https://gocloudio.github.io/netbird-exporter
- OCI Registry - Available at
ghcr.io/gocloudio/netbird-exporter/charts/netbird-exporter
New chart versions are automatically published when:
- Changes are made to files in the
charts/directory on the main branch - A tag with the format
chart-v*is pushed (e.g.,chart-v0.2.0)
Contributions are welcome! We appreciate your help in improving the NetBird Exporter. Please feel free to submit a Pull Request.
Here's how you can contribute:
-
Prerequisites:
-
Clone the repository:
git clone https://github.com/gocloudio/netbird-exporter.git cd netbird-exporter -
Build the exporter:
go build ./cmd/netbird-exporter
Ensure your changes pass the existing tests:
go test -v ./...- Fork the repository on GitHub.
- Clone your fork locally (
git clone git@github.com:YOUR_USERNAME/netbird-exporter.git). - Create a new branch for your changes (
git checkout -b feat/my-new-featureorgit checkout -b fix/issue-123). Use a descriptive branch name. - Make your changes and ensure code is formatted with
gofmt. - Add tests for new functionality or bug fixes.
- Run tests locally (
go test -v ./...) to ensure everything passes. - Commit your changes with a clear and concise commit message.
- Push your branch to your fork (
git push origin feat/my-new-feature). - Open a Pull Request from your fork's branch to the
mainbranch of thegocloudio/netbird-exporterrepository. - Describe your changes clearly in the Pull Request description and link to any relevant issues.
Please use the GitHub Issues tracker for reporting bugs or suggesting new features.
- Bug Reports: Provide detailed steps to reproduce the bug, expected behavior, actual behavior, and your environment details (OS, NetBird version, Exporter version).
- Feature Requests: Clearly describe the proposed feature, its use case, and potential benefits.
Please ensure your code is formatted using the standard Go tool gofmt before submitting a pull request. Most Go development environments can be configured to do this automatically.
This project is licensed under the MIT License - see the LICENSE file for details.