Prometheus exporter for iDirect/VSAT satellite CPE terminals.
Polls the device's JSON HTTP API and exposes metrics at :9877/metrics.
pip install -r requirements.txt
python satellite_exporter.py
# or override defaults:
python satellite_exporter.py --host 10.28.202.133 --exporter-port 9877docker build -t satellite-exporter .
docker run -d \
-p 9877:9877 \
-e SATELLITE_HOST=10.28.202.133 \
--name satellite-exporter \
satellite-exporterAll options are available as environment variables and CLI flags.
| Env var | CLI flag | Default | Description |
|---|---|---|---|
SATELLITE_HOST |
--host |
10.28.202.133 |
Terminal IP / hostname |
SATELLITE_PORT |
--port |
80 |
Terminal HTTP port |
EXPORTER_PORT |
--exporter-port |
9877 |
Port to expose /metrics on |
SCRAPE_INTERVAL |
--scrape-interval |
15 |
Poll interval in seconds |
LOG_LEVEL |
--log-level |
INFO |
Python log level (DEBUG/INFO/…) |
| Metric | Description |
|---|---|
satellite_rx_signal_db |
Current Rx SNR (dB) |
satellite_rx_signal_max_db |
Max Rx signal (dB) |
satellite_tx_capability_db |
Current Tx capability (dB) |
satellite_tx_capability_max_db |
Max Tx capability (dB) |
| Metric | Description |
|---|---|
satellite_quick_status |
0=OK, 1=NoLock, 2=NoSync, 3=NoSatLink, 4=Connecting, 5=Loading |
satellite_link_state |
Satellite link state enum |
satellite_auth_state |
Authentication state enum |
satellite_authz_state |
Authorization state enum |
satellite_user_access |
User access state |
satellite_led_state{led="power|satnet|satlink|tx|rx"} |
LED state (0=off, 1=on, 2=blink, 3=error) |
| Metric | Description |
|---|---|
satellite_lan_port_state{port="1–4"} |
1=connected, 0=disconnected |
satellite_lan_port_speed_mbps{port="1–4"} |
10 / 100 / 1000 / 10000 Mbps |
| Metric | Description |
|---|---|
satellite_lan_rx_bytes_total{port} |
Received bytes |
satellite_lan_tx_bytes_total{port} |
Transmitted bytes |
satellite_lan_rx_packets_total{port} |
Received packets |
satellite_lan_tx_packets_total{port} |
Transmitted packets |
Device counters are 32-bit; the exporter handles wrap-around transparently.
| Metric | Description |
|---|---|
satellite_uptime_seconds |
Device uptime |
satellite_session_id |
Current session number |
satellite_acu_status |
ACU connection status |
satellite_polarizer_status |
RF polarizer switch status |
| Metric | Description |
|---|---|
satellite_scrape_success{endpoint} |
1 = last scrape OK, 0 = failed |
satellite_info{sw_version, hw_version, serial, mac, cpeid, cluster, vsat_id, rtn_filter} 1
scrape_configs:
- job_name: satellite_cpe
static_configs:
- targets: ["localhost:9877"]satellite_rx_signal_db
Add thresholds: 10 dB (yellow / degraded), 8 dB (red / critical).
satellite_quick_status # 0 = healthy
satellite_link_state
satellite_auth_state
satellite_authz_state
Map value 0 to green; any non-zero to orange/red via value mappings.
satellite_led_state{led="satlink"}
satellite_led_state{led="tx"}
satellite_led_state{led="rx"}
rate(satellite_lan_rx_bytes_total{port="1"}[5m])
rate(satellite_lan_tx_bytes_total{port="1"}[5m])
satellite_uptime_seconds
Unit: duration (s), display as d hh:mm:ss.
satellite_scrape_success
Alert if any endpoint stays at 0 for > 2 scrape intervals.