pflex_exporter

command module
v0.11.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

pflex_exporter

CI Release Docs Go Report Card Go Version Latest Release License

A Go exporter for Dell PowerFlex clusters (Gen1 and Gen2). It authenticates to the PowerFlex gateway REST API, collects the full Dell statistic set across all object types, and exposes the metrics via both a Prometheus /metrics endpoint and an OTLP metric push. It replaces Dell's Python + Telegraf + InfluxDB collection layer, following the architecture of nbu_exporter.

Features

  • Dual export: Prometheus pull (/metrics) and OTLP metric push, fed from one shared snapshot.
  • Both generations, auto-detected: Gen1 (mirroring) via querySelectedStatistics, Gen2 (erasure coding) via the v5 metrics API — chosen per cluster from storage-pool layout.
  • Full parity: Gen1's 7 object types plus Gen2's StorageNode, DeviceGroup (PMEM/WRC) and Sdt (NVMe/TCP).
  • Multi-cluster: one process monitors many clusters (mixed generations OK); every metric carries a cluster label.
  • Kubernetes-aware (optional): enrich volume metrics with namespace / persistent_volume_claim / persistent_volume / storage_class and SDC metrics with k8s_node, mapped from the cluster's PVs/Nodes via the PowerFlex CSI driver. Portable — a no-op when run standalone.
  • Scales to large estates: configurable cap on concurrent cluster polling, plus optional decimation (collect slow-changing Gen2 resource types every Nth cycle) to bound API load.
  • Operational: per-cluster OAuth token lifecycle, graceful degradation, stats-path fallback (Gen1↔Gen2), hot config reload (SIGHUP + file watch), snapshot-based health endpoint, optional OTLP tracing.

Quick start

make cli
export PFLEX1_PASSWORD='your-monitor-password'
./bin/pflex_exporter --config config.yaml
# metrics: http://localhost:9445/metrics   health: http://localhost:9445/health

Or install with Homebrew (macOS): brew install --cask fjacquet/tap/pflex_exporter, or with Docker: docker pull ghcr.io/fjacquet/pflex_exporter:latest.

Documentation

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

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

Development

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

Notes

  • Supports PowerFlex 4.5+ (Gen1) and 5.x+ (Gen2), both via the bearer auth flow; generation is auto-detected per cluster.
  • IOPS and bandwidth are already per-second gauges — aggregate with sum/avg in PromQL, never rate().
  • Gen2 uses unit-explicit metric names (_bandwidth_bytes_per_second, _io_size_bytes, _latency_microseconds); Gen1 uses KB-based names.

License

Apache License 2.0 — see LICENSE. Matches Dell's upstream PowerFlex monitoring tooling that this exporter is derived from.

Documentation

Overview

PowerFlex Exporter collects metrics from Dell PowerFlex clusters (Gen1 and Gen2) and exposes them via a Prometheus /metrics endpoint and an optional OTLP metric push.

Usage:

pflex_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.
k8s
Package k8s provides optional Kubernetes workload enrichment for PowerFlex metrics.
Package k8s provides optional Kubernetes workload enrichment for PowerFlex metrics.
logging
Package logging provides centralized structured logging using logrus.
Package logging provides centralized structured logging using logrus.
models
Package models defines the core data structures for the PowerFlex exporter: application configuration and the PowerFlex REST API response types.
Package models defines the core data structures for the PowerFlex exporter: application configuration and the PowerFlex REST API response types.
powerflex
Package powerflex provides the PowerFlex Gen1 REST API client, authentication, data collection, and the dual (Prometheus + OTLP) metric export paths.
Package powerflex provides the PowerFlex Gen1 REST API client, authentication, data collection, and the dual (Prometheus + OTLP) metric 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 PowerFlex exporter.
Package utils provides file and environment helpers for the PowerFlex exporter.

Jump to

Keyboard shortcuts

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