Starlink Integration — Complete Metrics List (67 metrics)
All metrics are gauges collected every 15 seconds by default (min_collection_interval: 15). You can increase the interval per instance to reduce uplink frequency — see Configuration reference. Prefix: starlink.
| Metric | Unit | Description |
|---|
starlink.throughput.download_bps | bit/s | Downlink throughput |
starlink.throughput.upload_bps | bit/s | Uplink throughput |
starlink.latency.pop_ping_ms | ms | Round-trip latency to Starlink PoP |
starlink.packet_loss.pop_ping_drop_rate | fraction | Ping drop rate (0.0–1.0) |
starlink.network.ethernet_speed_mbps | Mbps | Negotiated Ethernet link speed |
| Metric | Description |
|---|
starlink.signal.snr_above_noise_floor | 1 if SNR is above threshold; 0 otherwise |
starlink.signal.snr_persistently_low | 1 if SNR has been persistently low; 0 otherwise |
| Metric | Unit | Description |
|---|
starlink.system.uptime_s | second | Seconds since dish boot |
starlink.gps.satellite_count | — | GPS satellites visible |
starlink.gps.valid | — | 1 if GPS fix is valid; 0 otherwise |
| Metric | Description |
|---|
starlink.alerts.thermal_throttle | Dish throttling due to high temperature |
starlink.alerts.thermal_shutdown | Dish shut down from overheating |
starlink.alerts.is_heating | Cold weather heater active |
starlink.alerts.motors_stuck | Motors cannot reposition |
starlink.alerts.roaming | Operating outside registered service area |
starlink.alerts.slow_ethernet_speeds | Ethernet below expected speed |
starlink.alerts.install_pending | Software update pending reboot |
| Metric | Description |
|---|
starlink.alerts.mast_not_near_vertical | Dish mount tilted — needs repositioning |
starlink.alerts.dish_water_detected | Water detected on dish hardware |
starlink.alerts.router_water_detected | Water detected on router hardware |
starlink.alerts.no_ethernet_link | No Ethernet connection between dish and router |
starlink.alerts.unexpected_location | Dish outside registered service area |
starlink.alerts.power_supply_thermal_throttle | PSU thermally throttling |
starlink.alerts.slow_ethernet_speeds_100 | Ethernet negotiated at 100 Mbps (not 1 Gbps) |
starlink.alerts.lower_signal_than_predicted | Signal weaker than expected (rain fade indicator) |
starlink.alerts.is_power_save_idle | Dish in power save mode |
starlink.alerts.low_motor_current | Motor current abnormally low (hardware issue) |
starlink.alerts.obstruction_map_reset | Obstruction map has been reset |
| Metric | Unit | Description |
|---|
starlink.alignment.boresight_azimuth_deg | degree | Current azimuth angle |
starlink.alignment.boresight_elevation_deg | degree | Current elevation angle |
starlink.alignment.desired_azimuth_deg | degree | Target azimuth |
starlink.alignment.desired_elevation_deg | degree | Target elevation |
starlink.alignment.attitude_uncertainty_deg | degree | Attitude estimate uncertainty |
starlink.alignment.tilt_angle_deg | degree | Mount tilt angle |
starlink.alignment.azimuth_error_deg | degree | |
starlink.alignment.elevation_error_deg | degree | |
| Metric | Unit | Description |
|---|
starlink.obstruction.fraction_obstructed | fraction | Sky view obstructed (0.0–1.0) |
starlink.obstruction.time_obstructed_s | second | Seconds obstructed in measurement window |
starlink.obstruction.valid_duration_s | second | Measurement window duration |
starlink.obstruction.patches_valid | — | 1 if obstruction patch data is valid |
starlink.obstruction.currently_obstructed | — | 1 if currently obstructed; 0 otherwise |
| Metric | Unit | Description |
|---|
starlink.power.dish_watts | watt | Dish power draw |
starlink.power.router_watts | watt | Router power draw |
| Metric | Unit | Description |
|---|
starlink.outage.cause | — | Last outage cause code (0=unknown, 1=no_schedule, 2=obstructed, 3=no_downlink, 4=no_uplink) |
starlink.outage.duration_s | second | Last outage duration |
starlink.outage.seconds_to_first_slot | second | Seconds until next satellite slot (-1 if none) |
| Metric | Unit | Description |
|---|
starlink.init.first_pop_ping_s | second | Boot → first successful PoP ping (-1 if not achieved) |
starlink.init.stable_connection_s | second | Boot → stable connection |
starlink.init.rf_ready_s | second | Boot → RF subsystem ready |
starlink.init.gps_valid_s | second | Boot → valid GPS fix |
starlink.system.software_update_progress | fraction | Software update progress (0.0–1.0) |
| Metric | Description |
|---|
starlink.ready.cady | CADY subsystem ready (requires satellite) |
starlink.ready.scp | SCP subsystem ready |
starlink.ready.l1l2 | L1/L2 radio subsystem ready |
starlink.ready.xphy | XPHY subsystem ready |
starlink.ready.aap | AAP subsystem ready |
starlink.ready.rf | RF subsystem ready |
| Metric | Unit | Description |
|---|
starlink.location.latitude | degree | GPS latitude of the dish |
starlink.location.longitude | degree | GPS longitude of the dish |
starlink.location.altitude_m | meter | GPS altitude of the dish |
Only submitted when location.enabled = True (dish has GPS fix via satellite lock). Will be 0/absent when indoors or without satellite connection.
| Tag | Source | Example |
|---|
device_id | Dish hardware ID | device_id:ut40989c85-08b2441b-1856f148 |
hardware_version | Dish hardware revision | hardware_version:rev4_catapult_proto1 |
software_version | Dish firmware | software_version:2025.12.04.mr69127.1 |
country | Country code (when GPS locked) | country:US |
mobility_class | Dish mobility setting | mobility_class:0 |
+ any custom tags from conf.yaml | User-defined | vessel:example-cruise-ship |
| Name | Description |
|---|
starlink.can_connect | OK when Agent successfully collects data. CRITICAL on connection failure or no data returned. |
These fields are available from the dish locally but were intentionally excluded from the integration. Grouped by reason.
| Field | Value Example | Why Excluded |
|---|
config.snow_melt_mode | 0 | Config setting, not operational metric |
config.apply_snow_melt_mode | True | Config apply flag |
config.location_request_mode | 0 | Config setting |
config.apply_location_request_mode | True | Config apply flag |
config.level_dish_mode | 0 | Config setting |
config.apply_level_dish_mode | True | Config apply flag |
config.power_save_start_minutes | 0 | Config setting |
config.apply_power_save_start_minutes | True | Config apply flag |
config.power_save_duration_minutes | 0 | Config setting |
config.apply_power_save_duration_minutes | True | Config apply flag |
config.power_save_mode | False | Config setting |
config.apply_power_save_mode | True | Config apply flag |
config.swupdate_reboot_hour | 3 | Config setting |
config.apply_swupdate_reboot_hour | True | Config apply flag |
config.swupdate_three_day_deferral_enabled | False | Config setting |
config.apply_swupdate_three_day_deferral_enabled | True | Config apply flag |
config.asset_class | 0 | Config setting |
config.apply_asset_class | True | Config apply flag |
| Field | Value Example | Why Excluded |
|---|
device_info.id | ut40989c85-... | Used as device_id tag instead |
device_info.hardware_version | rev4_catapult_proto1 | Used as hardware_version tag |
device_info.software_version | 2025.12.04.mr69127.1 | Used as software_version tag |
device_info.country_code | (empty) | Used as country tag |
device_info.manufactured_version | (empty) | Manufacturing info, not operational |
device_info.build_id | 3f1adcaa-88f7-... | Internal build identifier |
device_info.generation_number | 1765506320 | Internal generation tracking |
device_info.hardware_index | 0 | Internal hardware index |
device_info.board_rev | 0 | Board revision — static |
device_info.utc_offset_s | 0 | UTC offset — not a metric |
device_info.is_dev | False | Dev mode flag |
device_info.is_hitl | False | Hardware-in-the-loop flag |
device_info.dish_cohoused | False | Internal deployment flag |
| Field | Value Example | Why Excluded |
|---|
device_info.bootcount | 31 | Cumulative boot count — could add later |
device_info.anti_rollback_version | 0 | Security versioning |
device_info.software_partitions_equal | False | Firmware partition state |
device_info.boot.last_reason | 0 | Last boot reason code |
device_info.boot.last_count | 0 | Boot counter |
device_info.boot.crash_boot | False | Whether last boot was from crash |
device_info.boot.crash_boot_count | 0 | Crash boot counter |
device_info.boot.even_side_software_version | (empty) | Partition firmware version |
device_info.boot.odd_side_software_version | (empty) | Partition firmware version |
device_info.boot.api_version_odd_side | 0 | Internal API version |
device_info.boot.api_version_even_side | 0 | Internal API version |
| Field | Why Excluded |
|---|
alignment_stats.boresight_azimuth_deg (diagnostics) | Same value available in status response — we collect from status |
alignment_stats.boresight_elevation_deg (diagnostics) | Same as above |
alignment_stats.desired_boresight_azimuth_deg (diagnostics) | Same as above |
alignment_stats.desired_boresight_elevation_deg (diagnostics) | Same as above |
disablement_code (appears twice) | Enum code — not actionable for ops |
has_actuators (appears twice) | Static hardware capability flag |
| Field | Value Example | Why Excluded |
|---|
disablement_code | 0 | Internal disablement reason |
dl_bandwidth_restricted_reason | 0 | Internal bandwidth restriction code |
ul_bandwidth_restricted_reason | 0 | Internal bandwidth restriction code |
reboot_reason | 0 | Internal reboot reason code |
software_update_state | 1 | Internal update state machine |
software_update_stats.software_update_state | 1 | Duplicate of above |
software_update_stats.reboot_scheduled_utc_time | 0 | Scheduled reboot time |
software_update_stats.update_requires_reboot | False | Internal flag |
class_of_service | 1 | Internal service class |
alignment_stats.has_actuators | 2 | Hardware capability (static) |
alignment_stats.actuator_state | 0 | Internal actuator state |
alignment_stats.attitude_estimation_state | 0 | Internal estimation state |
account_shard | 0 | Internal account routing |
high_power_test_mode | False | Factory test mode |
is_cell_disabled | False | Internal cell state |
is_moving_fast_persisted | False | Internal mobility flag |
swupdate_reboot_ready | False | Internal update flag |
stow_requested | False | Stow command state |
stowed | False | Could add — indicates dish is stowed |
overage_rate_limited | False | Could add — indicates data cap throttling |
has_signed_cals | True | Internal calibration flag |
seconds_until_swupdate_reboot_possible | -1 | Internal update timing |
| Field | Value Example | Why Excluded |
|---|
plc_stats.receiving_plc | False | Power line communication active |
plc_stats.average_time_to_empty | 0 | Battery time to empty |
plc_stats.average_time_to_full | 0 | Battery time to full |
plc_stats.battery_health | 0 | Battery health percentage |
plc_stats.hardware_revision_id | 0 | PLC hardware revision |
plc_stats.permanent_failure | False | PLC permanent failure flag |
plc_stats.plc_revision | 0 | PLC firmware revision |
plc_stats.port_1_stats.power | 0 | Port 1 power draw |
plc_stats.port_1_stats.status | 0 | Port 1 status |
plc_stats.port_2_stats.power | 0 | Port 2 power draw |
plc_stats.port_2_stats.status | 0 | Port 2 status |
plc_stats.port_3_stats.power | 0 | Port 3 power draw |
plc_stats.port_3_stats.status | 0 | Port 3 status |
plc_stats.safety_mode_active | False | Safety mode flag |
plc_stats.state_of_charge | 0 | Battery state of charge |
plc_stats.thermal_throttle_level | 0 | PLC thermal throttle level |
| Field | Value Example | Why Excluded |
|---|
upsu_stats.app_version | 0 | PSU firmware version |
upsu_stats.boot_version | 0 | PSU boot version |
upsu_stats.rom_version | 0 | PSU ROM version |
upsu_stats.uptime | 0 | PSU uptime |
upsu_stats.force_dev_signed_allowed | False | Security flag |
upsu_stats.debug_port_locked | False | Security flag |
upsu_stats.stsafe_certs_locked | False | Security flag |
upsu_stats.stsafe_keys_locked | False | Security flag |
upsu_stats.g0_locked | 0 | Security flag |
upsu_stats.g0_firmware_version | 0 | Internal firmware |
upsu_stats.board_rev | 0 | Board revision |
upsu_stats.g0_board_id | 0 | Board ID |
aps_stats.app_version | 0 | APS firmware version |
aps_stats.boot_version | 0 | APS boot version |
aps_stats.rom_version | 0 | APS ROM version |
aps_stats.uptime | 0 | APS uptime |
aps_stats.dish_power | 0.0 | Duplicate of upsu_stats.dish_power |
aps_stats.force_dev_signed_allowed | False | Security flag |
aps_stats.debug_port_locked | False | Security flag |
aps_stats.board_rev | 0 | Board revision |
| Field | Value Example | Why Excluded |
|---|
ned2dish_quaternion.q_scalar | 1.0 | Raw quaternion — not human-readable |
ned2dish_quaternion.q_x | 0.0 | Raw quaternion |
ned2dish_quaternion.q_y | 0.0 | Raw quaternion |
ned2dish_quaternion.q_z | 0.0 | Raw quaternion |
| Field | Value Example | Why Excluded |
|---|
initialization_duration_seconds.attitude_initialization | 0 | Internal timing |
initialization_duration_seconds.burst_detected | 0 | Internal timing |
initialization_duration_seconds.ekf_converged | 0 | Internal timing |
initialization_duration_seconds.initial_network_entry | 0 | Internal timing |
initialization_duration_seconds.network_schedule | 0 | Internal timing |
| Field | Value Example | Why Excluded |
|---|
gps_stats.no_sats_after_ttff | False | Internal GPS state |
gps_stats.inhibit_gps | False | GPS inhibit flag |
location.uncertainty_meters | 0.0 | Could add — GPS accuracy |
location.uncertainty_meters_valid | False | Validity flag for above |
location.gps_time_s | 0.0 | GPS time — not useful as metric |
location.enabled | False | Used as gate for lat/lon submission |
| Field | Value Example | Why Excluded |
|---|
obstruction_stats.avg_prolonged_obstruction_duration_s | 0.0 | Could add — average obstruction event length |
obstruction_stats.avg_prolonged_obstruction_interval_s | nan | Often NaN — unreliable |
obstruction_stats.avg_prolonged_obstruction_valid | False | Validity flag |
| Field | Value Example | Why Excluded |
|---|
outage.start_timestamp_ns | -1 | Internal timestamp |
outage.did_switch | False | Internal failover flag |
| Field | Why Excluded |
|---|
alerts.dish_is_heating (diagnostics) | Same as alerts.is_heating in status — we collect from status |
alerts.dish_thermal_throttle (diagnostics) | Same as alerts.thermal_throttle in status |
alerts.dish_thermal_shutdown (diagnostics) | Same as alerts.thermal_shutdown in status |
alerts.software_install_pending (diagnostics) | Same as alerts.install_pending in status |
alerts.obstructed (diagnostics) | Same as obstruction_stats.currently_obstructed in status |
| Field | Why It Could Be Useful |
|---|
stowed | Indicates dish is intentionally stowed — useful for fleet management |
overage_rate_limited | Indicates data cap throttling — useful for cost monitoring |
device_info.bootcount | Track unexpected reboots over time |
location.uncertainty_meters | GPS accuracy — useful for maritime positioning |
obstruction_stats.avg_prolonged_obstruction_duration_s | Average obstruction event length |
plc_stats.state_of_charge | Battery level for battery-equipped dishes |
plc_stats.battery_health | Battery degradation tracking |