Skip to content

Repository files navigation

Starlink Prometheus Exporter

Go Reference Go Build Status OpenSSF Scorecard Starlink Dishy Software Version MIT License

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.

Quick start

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.2

Open localhost:9451 or check the metrics directly:

curl http://localhost:9451/metrics

See Installation for other options and Prometheus for scrape configuration.

Metrics

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

Installation

Binaries

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.2

Flags

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=:9451

Docker

Docker 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.

Prometheus

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.

Contributing

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!

Building

Follow these steps to build starlink_exporter from source.

Prerequisites

Build

  • Make: make (make deps lint-deps if you are missing dependencies)
  • Standalone: go build ./cmd/starlink_exporter/

Contact

This project is maintained by Joshua Sing. Contact details are available on joshuasing.dev.

Security vulnerabilities

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.

License

starlink_exporter is distributed under the terms of the MIT License. See LICENSE for details.

Disclaimer

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.

About

Prometheus exporter for monitoring Starlink dish performance, connectivity, and health

Topics

Resources

Security policy

Stars

19 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages