A Prometheus exporter for VergeOS that collects metrics about VSAN tiers, clusters, nodes, and storage.
-
VSAN Tier Metrics:
- Capacity, usage, and allocation statistics
- Transaction and repair counts
- Drive status, temperature, and health monitoring
- Comprehensive drive state monitoring (online, offline, repairing, initializing, verifying, noredundant, outofspace)
- Node and drive availability tracking
- Performance metrics (read/write operations, IOPS)
- Storage pool utilization and redundancy status
-
Cluster Metrics:
- Total and online nodes
- RAM, CPU, and disk utilization
- Cluster health status and node synchronization
-
Node Metrics:
- CPU and memory usage per node
- Network throughput and latency
- Process and service status
The exporter supports both standard Prometheus text format and OpenMetrics format via content negotiation. Prometheus 2.5.0+ will automatically request OpenMetrics format. Older scrapers continue to receive standard Prometheus text format — no configuration required.
Prebuilt binaries for Linux, Windows, and macOS (both amd64 and arm64) are available on the Releases page.
Note that the version number is included in the filename (e.g., vergeos-exporter_1.1.6_Darwin_x86_64.tar.gz), so ensure you download the correct version for your system.
- Download the appropriate binary for your system
- Extract the archive:
# For Linux/macOS: tar xzf vergeos-exporter_Linux_x86_64.tar.gz # For Windows: # Extract the .zip file using Windows Explorer
- Move the binary to your preferred location
Multi-arch container images (amd64/arm64) are published to GitHub Container Registry:
docker pull ghcr.io/verge-io/vergeos-exporter:latestdocker run --rm -p 9888:9888 \
ghcr.io/verge-io/vergeos-exporter:latest \
-verge.url=https://your-vergeos-host \
-verge.username=your-user \
-verge.password=your-passAvailable tags:
ghcr.io/verge-io/vergeos-exporter:latest— most recent releaseghcr.io/verge-io/vergeos-exporter:1.2.0— specific version (novprefix)
See examples/docker-compose/ for a complete monitoring stack with Prometheus and Grafana.
If you prefer to build from source:
- Clone the repository
- Build the exporter:
go build -o vergeos-exporter./vergeos-exporter [flags]-web.listen-address: Address to listen on for web interface and telemetry (default: ":9888")-web.telemetry-path: Path under which to expose metrics-verge.url: VergeOS API URL (default: "https://localhost"). Also:VERGE_URLenv var-verge.username: VergeOS API username (required). Also:VERGE_USERNAMEenv var-verge.password: VergeOS API password (required). Also:VERGE_PASSWORDenv var-scrape.timeout: Timeout for scraping VergeOS API (default: 30s)
Environment variables are recommended over CLI flags in production to avoid exposing credentials in the process list.
./vergeos-exporter -verge.url="https://VERGEURL" -verge.username="admin" -verge.password="password"Either a Normal or an API user can be used for the connecting user. Connecting user is required to have sufficient rights to query needed stats. Only list and read permissions to the cloud are required. MFA should be disabled. For more information on VergeOS permissions, please visit Permissions
After the exporter is running, you may verify basic connectity and metrics are being exported via the VergeOS exporter HTTP endpoint by either opening a web browser to the configured port or running a curl command such as:
curl -s http://localhost:9888/metricsSee metrics.md for a complete list of exported metrics.
A pre-configured Grafana dashboard is included in the examples/grafana-dashboard.json file. This dashboard provides a comprehensive visualization of VergeOS metrics including:
- VSAN tier performance and health metrics
- Cluster resource utilization and status
- Node health and performance indicators
- Storage metrics and drive status
To import the dashboard:
- Open your Grafana instance
- Click on the + icon in the side menu and select "Import"
- Upload the
grafana-dashboard.jsonfile or copy its contents - Select your Prometheus data source
- Click "Import" to finish
To run the VergeOS Exporter as a systemd service on Linux:
- Create a dedicated user for the exporter (optional but recommended):
sudo useradd -rs /bin/false vergeos_exporter- Copy the binary to a system location:
sudo cp vergeos-exporter /usr/local/bin/
sudo chown vergeos_exporter:vergeos_exporter /usr/local/bin/vergeos-exporter- Create a systemd service file at
/etc/systemd/system/vergeos-exporter.service:
[Unit]
Description=VergeOS Exporter
After=network.target
[Service]
Type=simple
User=vergeos_exporter
Group=vergeos_exporter
ExecStart=/usr/local/bin/vergeos-exporter \
-verge.url=https://VERGEURL \
-verge.username=admin \
-verge.password=PASSWORD
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target- Reload systemd and start the service:
sudo systemctl daemon-reload
sudo systemctl start vergeos-exporter
sudo systemctl enable vergeos-exporter- Check the service status:
sudo systemctl status vergeos-exporterThe exporter will now start automatically on system boot and restart if it crashes.
To run the VergeOS Exporter as a Windows service, we'll use NSSM (Non-Sucking Service Manager):
-
Download NSSM from the official website
-
Extract the NSSM archive and copy the appropriate executable (nssm.exe) to a permanent location:
- Use
nssm64.exefor 64-bit systems (recommended) - Copy it to
C:\Program Files\nssm\nssm.exe
- Use
-
Create a directory for the exporter:
mkdir "C:\Program Files\vergeos-exporter"- Copy the vergeos-exporter executable to this directory:
copy vergeos-exporter.exe "C:\Program Files\vergeos-exporter"- Install the service using NSSM (run Command Prompt as Administrator):
nssm install VergeOSExporter "C:\Program Files\vergeos-exporter\vergeos-exporter.exe"
nssm set VergeOSExporter AppParameters "-verge.url=https://VERGEURL -verge.username=admin -verge.password=PASSWORD"
nssm set VergeOSExporter DisplayName "VergeOS Exporter"
nssm set VergeOSExporter Description "Prometheus exporter for VergeOS metrics"
nssm set VergeOSExporter Start SERVICE_AUTO_START
nssm set VergeOSExporter ObjectName LocalSystem
nssm set VergeOSExporter AppStdout "C:\Program Files\vergeos-exporter\logs\stdout.log"
nssm set VergeOSExporter AppStderr "C:\Program Files\vergeos-exporter\logs\stderr.log"- Start the service:
nssm start VergeOSExporterYou can also manage the service using Windows Service Manager:
- Open Services (services.msc)
- Find "VergeOS Exporter" in the list
- Right-click to Start, Stop, or Restart the service
- View service status and modify startup type
To remove the service:
nssm remove VergeOSExporter confirmThe service will now start automatically when Windows boots. Logs can be found in the specified log directory.
To quickly spin up and run the VergeOS Exporter, Prometheus, Grafana with a demo VergeOS dashboard.
- You can find a ready-to-run example under
examples/docker-compose, along with a README describing setup and usage. This self-contained environment automatically retrieves the tagged binary release for your platform (x86_64 or arm64) and lets you explore VergeOS Exporter without a preconfigured Prometheus or Grafana instance. Docker and Docker Compose are prerequisites.
- Go 1.23 or higher
- Access to a VergeOS instance
go buildUnit tests use mock servers and don't require a live VergeOS instance:
go test ./...Integration tests require credentials. Set them via environment variables or a .env file in the repo root (gitignored):
VERGE_URL=https://your-instance.example.com
VERGE_USERNAME=your-user
VERGE_PASSWORD=your-passThen run with the integration build tag:
go test -tags integration ./tests -v- Tag the release:
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0- GitHub Actions will automatically:
- Build binaries for all supported platforms
- Create a new GitHub release
- Upload the binaries and checksums
- Build and push multi-arch Docker images to GHCR