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:
- Set
dish_ipto the address reachable from the Agent on port 9200 - Add
tagsso metrics roll up to the vessel, site, or fleet you operate - Restart the Agent
That is the full minimum config. Dashboards, monitors, and service checks ship with the integration.
- dish_ip: 192.168.100.1:9200
tags:
- fleet:my-fleet
- vessel:my-ship
- terminal_location:deck-14-forwardAdd 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.
| Toggle | What it controls | Metrics |
|---|---|---|
collect_performance | Throughput, latency, packet loss, ethernet | 5 |
collect_signal | SNR and signal flags | 2 |
collect_health | Uptime, GPS health | 3 |
collect_alerts_core | Thermal, motors, roaming, ethernet, install | 7 |
collect_alerts_extended | Water detection, mast, PSU, signal quality | 11 |
collect_alignment | Azimuth, elevation, tilt, error | 8 |
collect_obstruction | Obstruction fraction and duration | 5 |
collect_power | Dish and router watts | 2 |
collect_outage | Outage cause, duration, first slot | 3 |
collect_init_timing | Boot timing, software update progress | 5 |
collect_ready_states | Subsystem readiness flags | 6 |
collect_location | GPS 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:
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-shipChanges 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.
| Interval | Tradeoff |
|---|---|
| 15s (default) | Best freshness for alerts, SLOs, and outage forensics |
| 30–60s | Lower 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).
- dish_ip: 192.168.100.1:9200
min_collection_interval: 30
tags:
- fleet:my-fleet
- vessel:my-ship
- terminal_location:bridge-roofYou 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.
# 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