rcooler/omada_exporter

By rcooler

Updated 12 days ago

Prometheus Exporter for TP-Link Omada Controller SDN.

Image
Networking
Monitoring & observability
1

5.8K

rcooler/omada_exporter repository overview

---

🐳 Quick Overview

omada_exporter is a Prometheus exporter for the TP-Link Omada SDN Controller.
It provides real-time metrics for clients, devices, WAN/VPN traffic, and more—via both Web API v2 and OpenAPI.

“rcooler/omada_exporter is a maintained fork of chhaley/omada_exporter (charlie-haley/omada_exporter) with additional metrics and Open API support.”


More info on GitHub


Changelog

[2.1.4][latest] - 2026-04-29

Added
  • Add support for site-to-site VPN.
  • Add additional metrics for site-to-site VPN.
  • Add siteId and siteName to client labels.

[2.1.2] - 2026-04-25

Added
  • Add Docker container health checks with dedicated /healthz and /readyz endpoints.
Fixed
  • Accept larger client VLAN IDs from the Omada API by widening NetworkClient.vid, preventing JSON unmarshal failures for values like 999.
⚠️ omada_client_upload_activity_bytes API is buggy and does not return correct values.

Use:

rate(omada_client_traffic_up_bytes[3m])
rate(omada_client_traffic_down_bytes[3m])

--- --- ---

Installation

Omada Authentication Setup
  • OpenAPI Client – Created via: Settings -> Platform Integration. Assign admin role for full API access.
  • Service User – Create under: Account section at Global level. Assign viewer role for read-only access.
🚀 Docker Run Example
docker run -d \
  --name omada_exporter \
  -p 9202:9202 \
  -e OMADA_HOST="https://192.168.1.20:443" \
  -e OMADA_USER="exporter" \
  -e OMADA_PASS="mypassword" \
  -e OMADA_SITE="Default" \
  -e OMADA_CLIENT_ID="" \
  -e OMADA_SECRET_ID="" \
  rcooler/omada_exporter:latest

📦 Docker Compose Example
services:
  omada_exporter:
    image: rcooler/omada_exporter:latest
    container_name: omada_exporter
    ports:
      - "9202:9202"
    environment:
      OMADA_HOST: "https://192.168.1.20:443"
      OMADA_USER: "exporter"
      OMADA_PASS: "mypassword"
      OMADA_SITE: "Default"
      OMADA_CLIENT_ID: ""
      OMADA_SECRET_ID: ""

      OMADA_MQTT_ENABLED: "true"
      OMADA_MQTT_BROKER: "tcp://homeassistant.local:1883"
      OMADA_MQTT_USER: "omada_exporter"
      OMADA_MQTT_PASS: "mqtt-password"
      OMADA_MQTT_CLIENT_ID: "omada_exporter"
      OMADA_MQTT_TOPIC_PREFIX: "omada_exporter"
      OMADA_MQTT_DISCOVERY_PREFIX: "homeassistant"
      OMADA_MQTT_INTERVAL: "60"
      OMADA_MQTT_RETAIN: "true"
      OMADA_MQTT_EXPIRE_AFTER: "180"
    restart: unless-stopped
📡 Prometheus Scrape Job Example

Add the following job to your prometheus.yml configuration:

  - job_name: 'Omada'
    scrape_interval: 30s
    scrape_timeout: 30s
    static_configs:
      - targets: ['omada_exporter:9202']

Make sure omada resolves to your container or host running omada_exporter.

Environment Variables
VariablePurpose
OMADA_HOSTThe hostname of the Omada Controller, including protocol.
OMADA_USERUsername of the Omada user you'd like to use to fetch metrics.
OMADA_PASSPassword for your Omada user.
OMADA_SITESite you'd like to get metrics from. (default: "Default")
OMADA_PORTPort on which to expose the Prometheus metrics. (default: 9202)
OMADA_INSECUREWhether to skip verifying the SSL certificate on the controller. (default: false)
OMADA_REQUEST_TIMEOUTTimeout when making requests to the Omada Controller. (default: 15)
OMADA_INCLUDE_PORT_ACTIVITY_LABELInclude the port_activity_label label on port metrics. (default: true)
OMADA_TRACK_PORT_METRICSExport per-port metrics. (default: true)
OMADA_TRACK_CLIENT_METRICSExport per-client metrics. (default: true)
OMADA_DISABLE_GO_COLLECTORDisable Go collector metrics. (default: true)
OMADA_DISABLE_PROCESS_COLLECTORDisable process collector metrics. (default: true)
LOG_LEVELApplication log level. (default: "error")
OMADA_CLIENT_IDOptional Client ID for Open API authentication (WAN & VPN metrics)
OMADA_SECRET_IDOptional Secret ID for Open API authentication (WAN & VPN metrics)
PS

Last tested on OC200, firmware 6.2.0.12 (ER8411, SG3428X-M2, SG3210XHP-M2, SG2210MP, EAP772-Outdoor, EAP650-Outdoor, EAP225-Outdoor, EAP725-Wall)

OpenApi docs: https://use1-omada-northbound.tplinkcloud.com/doc.html

Tag summary

Content type

Image

Digest

sha256:dc220d2f4

Size

8.8 MB

Last updated

12 days ago

docker pull rcooler/omada_exporter