A simple Prometheus exporter for monitoring your Starlink dish. Not affiliated with Starlink or SpaceX.
- Detailed metrics: Monitor connection quality, upload and download speeds, latency, obstructions, power use, and more.
- Local only: Collect metrics directly from your dish's local gRPC API.
- Easy to use: Run a prebuilt binary or container image with minimal setup.
Make sure the machine running the exporter can reach your Starlink dish at 192.168.100.1:9200, then start the
container:
docker run --rm -p 127.0.0.1:9451:9451 ghcr.io/joshuasing/starlink_exporter:0.9.2Open localhost:9451 or check the metrics directly:
curl http://localhost:9451/metricsSee Installation for other options and Prometheus for scrape configuration.
Metrics are exposed at /metrics in the Prometheus text format.
View all exported metrics
| Metric name | Description |
|---|---|
starlink_exporter_scrapes_total |
Total number of Starlink dish scrapes |
starlink_exporter_scrape_duration_seconds |
Time taken to scrape metrics from the Starlink dish |
starlink_dish_up |
Whether scraping metrics from the Starlink dish was successful |
starlink_dish_info |
Starlink dish software information |
starlink_dish_uptime_seconds |
Starlink dish uptime in seconds |
starlink_dish_snr_above_noise_floor |
Whether Starlink dish signal-to-noise ratio is above noise floor |
starlink_dish_snr_persistently_low |
Whether Starlink dish signal-to-noise ratio is persistently low |
starlink_dish_uplink_throughput_bps |
Starlink dish uplink throughput in bits/sec |
starlink_dish_downlink_throughput_bps |
Starlink dish downlink throughput in bit/sec |
starlink_dish_downlink_throughput_bps_histogram |
Histogram of Starlink dish downlink throughput over last 15 minutes |
starlink_dish_uplink_throughput_bps_histogram |
Histogram of Starlink dish uplink throughput in bits/sec over last 15 minutes |
starlink_dish_pop_ping_drop_ratio |
Starlink PoP ping drop ratio |
starlink_dish_pop_ping_latency_seconds |
Starlink PoP ping latency in seconds |
starlink_dish_pop_ping_latency_seconds_histogram |
Histogram of Starlink dish PoP ping latency in seconds over last 15 minutes |
starlink_dish_software_update_reboot_ready |
Whether the Starlink dish is ready to reboot to apply a software update |
starlink_dish_gps_valid |
Whether the Starlink dish GPS is valid |
starlink_dish_gps_satellites |
Number of GPS satellites visible to the Starlink dish |
starlink_dish_tilt_angle_deg |
Starlink dish tilt angle degrees |
starlink_dish_boresight_azimuth_deg |
Starlink dish boresight azimuth degrees |
starlink_dish_boresight_elevation_deg |
Starlink dish boresight elevation degrees |
starlink_dish_desired_boresight_azimuth_deg |
Starlink dish desired boresight azimuth degrees |
starlink_dish_desired_boresight_elevation_deg |
Starlink dish desired boresight elevation degrees |
starlink_dish_currently_obstructed |
Whether the Starlink dish is currently obstructed |
starlink_dish_fraction_obstruction_ratio |
Fraction of Starlink dish that is obstructed |
starlink_dish_last_24h_obstructed_seconds |
Number of seconds the Starlink dish was obstructed in the past 24 hours |
starlink_dish_power_input_watts_histogram |
Histogram of Starlink dish power input in watts over last 15 minutes |
starlink_dish_power_input_watts |
Current power input for the Starlink dish |
starlink_dish_location_info |
Dish location information |
starlink_dish_location_latitude_deg |
Location latitude in degrees |
starlink_dish_location_longitude_deg |
Location longitude in degrees |
starlink_dish_location_altitude_meters |
Location altitude in meters above sea level |
starlink_dish_alert_unexpected_location |
Whether the Starlink dish is in an unexpected location |
starlink_dish_alert_install_pending |
Whether a Starlink Dish software update is pending installation |
starlink_dish_alert_is_heating |
Whether the Starlink dish is heating (snow melting) |
starlink_dish_alert_is_power_save_idle |
Whether the Starlink dish is currently in power saving mode |
starlink_dish_alert_signal_lower_than_predicted |
Whether the Starlink dish signal is lower than predicted |
Prebuilt binaries for Linux, macOS, Windows, and OpenBSD are available from GitHub Releases.
You can also use go install to build and install a binary from source:
go install github.com/joshuasing/starlink_exporter@v0.9.2Flags
starlink_exporter --help
# Usage of starlink_exporter:
# -dish string
# Dish address (default "192.168.100.1:9200")
# -listen string
# Listen address (default ":9451")Example
starlink_exporter
# 2024/11/05 12:03:48 INFO Starting Starlink exporter
# 2024/11/05 12:03:48 INFO Connecting to Starlink Dishy address=192.168.100.1:9200
# 2024/11/05 12:03:48 INFO HTTP server listening address=:9451Docker images are published to both GitHub Container Registry (ghcr.io) and Docker Hub.
The quick start uses a fixed release and exposes the exporter only on the local machine. If Prometheus runs elsewhere,
replace 127.0.0.1 with the required host interface. For fully reproducible deployments, pin the image digest published
with each GitHub release.
Configure Prometheus to scrape metrics from the exporter:
scrape_configs:
- job_name: "starlink"
scrape_interval: 3s # This can be whatever you would like.
static_configs:
- targets: ["localhost:9451"]Change scrape_interval and the address to match your setup.
All contributions are welcome! If you have found something you think could be improved, or have discovered additional metrics you would like included, please feel free to participate by creating an issue or pull request!
Follow these steps to build starlink_exporter from source.
Prerequisites
- Go 1.27 or newer
Build
- Make:
make(make deps lint-depsif you are missing dependencies) - Standalone:
go build ./cmd/starlink_exporter/
This project is maintained by Joshua Sing. Contact details are available on joshuasing.dev.
I take the security of my projects very seriously. As such, I strongly encourage responsible disclosure of security vulnerabilities.
If you have discovered a security vulnerability in starlink_exporter, please report it in accordance with the project Security Policy. Never use GitHub issues to report a security vulnerability.
starlink_exporter is distributed under the terms of the MIT License. See LICENSE for details.
This project is an independent, open-source Prometheus exporter and is not associated with, endorsed by, authorised by, or affiliated with SpaceX, Starlink, or any of their subsidiaries or affiliates.
The exporter communicates with the locally exposed gRPC API of a Starlink dish solely to collect monitoring metrics. The Starlink and SpaceX names and product identifiers are used only to identify the products with which this software interoperates; their use does not imply endorsement or affiliation.
Starlink and SpaceX are trademarks of Space Exploration Technologies Corp. All other trademarks belong to their respective owners.