Skip to content

Repository files navigation

Prometheus Eaton UPS Exporter

A Prometheus exporter for Eaton UPS devices. Collects metrics from the REST API of Eaton UPS web interfaces including temperature, system info, input/output power, and battery status. Supports monitoring multiple UPSs with configurable timeouts.

GitHub GitLab license Open Issues Open PRs Contributors donate sponsor

release build Last Commit StageFreight

GHCR Docker pulls Harbor

latest updated size latest-dev updated size

Features:

Extended Metrics Temperature, system info (firmware versions), input/output health, energy tracking, efficiency
Multi-UPS Monitoring Monitor multiple Eaton UPSs from a single exporter instance
Configurable Timeouts --request-timeout and --login-timeout CLI flags for slow management cards
Threading Support Optional multi-threaded scraping for faster collection across multiple UPSs
Grafana Dashboard Included dashboard for out-of-the-box visualization
Self-Signed SSL Support -k flag for UPSs with self-signed certificates

Metrics Exported:

Category Metrics
System Device name, bootloader version, firmware version
Temperature Internal UPS temperature (Celsius)
Input Voltage, frequency, current, voltage min/max/nominal, health status
Output Voltage, frequency, current, apparent power (VA), active power (W), power factor, load ratio, average energy, cumulated energy, efficiency, health status
Battery Voltage, state of charge (%), remaining time (s), health status

Supported Devices:

  • Eaton 5P Series (recent firmwares)
  • Eaton 5PX Series (firmware 3.1.8+)

Quick Start

docker run -d -p 9795:9795 \
  -v ./config.json:/usr/src/app/etc/config.json:ro \
  hlhd/prometheus-eaton-ups-exporter:latest

Configuration

Create a config.json with your UPS credentials:

{
  "MyUPS": {
    "address": "https://10.0.0.1",
    "user": "admin",
    "password": "secret"
  }
}

Usage

prometheus_eaton_ups_exporter.py [-h] -c CONFIG [-w HOST:PORT] [-k] [-t] [-v]
                                 [--login-timeout SECONDS] [--request-timeout SECONDS]

  -c, --config CONFIG         JSON config file with UPS addresses and credentials
  -w, --web.listen-address    Listen address (default: 0.0.0.0:9795)
  -k, --insecure              Allow self-signed SSL certificates
  -t, --threading             Multi-threaded scraping (faster for multiple UPSs)
  -v, --verbose               Verbose logging
  --login-timeout             Login timeout in seconds (default: 3, range: 2-30)
  --request-timeout           API request timeout in seconds (default: 10, range: 2-30)

Defaults

Setting Default
Listen address 0.0.0.0:9795
Login timeout 3 seconds
Request timeout 10 seconds

Kubernetes

The exporter is deployed via a Deployment with the config mounted from a Secret:

containers:
  - name: exporter
    image: hlhd/prometheus-eaton-ups-exporter:latest
    ports:
      - containerPort: 9795
    volumeMounts:
      - name: config
        mountPath: /usr/src/app/etc/config.json
        subPath: config.json
        readOnly: true

Grafana Dashboard

An included Grafana dashboard provides out-of-the-box visualization of all exported metrics.


Image Contents

python 3.14.7

No items

requirements.txt

Credits

  • psyinfra — original exporter
  • nvollmar — temperature, system info, extended metrics, Grafana dashboard
  • adyekjaer — firmware 3.1.8 compatibility

License

Distributed under the ISC License.

About

Rootless container exporting Eaton UPS load, runtime, battery, and I/O metrics to Prometheus, scraped over the UPS web API.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages