niltooth / starlink_exporter

📡 Prometheus exporter that exposes metrics from SpaceX Starlink Dish

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

logo

Starlink Prometheus Exporter


A Starlink exporter for Prometheus. Not affiliated with or acting on behalf of Starlink(â„¢)

build Release GitHub go.mod Go version os/arch os/arch os/arch Go Report Card

Usage:

Build

NOTE: https://github.com/fullstorydev/grpcurl is required

go install https://github.com/fullstorydev/grpcurl
make clean && make build

Flags

starlink_exporter is configured through the use of optional command line flags

$ ./starlink_exporter --help                                                                                                        SIGINT(2) ↵  3381  13:34:57
Usage of ./starlink_exporter:
  -dish-address string
    	IP address and port to reach dish (default "192.168.100.1:9200")
  -listen string
    	listening port to expose metrics on (default ":9817")

Binaries

For pre-built binaries please take a look at the releases.

./starlink_exporter [flags]

Setup Prometheus to scrape starlink_exporter

Configure Prometheus to scrape metrics from localhost:9817/metrics

...
scrape_configs
    - job_name: starlink
      scrape_interval: 3s
      scrape_timeout:  3s
      static_configs:
        - targets: ['localhost:9817']
...

Exported Metrics:

# HELP starlink_dish_alert_mast_not_near_vertical Status of mast position
# TYPE starlink_dish_alert_mast_not_near_vertical gauge
# HELP starlink_dish_alert_motors_stuck Status of motor stuck
# TYPE starlink_dish_alert_motors_stuck gauge
# HELP starlink_dish_alert_slow_eth_speeds Status of ethernet
# TYPE starlink_dish_alert_slow_eth_speeds gauge
# HELP starlink_dish_alert_thermal_shutdown Status of thermal shutdown
# TYPE starlink_dish_alert_thermal_shutdown gauge
# HELP starlink_dish_alert_thermal_throttle Status of thermal throttling
# TYPE starlink_dish_alert_thermal_throttle gauge
# HELP starlink_dish_alert_unexpected_location Status of location
# TYPE starlink_dish_alert_unexpected_location gauge
# HELP starlink_dish_backup_beam connected to backup beam
# TYPE starlink_dish_backup_beam gauge
# HELP starlink_dish_bore_sight_azimuth_deg azimuth in degrees
# TYPE starlink_dish_bore_sight_azimuth_deg gauge
# HELP starlink_dish_bore_sight_elevation_deg elevation in degrees
# TYPE starlink_dish_bore_sight_elevation_deg gauge
# HELP starlink_dish_cell_id Cell ID dish is located in
# TYPE starlink_dish_cell_id gauge
# HELP starlink_dish_currently_obstructed Status of view of the sky
# TYPE starlink_dish_currently_obstructed gauge
# HELP starlink_dish_downlink_throughput_bytes Amount of bandwidth in bytes per second download
# TYPE starlink_dish_downlink_throughput_bytes gauge
# HELP starlink_dish_first_nonempty_slot_seconds Seconds to next non empty slot
# TYPE starlink_dish_first_nonempty_slot_seconds gauge
# HELP starlink_dish_fraction_obstruction_ratio Percentage of obstruction
# TYPE starlink_dish_fraction_obstruction_ratio gauge
# HELP starlink_dish_info Running software versions and IDs of hardware
# TYPE starlink_dish_info gauge
# HELP starlink_dish_initial_gateway_id initial gateway id
# TYPE starlink_dish_initial_gateway_id gauge
# HELP starlink_dish_initial_satellite_id initial satellite id
# TYPE starlink_dish_initial_satellite_id gauge
# HELP starlink_dish_last_24h_obstructed_seconds Number of seconds view of sky has been obstructed in the last 24hours
# TYPE starlink_dish_last_24h_obstructed_seconds gauge
# HELP starlink_dish_pop_ping_drop_ratio Percent of pings dropped
# TYPE starlink_dish_pop_ping_drop_ratio gauge
# HELP starlink_dish_pop_ping_latency_seconds Latency of connection in seconds
# TYPE starlink_dish_pop_ping_latency_seconds gauge
# HELP starlink_dish_pop_rack_id pop rack id
# TYPE starlink_dish_pop_rack_id gauge
# HELP starlink_dish_prolonged_obstruction_duration_seconds Average in seconds of prolonged obstructions
# TYPE starlink_dish_prolonged_obstruction_duration_seconds gauge
# HELP starlink_dish_prolonged_obstruction_interval_seconds Average prolonged obstruction interval in seconds
# TYPE starlink_dish_prolonged_obstruction_interval_seconds gauge
# HELP starlink_dish_scrape_duration_seconds Time to scrape metrics from starlink dish
# TYPE starlink_dish_scrape_duration_seconds gauge
# HELP starlink_dish_snr Signal strength of the connection
# TYPE starlink_dish_snr gauge
# HELP starlink_dish_state The current dishState of the Dish (Unknown, Booting, Searching, Connected).
# TYPE starlink_dish_state gauge
# HELP starlink_dish_time_to_slot_end_seconds Seconds left on current slot
# TYPE starlink_dish_time_to_slot_end_seconds gauge
# HELP starlink_dish_up Was the last query of Starlink dish successful.
# TYPE starlink_dish_up gauge
# HELP starlink_dish_uplink_throughput_bytes Amount of bandwidth in bytes per second upload
# TYPE starlink_dish_uplink_throughput_bytes gauge
# HELP starlink_dish_uptime_seconds Dish running time
# TYPE starlink_dish_uptime_seconds gauge
# HELP starlink_dish_valid_seconds Unknown
# TYPE starlink_dish_valid_seconds gauge
# HELP starlink_dish_wedge_abs_fraction_obstruction_ratio Percentage of Absolute fraction per wedge section
# TYPE starlink_dish_wedge_abs_fraction_obstruction_ratio gauge
# HELP starlink_dish_wedge_fraction_obstruction_ratio Percentage of obstruction per wedge section
# TYPE starlink_dish_wedge_fraction_obstruction_ratio gauge

Example Grafana Dashboard:

https://grafana.com/grafana/dashboards/14337

About

📡 Prometheus exporter that exposes metrics from SpaceX Starlink Dish


Languages

Language:Go 92.5%Language:Makefile 7.5%