Documentation hub

Starlink integration docs

StarlinkDatadog

Complete metrics list

All 67 operational metrics collected every 15 seconds with the starlink. prefix.

10 min readmetrics

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.


Performance (5)

MetricUnitDescription
starlink.throughput.download_bpsbit/sDownlink throughput
starlink.throughput.upload_bpsbit/sUplink throughput
starlink.latency.pop_ping_msmsRound-trip latency to Starlink PoP
starlink.packet_loss.pop_ping_drop_ratefractionPing drop rate (0.0–1.0)
starlink.network.ethernet_speed_mbpsMbpsNegotiated Ethernet link speed

Signal (2)

MetricDescription
starlink.signal.snr_above_noise_floor1 if SNR is above threshold; 0 otherwise
starlink.signal.snr_persistently_low1 if SNR has been persistently low; 0 otherwise

System Health (3)

MetricUnitDescription
starlink.system.uptime_ssecondSeconds since dish boot
starlink.gps.satellite_countGPS satellites visible
starlink.gps.valid1 if GPS fix is valid; 0 otherwise

Alerts — Core (7)

MetricDescription
starlink.alerts.thermal_throttleDish throttling due to high temperature
starlink.alerts.thermal_shutdownDish shut down from overheating
starlink.alerts.is_heatingCold weather heater active
starlink.alerts.motors_stuckMotors cannot reposition
starlink.alerts.roamingOperating outside registered service area
starlink.alerts.slow_ethernet_speedsEthernet below expected speed
starlink.alerts.install_pendingSoftware update pending reboot

Alerts — Extended (11)

MetricDescription
starlink.alerts.mast_not_near_verticalDish mount tilted — needs repositioning
starlink.alerts.dish_water_detectedWater detected on dish hardware
starlink.alerts.router_water_detectedWater detected on router hardware
starlink.alerts.no_ethernet_linkNo Ethernet connection between dish and router
starlink.alerts.unexpected_locationDish outside registered service area
starlink.alerts.power_supply_thermal_throttlePSU thermally throttling
starlink.alerts.slow_ethernet_speeds_100Ethernet negotiated at 100 Mbps (not 1 Gbps)
starlink.alerts.lower_signal_than_predictedSignal weaker than expected (rain fade indicator)
starlink.alerts.is_power_save_idleDish in power save mode
starlink.alerts.low_motor_currentMotor current abnormally low (hardware issue)
starlink.alerts.obstruction_map_resetObstruction map has been reset

Alignment (8)

MetricUnitDescription
starlink.alignment.boresight_azimuth_degdegreeCurrent azimuth angle
starlink.alignment.boresight_elevation_degdegreeCurrent elevation angle
starlink.alignment.desired_azimuth_degdegreeTarget azimuth
starlink.alignment.desired_elevation_degdegreeTarget elevation
starlink.alignment.attitude_uncertainty_degdegreeAttitude estimate uncertainty
starlink.alignment.tilt_angle_degdegreeMount tilt angle
starlink.alignment.azimuth_error_degdegree
starlink.alignment.elevation_error_degdegree

Obstruction (5)

MetricUnitDescription
starlink.obstruction.fraction_obstructedfractionSky view obstructed (0.0–1.0)
starlink.obstruction.time_obstructed_ssecondSeconds obstructed in measurement window
starlink.obstruction.valid_duration_ssecondMeasurement window duration
starlink.obstruction.patches_valid1 if obstruction patch data is valid
starlink.obstruction.currently_obstructed1 if currently obstructed; 0 otherwise

Power (2)

MetricUnitDescription
starlink.power.dish_wattswattDish power draw
starlink.power.router_wattswattRouter power draw

Outage (3)

MetricUnitDescription
starlink.outage.causeLast outage cause code (0=unknown, 1=no_schedule, 2=obstructed, 3=no_downlink, 4=no_uplink)
starlink.outage.duration_ssecondLast outage duration
starlink.outage.seconds_to_first_slotsecondSeconds until next satellite slot (-1 if none)

Initialization Timing (5)

MetricUnitDescription
starlink.init.first_pop_ping_ssecondBoot → first successful PoP ping (-1 if not achieved)
starlink.init.stable_connection_ssecondBoot → stable connection
starlink.init.rf_ready_ssecondBoot → RF subsystem ready
starlink.init.gps_valid_ssecondBoot → valid GPS fix
starlink.system.software_update_progressfractionSoftware update progress (0.0–1.0)

Subsystem Ready States (6)

MetricDescription
starlink.ready.cadyCADY subsystem ready (requires satellite)
starlink.ready.scpSCP subsystem ready
starlink.ready.l1l2L1/L2 radio subsystem ready
starlink.ready.xphyXPHY subsystem ready
starlink.ready.aapAAP subsystem ready
starlink.ready.rfRF subsystem ready

Location (3) — requires satellite lock

MetricUnitDescription
starlink.location.latitudedegreeGPS latitude of the dish
starlink.location.longitudedegreeGPS longitude of the dish
starlink.location.altitude_mmeterGPS 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.


Tags (automatically applied to all metrics)

TagSourceExample
device_idDish hardware IDdevice_id:ut40989c85-08b2441b-1856f148
hardware_versionDish hardware revisionhardware_version:rev4_catapult_proto1
software_versionDish firmwaresoftware_version:2025.12.04.mr69127.1
countryCountry code (when GPS locked)country:US
mobility_classDish mobility settingmobility_class:0
+ any custom tags from conf.yamlUser-definedvessel:example-cruise-ship

Service Check

NameDescription
starlink.can_connectOK when Agent successfully collects data. CRITICAL on connection failure or no data returned.

Metrics We Did Not Use (~140 fields from the dish)

These fields are available from the dish locally but were intentionally excluded from the integration. Grouped by reason.

Internal Firmware Configuration (not telemetry — rarely changes)

FieldValue ExampleWhy Excluded
config.snow_melt_mode0Config setting, not operational metric
config.apply_snow_melt_modeTrueConfig apply flag
config.location_request_mode0Config setting
config.apply_location_request_modeTrueConfig apply flag
config.level_dish_mode0Config setting
config.apply_level_dish_modeTrueConfig apply flag
config.power_save_start_minutes0Config setting
config.apply_power_save_start_minutesTrueConfig apply flag
config.power_save_duration_minutes0Config setting
config.apply_power_save_duration_minutesTrueConfig apply flag
config.power_save_modeFalseConfig setting
config.apply_power_save_modeTrueConfig apply flag
config.swupdate_reboot_hour3Config setting
config.apply_swupdate_reboot_hourTrueConfig apply flag
config.swupdate_three_day_deferral_enabledFalseConfig setting
config.apply_swupdate_three_day_deferral_enabledTrueConfig apply flag
config.asset_class0Config setting
config.apply_asset_classTrueConfig apply flag

Identity / Metadata (strings — used as tags, not metrics)

FieldValue ExampleWhy Excluded
device_info.idut40989c85-...Used as device_id tag instead
device_info.hardware_versionrev4_catapult_proto1Used as hardware_version tag
device_info.software_version2025.12.04.mr69127.1Used 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_id3f1adcaa-88f7-...Internal build identifier
device_info.generation_number1765506320Internal generation tracking
device_info.hardware_index0Internal hardware index
device_info.board_rev0Board revision — static
device_info.utc_offset_s0UTC offset — not a metric
device_info.is_devFalseDev mode flag
device_info.is_hitlFalseHardware-in-the-loop flag
device_info.dish_cohousedFalseInternal deployment flag

Boot / Crash Info (diagnostic, not real-time telemetry)

FieldValue ExampleWhy Excluded
device_info.bootcount31Cumulative boot count — could add later
device_info.anti_rollback_version0Security versioning
device_info.software_partitions_equalFalseFirmware partition state
device_info.boot.last_reason0Last boot reason code
device_info.boot.last_count0Boot counter
device_info.boot.crash_bootFalseWhether last boot was from crash
device_info.boot.crash_boot_count0Crash 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_side0Internal API version
device_info.boot.api_version_even_side0Internal API version

Redundant / Duplicate Fields

FieldWhy 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

Internal State Codes (enum values meaningful only to SpaceX engineers)

FieldValue ExampleWhy Excluded
disablement_code0Internal disablement reason
dl_bandwidth_restricted_reason0Internal bandwidth restriction code
ul_bandwidth_restricted_reason0Internal bandwidth restriction code
reboot_reason0Internal reboot reason code
software_update_state1Internal update state machine
software_update_stats.software_update_state1Duplicate of above
software_update_stats.reboot_scheduled_utc_time0Scheduled reboot time
software_update_stats.update_requires_rebootFalseInternal flag
class_of_service1Internal service class
alignment_stats.has_actuators2Hardware capability (static)
alignment_stats.actuator_state0Internal actuator state
alignment_stats.attitude_estimation_state0Internal estimation state
account_shard0Internal account routing
high_power_test_modeFalseFactory test mode
is_cell_disabledFalseInternal cell state
is_moving_fast_persistedFalseInternal mobility flag
swupdate_reboot_readyFalseInternal update flag
stow_requestedFalseStow command state
stowedFalseCould add — indicates dish is stowed
overage_rate_limitedFalseCould add — indicates data cap throttling
has_signed_calsTrueInternal calibration flag
seconds_until_swupdate_reboot_possible-1Internal update timing

