pstore_exporter

command module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 13, 2026 License: Apache-2.0 Imports: 24 Imported by: 0

README

pstore_exporter

CI Release Docs Go Report Card Go Version Latest Release License

A Go exporter for Dell PowerStore arrays. It authenticates to the PowerStore REST API, collects the full performance and capacity statistic set, and exposes the metrics via both a Prometheus /metrics endpoint and an OTLP metric push. It follows the architecture of pflex_exporter.

Features

  • Dual export — Prometheus pull (/metrics) and OTLP metric push, fed from one shared snapshot.
  • Two collection paths, auto-detected — bulk CSV (PowerStoreOS 4.1+) via the compressed stats archive endpoint; per-entity REST fallback for older firmware — chosen automatically per array.
  • Multi-array — one process monitors many arrays; every metric carries an array label.
  • Operational — bearer auth with automatic token refresh, graceful per-array degradation, hot config reload (SIGHUP + file watch), snapshot-based health endpoint, optional OTLP tracing.

Quick start

Install with Homebrew (macOS / Linuxbrew):

brew install fjacquet/tap/pstore_exporter
export PSTORE1_PASSWORD='your-monitor-password'
pstore_exporter --config config.yaml   # bring your own config.yaml
# metrics: http://localhost:9446/metrics   health: http://localhost:9446/health

Or build from source:

make cli
export PSTORE1_PASSWORD='your-monitor-password'
./bin/pstore_exporter --config config.yaml

Or with Docker Compose:

PSTORE1_PASSWORD='your-monitor-password' docker compose up --build

Or with the published image:

docker pull ghcr.io/fjacquet/pstore_exporter:latest

Collection paths

The exporter auto-detects the right path per array at startup:

  • Bulk CSV (PowerStoreOS 4.1+): downloads the compressed stats archive once per cycle and parses all entity types from a single API call. This is the preferred path — low API load, high fidelity.
  • Per-entity REST (fallback): issues one REST query per entity type per cycle. Used when bulk export is unavailable.

The detected path is published as powerstore_array_bulk_api (1 = bulk, 0 = per-entity).

Multi-array

Each metric carries an array label (the configured array name) and a cluster_id label. A single exporter binary can monitor several PowerStore arrays simultaneously:

arrays:
  - name: pstore-prod
    endpoint: "https://10.0.0.1/api/rest"
    username: admin
    password: "${PSTORE1_PASSWORD}"
    insecureSkipVerify: ${PSTORE1_SKIP_CERTIFICATE}
  - name: pstore-dr
    endpoint: "https://10.0.0.2/api/rest"
    username: admin
    password: "${PSTORE2_PASSWORD}"
    insecureSkipVerify: ${PSTORE2_SKIP_CERTIFICATE}

insecureSkipVerify accepts either a native boolean (true/false) or a ${VAR} environment reference resolved at startup, same as endpoint/username/password.

PromQL guidance

powerstore_* IOPS and bandwidth metrics are already per-second gauges computed by PowerStore. Aggregate them with sum/avg in PromQL — never wrap them in rate() or you will double-rate the values.

# Total read IOPS across all volumes on a specific array
sum by (array) (powerstore_volume_read_iops{array="pstore-prod"})

# Average appliance write latency
avg by (appliance_name) (powerstore_appliance_write_latency_microseconds)

# File-system capacity used %
100 * powerstore_file_system_size_used_bytes / powerstore_file_system_size_total_bytes

Documentation

Full docs at https://fjacquet.github.io/pstore_exporter/:

Deployment manifests and examples live in deploy/; Grafana dashboards in grafana/.

Development

make tools         # install golangci-lint, govulncheck (pinned)
make sure          # fmt + vet + test + build + golangci-lint
make ci            # the gate CI runs (adds go test -race + govulncheck)

Validating against a live array — --once --debug dumps every collected sample (sorted, exposition style) and --trace logs raw bulk-API response bodies (method/URL/status + payload; headers — and thus credentials and the DELL-EMC-TOKEN — are never logged):

./bin/pstore_exporter --config config.yaml --once --debug --trace > run.log
grep '^powerstore_' run.log | sort > samples.txt   # diff against docs/metrics.md
grep 'API trace' run.log                           # raw bulk-API payloads

Note: --trace covers only the raw bulk-CSV HTTP path; gopowerstore offers no transport hook for its typed calls.

Notes

  • IOPS and bandwidth are already per-second gauges — aggregate with sum/avg in PromQL, never rate().
  • Metric names use explicit units: _bandwidth_bytes_per_second, _latency_microseconds, _bytes.

License

Apache License 2.0 — see LICENSE.

Documentation

Overview

PowerStore Exporter collects metrics from Dell PowerStore arrays and exposes them via a Prometheus /metrics endpoint and an optional OTLP metric push.

Usage:

pstore_exporter --config config.yaml [--debug] [--once] [--trace]

Directories

Path Synopsis
internal
config
Package config provides hot-reload helpers: SIGHUP handling and file watching.
Package config provides hot-reload helpers: SIGHUP handling and file watching.
dashboards
Package dashboards holds no production code.
Package dashboards holds no production code.
logging
Package logging provides centralized structured logging using logrus.
Package logging provides centralized structured logging using logrus.
models
Package models defines configuration and shared data structures for the PowerStore exporter.
Package models defines configuration and shared data structures for the PowerStore exporter.
powerstore
Package powerstore provides the Dell PowerStore client, metric collection, and the dual (Prometheus + OTLP) export paths.
Package powerstore provides the Dell PowerStore client, metric collection, and the dual (Prometheus + OTLP) export paths.
telemetry
Package telemetry manages the optional OpenTelemetry tracer provider used to diagnose slow collection cycles.
Package telemetry manages the optional OpenTelemetry tracer provider used to diagnose slow collection cycles.
utils
Package utils provides file and environment helpers for the PowerStore exporter.
Package utils provides file and environment helpers for the PowerStore exporter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL