Installation
The exporter ships as a single static binary and as a multi-arch container image. Pick whichever fits your environment.
OneFS account
Collection only needs a read-only OneFS account. Grant its role read access to
ISI_PRIV_STATISTICS, ISI_PRIV_QUOTA, ISI_PRIV_DEVICES (the node inventory endpoint
refuses without it), ISI_PRIV_EVENT, ISI_PRIV_SNAPSHOT, ISI_PRIV_SYNCIQ,
ISI_PRIV_SMB, ISI_PRIV_NFS, ISI_PRIV_LICENSE, and ISI_PRIV_SMARTPOOLS. Create a dedicated monitoring user rather than reusing
an admin account.
Container image (recommended)
Images are published to GitHub Container Registry for linux/amd64 and linux/arm64:
Tags follow the release tags (vX.Y.Z) plus latest. Each image carries an SBOM and
provenance attestations (see CI/CD & SBOM).
Run it with your config mounted and the cluster secret in the environment:
docker run --rm \
-p 9444:9444 \
-v "$PWD/config.yaml:/etc/pscale_exporter/config.yaml:ro" \
-e PSCALE1_PASSWORD='your-monitor-password' \
ghcr.io/fjacquet/pscale_exporter:latest
The image runs as a non-root user (uid 10001) and exposes port 9444.
Homebrew (macOS)
The exporter is distributed as a cask (a prebuilt binary, not built from source). Casks are macOS-only — on Linux, use the release tarball or the container image instead.
Install the CLI from the project tap:
That is shorthand for tapping first, if you prefer to see the tap explicitly:
Then run it with your config and the cluster secret in the environment:
Upgrade and uninstall as usual:
Unsigned binary
The cask is not Apple code-signed; its install hook clears the macOS quarantine bit so
Gatekeeper won't block it. If you ever hit a quarantine prompt, run
xattr -dr com.apple.quarantine "$(command -v pscale_exporter)".
Build from source
Requires the Go toolchain pinned in go.mod.
make cli # builds bin/pscale_exporter (injects main.version via ldflags)
export PSCALE1_PASSWORD='your-monitor-password'
./bin/pscale_exporter --config config.yaml
Other useful targets:
| Target | What it does |
|---|---|
make cli |
Build bin/pscale_exporter. |
make test / make test-race |
Run tests (the latter adds -race + coverage). |
make sure |
fmt + vet + test + build + golangci-lint (local convenience). |
make ci |
The full CI gate: gofmt check, go vet, golangci-lint, go test -race, govulncheck. |
make tools |
Install pinned golangci-lint, cyclonedx-gomod, govulncheck, goreleaser. |
make sbom |
Generate a CycloneDX SBOM. |
make release-snapshot |
Run the full GoReleaser pipeline locally, minus publish. |
Release binaries
Tagged releases publish, via GoReleaser, tar.gz archives (per platform), a per-archive
CycloneDX SBOM, and checksums.txt to the
GitHub Releases page. Download the
archive for your platform, verify it against checksums.txt, and place the binary on your
PATH.
Verify it's running
Next: Configuration · Quick Start.