PLC / Battery Stats (only relevant for battery-equipped dishes)

FieldValue ExampleWhy Excluded
plc_stats.receiving_plcFalsePower line communication active
plc_stats.average_time_to_empty0Battery time to empty
plc_stats.average_time_to_full0Battery time to full
plc_stats.battery_health0Battery health percentage
plc_stats.hardware_revision_id0PLC hardware revision
plc_stats.permanent_failureFalsePLC permanent failure flag
plc_stats.plc_revision0PLC firmware revision
plc_stats.port_1_stats.power0Port 1 power draw
plc_stats.port_1_stats.status0Port 1 status
plc_stats.port_2_stats.power0Port 2 power draw
plc_stats.port_2_stats.status0Port 2 status
plc_stats.port_3_stats.power0Port 3 power draw
plc_stats.port_3_stats.status0Port 3 status
plc_stats.safety_mode_activeFalseSafety mode flag
plc_stats.state_of_charge0Battery state of charge
plc_stats.thermal_throttle_level0PLC thermal throttle level

UPSU / APS Internal Versions (hardware diagnostic, not operational)

FieldValue ExampleWhy Excluded
upsu_stats.app_version0PSU firmware version
upsu_stats.boot_version0PSU boot version
upsu_stats.rom_version0PSU ROM version
upsu_stats.uptime0PSU uptime
upsu_stats.force_dev_signed_allowedFalseSecurity flag
upsu_stats.debug_port_lockedFalseSecurity flag
upsu_stats.stsafe_certs_lockedFalseSecurity flag
upsu_stats.stsafe_keys_lockedFalseSecurity flag
upsu_stats.g0_locked0Security flag
upsu_stats.g0_firmware_version0Internal firmware
upsu_stats.board_rev0Board revision
upsu_stats.g0_board_id0Board ID
aps_stats.app_version0APS firmware version
aps_stats.boot_version0APS boot version
aps_stats.rom_version0APS ROM version
aps_stats.uptime0APS uptime
aps_stats.dish_power0.0Duplicate of upsu_stats.dish_power
aps_stats.force_dev_signed_allowedFalseSecurity flag
aps_stats.debug_port_lockedFalseSecurity flag
aps_stats.board_rev0Board revision

Orientation Quaternion (raw math — we expose derived tilt/azimuth/elevation instead)

FieldValue ExampleWhy Excluded
ned2dish_quaternion.q_scalar1.0Raw quaternion — not human-readable
ned2dish_quaternion.q_x0.0Raw quaternion
ned2dish_quaternion.q_y0.0Raw quaternion
ned2dish_quaternion.q_z0.0Raw quaternion

Other Initialization Timing (less useful than the ones we collect)

FieldValue ExampleWhy Excluded
initialization_duration_seconds.attitude_initialization0Internal timing
initialization_duration_seconds.burst_detected0Internal timing
initialization_duration_seconds.ekf_converged0Internal timing
initialization_duration_seconds.initial_network_entry0Internal timing
initialization_duration_seconds.network_schedule0Internal timing

GPS Extended (beyond what we collect)

FieldValue ExampleWhy Excluded
gps_stats.no_sats_after_ttffFalseInternal GPS state
gps_stats.inhibit_gpsFalseGPS inhibit flag
location.uncertainty_meters0.0Could add — GPS accuracy
location.uncertainty_meters_validFalseValidity flag for above
location.gps_time_s0.0GPS time — not useful as metric
location.enabledFalseUsed as gate for lat/lon submission

Obstruction Extended

FieldValue ExampleWhy Excluded
obstruction_stats.avg_prolonged_obstruction_duration_s0.0Could add — average obstruction event length
obstruction_stats.avg_prolonged_obstruction_interval_snanOften NaN — unreliable
obstruction_stats.avg_prolonged_obstruction_validFalseValidity flag

Outage Extended

FieldValue ExampleWhy Excluded
outage.start_timestamp_ns-1Internal timestamp
outage.did_switchFalseInternal failover flag

Alerts (diagnostics response — different names, same data)

FieldWhy 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

Fields Worth Adding Later (if customers request)

FieldWhy It Could Be Useful
stowedIndicates dish is intentionally stowed — useful for fleet management
overage_rate_limitedIndicates data cap throttling — useful for cost monitoring
device_info.bootcountTrack unexpected reboots over time
location.uncertainty_metersGPS accuracy — useful for maritime positioning
obstruction_stats.avg_prolonged_obstruction_duration_sAverage obstruction event length
plc_stats.state_of_chargeBattery level for battery-equipped dishes
plc_stats.battery_healthBattery degradation tracking

Related tools