Documentation hub

Starlink integration docs

StarlinkDatadog

Configuration reference

Agent setup, metric group toggles, and min_collection_interval to control payload frequency.

Configuration reference

SignalWeave Starlink monitoring is configured through a single Datadog Agent file—under conf.d/signalweave_starlink.d/, the same pattern as other native Datadog integrations. No SignalWeave cloud account, no extra agents—just dish IPs, optional tags, and optional metric group toggles.

Availability: The SignalWeave Starlink Datadog Native Integration is in the Datadog Marketplace. Currently, contact your Datadog Account Team to request enablement for your organization before installing.

File location

  • Linux: /etc/datadog-agent/conf.d/signalweave_starlink.d/conf.yaml
  • Windows: C:\ProgramData\Datadog\conf.d\signalweave_starlink.d\conf.yaml

Simple by design

Each Starlink dish is one instances block:

  1. Set dish_ip to the address reachable from the Agent on port 9200
  2. Add tags so metrics roll up to the vessel, site, or fleet you operate
  3. Restart the Agent

That is the full minimum config. Dashboards, monitors, and service checks ship with the integration.

instances:
yaml
  - dish_ip: 192.168.100.1:9200
    tags:
      - fleet:my-fleet
      - vessel:my-ship
      - terminal_location:deck-14-forward

Add one block per dish. Use init_config when the same metric-group defaults should apply to every instance on that Agent.


Control payload with metric groups

By default the check collects every 15 seconds (min_collection_interval: 15). Each cycle delivers curated operational telemetry—not a raw device dump. You can raise the interval on bandwidth-constrained links (maritime, aviation, remote sites) without changing payload size per cycle.

By default all metric groups are on. Disable groups you do not need to shrink the ~1.1 KB per-cycle footprint further.

Set toggles in init_config for fleet-wide defaults, or on an individual instance to override one dish.

ToggleWhat it controlsMetrics
collect_performanceThroughput, latency, packet loss, ethernet5
collect_signalSNR and signal flags2
collect_healthUptime, GPS health3
collect_alerts_coreThermal, motors, roaming, ethernet, install7
collect_alerts_extendedWater detection, mast, PSU, signal quality11
collect_alignmentAzimuth, elevation, tilt, error8
collect_obstructionObstruction fraction and duration5
collect_powerDish and router watts2
collect_outageOutage cause, duration, first slot3
collect_init_timingBoot timing, software update progress5
collect_ready_statesSubsystem readiness flags6
collect_locationGPS lat/lon/alt (requires satellite lock)3

Full collection (default): ~67 metrics · ~1.1 KB per terminal per 15s

Bandwidth-optimized example — keep connectivity and health, drop alignment, power, outage forensics, init timing, ready states, and GPS location:

init_config:
yaml
  collect_alignment: false
  collect_power: false
  collect_outage: false
  collect_init_timing: false
  collect_ready_states: false
  collect_location: false

instances:
  - dish_ip: 192.168.100.1:9200
    tags:
      - fleet:my-fleet
      - vessel:my-ship

Changes take effect after an Agent restart. Start with defaults in production; trim groups only when uplink budget requires it.


Collection interval (min_collection_interval)

Control how often the Agent polls each dish and submits metrics to Datadog. Set on each instance in conf.yaml (seconds). Default: 15.

IntervalTradeoff
15s (default)Best freshness for alerts, SLOs, and outage forensics
30–60sLower uplink usage; still responsive for most fleet ops
120s+Minimal bandwidth; acceptable for stable fixed sites with loose SLOs

Payload size per cycle is unchanged (~1.1 KB with all groups). A longer interval reduces how often that payload is sent—linear savings on daily volume (60s = half the data of 30s).

instances:
yaml
  - dish_ip: 192.168.100.1:9200
    min_collection_interval: 30
    tags:
      - fleet:my-fleet
      - vessel:my-ship
      - terminal_location:bridge-roof

You can set different intervals per dish (e.g. critical terminal at 15s, secondary at 60s). Use the Metrics payload simulator to model fleet impact before changing production values.

For fleet-scale rollout with Ansible, Terraform, or GitOps, see IaC & config management.


Complete reference

The annotated conf.yaml below includes every option—multi-dish examples, tag recommendations, and per-instance overrides.

