ppdm_exporter

command module
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Jun 14, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

README

ppdm_exporter

CI Release Docs Go Reference Go Report Card Go Version

A Prometheus + OTLP exporter for Dell PowerProtect Data Manager (PPDM). One process polls many PPDM servers on an interval, publishes an immutable snapshot, and serves it at /metrics while optionally pushing the same snapshot over OTLP.

Part of Fred's family of Dell storage/backup exporters (alongside ppdd, pflex, pstore, pscale, nbu); built to the shared exporter-standards.

Quick start

# Build
make cli

# Run against a PPDM server (set the password via env)
export PPDM1_PASSWORD=...
./bin/ppdm_exporter --config config.yaml --debug
# metrics on http://localhost:9102/metrics, health on /health
End-to-end demo (no PPDM required)
make demo        # mockppdm -> exporter -> Prometheus -> Grafana
# Grafana:    http://localhost:3000  (admin/admin) -> "PowerProtect Data Manager — Overview"
# Prometheus: http://localhost:9090
# Exporter:   http://localhost:9102/metrics
make demo-down

The demo uses cmd/mockppdm, a tiny fake PPDM server that returns canned fixtures, so the dashboard populates without real hardware.

Configuration

config.yaml (secrets via ${ENV_VAR} or passwordFile):

server: {host: "0.0.0.0", port: "9102", uri: "/metrics"}
collection:
  interval: "5m"           # snapshot cadence
  timeout: "60s"           # per-server cycle timeout
  lookback: "24h"          # activities query window
  assetAgeThreshold: "24h" # emit per-asset last-copy-age only past this age
otel: {enabled: false, endpoint: "localhost:4317", insecure: true, interval: "30s"}
servers:
  - {name: ppdm-prod-01, host: ppdm01.example.com, port: 8443,
     username: ppdm-monitor, password: "${PPDM1_PASSWORD}", insecureSkipVerify: true}

Config hot-reloads on SIGHUP or file change.

Metrics

See docs/metrics.md. Highlights: ppdm_activity_count, ppdm_activity_bytes_total, ppdm_asset_count, ppdm_asset_unprotected, ppdm_asset_last_copy_age_seconds, ppdm_storage_{unit,system}_*_bytes, ppdm_health_entity_status, ppdm_alert_count, plus ppdm_up / ppdm_collector_up.

Every metric carries a server label, so one exporter serves many PPDM servers.

Development

make ci       # gofmt, vet, golangci-lint, go test -race, govulncheck, build
make sure     # quick local gate (fmt, vet, test, build)
make test     # unit tests

API shapes are provisional. Modeled from the PPDM 19.22.0 REST API reference and cross-checked against the Apache-2.0 dell/powerprotect-data-manager module. Capacity and health-entities fields are unconfirmed by any source — see docs/adr/0009.

Validating against a live PPDM

--once --debug dumps every collected sample (sorted, exposition style); --trace logs every API response body (the login exchange is skipped, so the access token never hits the logs):

./bin/ppdm_exporter --config config.yaml --once --debug --trace 2>trace.log | sort > samples.txt
# samples.txt  → every metric collected (compare with docs/metrics.md)
# trace.log    → raw API payloads for anything missing or suspicious

License

Apache-2.0.

Documentation

Overview

Command ppdm_exporter is a Prometheus + OTLP exporter for Dell PowerProtect Data Manager.

Directories

Path Synopsis
cmd
mockppdm command
Command mockppdm is a minimal fake Dell PowerProtect Data Manager server for end-to-end demos.
Command mockppdm is a minimal fake Dell PowerProtect Data Manager server for end-to-end demos.
report command
Command report captures PowerProtect Data Manager backup history into PostgreSQL for assurance reporting (durable history; Grafana + branded reports read it).
Command report captures PowerProtect Data Manager backup history into PostgreSQL for assurance reporting (durable history; Grafana + branded reports read it).
internal
config
Package config loads and validates the exporter configuration.
Package config loads and validates the exporter configuration.
ppdm
Package ppdm holds the PPDM metric model, snapshot store, modular collectors, and the Prometheus + OTLP export paths.
Package ppdm holds the PPDM metric model, snapshot store, modular collectors, and the Prometheus + OTLP export paths.
ppdmclient
Package ppdmclient is the per-server Dell PowerProtect Data Manager REST API client.
Package ppdmclient is the per-server Dell PowerProtect Data Manager REST API client.
report
Package report captures PPDM backup history into a durable store for assurance reporting.
Package report captures PPDM backup history into a durable store for assurance reporting.
report/delivery
Package delivery sends rendered reports to recipients.
Package delivery sends rendered reports to recipients.
report/render
Package render builds and renders per-tenant backup-assurance reports (HTML + PDF) over the report store's compliance and rule_321110 views.
Package render builds and renders per-tenant backup-assurance reports (HTML + PDF) over the report store's compliance and rule_321110 views.
report/reporttest
Package reporttest spins up a migrated report.Store backed by a real (throwaway) Postgres via testcontainers, for use by tests in sibling packages (e.g.
Package reporttest spins up a migrated report.Store backed by a real (throwaway) Postgres via testcontainers, for use by tests in sibling packages (e.g.
report/schedule
Package schedule computes per-tenant report due-ness (pure cadence functions) and runs the scheduled generate+deliver loop.
Package schedule computes per-tenant report due-ness (pure cadence functions) and runs the scheduled generate+deliver loop.

Jump to

Keyboard shortcuts

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