conf.d/signalweave_starlink.d/conf.yaml
yaml
# All options defined here are available to all instances.
# Use init_config to set defaults that apply to every dish on this Agent.
#
init_config:

  # Metric group toggles — set to false to disable collection fleet-wide.
  # These reduce bandwidth usage on satellite uplinks.
  # Per-instance settings (below) override these.
  # All groups are enabled by default.

  # collect_performance: true        # 5 metrics: throughput, latency, packet loss, ethernet speed
  # collect_signal: true             # 2 metrics: SNR flags
  # collect_health: true             # 3 metrics: uptime, GPS
  # collect_alerts_core: true        # 7 metrics: thermal, motors, roaming, ethernet, install
  # collect_alerts_extended: true    # 11 metrics: water detection, mast, PSU, signal quality
  # collect_alignment: true          # 8 metrics: azimuth, elevation, tilt, error
  # collect_obstruction: true        # 5 metrics: obstruction fraction, duration
  # collect_power: true              # 2 metrics: dish and router watts
  # collect_outage: true             # 3 metrics: outage cause, duration, first slot
  # collect_init_timing: true        # 5 metrics: boot timing, software update progress
  # collect_ready_states: true       # 6 metrics: subsystem readiness flags
  # collect_location: true           # 3 metrics: GPS lat/lon/altitude (requires satellite lock)

# Every instance monitors one Starlink dish.
# Add one instance block per dish reachable from this Agent.
#
instances:

  ## @param dish_ip - string - required
  ## The IP address and port of the Starlink dish on the local network.
  ## Default dish address is 192.168.100.1 on port 9200.
  #
  - dish_ip: 192.168.100.1:9200

    ## @param tags - list of strings - optional
    ## Tags attached to every metric and service check from this instance.
    ## Use these to identify dish location, vessel, fleet, or deployment context.
    ##
    ## The integration automatically adds tags from dish hardware:
    ##   device_id:<hardware_id>
    ##   hardware_version:<version>
    ##   software_version:<version>
    ##   country:<country_code>
    ##   mobility_class:<class>
    ##
    ## Recommended tags for maritime / fleet deployments:
    #
    # tags:
    #   - fleet:my-fleet
    #   - vessel:my-ship
    #   - ship_class:breakaway-plus
    #   - region:caribbean
    #   - route:miami-cozumel-roatan
    #   - terminal_location:deck-14-forward
    #   - env:production

    ## @param collect_* - boolean - optional
    ## Per-dish overrides for metric group toggles (override init_config for this dish).
    #
    # collect_performance: true
    # collect_signal: true
    # collect_health: true
    # collect_alerts_core: true
    # collect_alerts_extended: true
    # collect_alignment: true
    # collect_obstruction: true
    # collect_power: true
    # collect_outage: true
    # collect_init_timing: true
    # collect_ready_states: true
    # collect_location: true

    ## @param min_collection_interval - number - optional - default: 15
    ## How often (in seconds) the Agent polls this dish and submits metrics.
    ## Payload size per cycle is unchanged — a higher interval reduces uplink frequency.
    ## Use 30–60s on bandwidth-constrained links; keep 15s for alert-critical terminals.
    ## https://docs.datadoghq.com/developers/write_agent_check/#collection-interval
    #
    min_collection_interval: 15

  ## --- Multi-dish example ---
  ## Uncomment and repeat for each additional dish.
  #
  # - dish_ip: 192.168.101.1:9200
  #   tags:
  #     - fleet:my-fleet
  #     - vessel:my-ship
  #     - ship_class:breakaway-plus
  #     - region:caribbean
  #     - route:miami-cozumel-roatan
  #     - terminal_location:deck-14-aft
  #     - env:production
  #
  # - dish_ip: 192.168.102.1:9200
  #   tags:
  #     - fleet:my-fleet
  #     - vessel:my-ship
  #     - ship_class:breakaway-plus
  #     - region:caribbean
  #     - route:miami-cozumel-roatan
  #     - terminal_location:deck-15-port
  #     - env:production

  ## --- Bandwidth-optimized example (maritime) ---
  #
  # - dish_ip: 192.168.100.1:9200
  #   tags:
  #     - fleet:my-fleet
  #     - vessel:my-ship
  #     - ship_class:breakaway-plus
  #     - region:caribbean
  #     - route:miami-cozumel-roatan
  #     - terminal_location:bridge-roof
  #     - env:production
  #   collect_alignment: false
  #   collect_power: false
  #   collect_outage: false
  #   collect_init_timing: false
  #   collect_ready_states: false
  #   collect_location: false

Related tools