Skip to content

Collectors & Source IPs

Collectors receive syslog (514/udp) and SNMP traps (162/udp). The packet’s source IP identifies the sending device — but whether the collector sees the real source depends on how it’s run, because Docker’s bridge networking rewrites (NATs) the source to the docker gateway.

Collector deploymentReal source IP?Notes
Linux host, --network host✅ YesRecommended for production.
Kubernetes✅ YeshostNetwork: true on the collector pod/DaemonSet, or a Service with externalTrafficPolicy: Local.
Native desktop app (macOS / Windows)✅ YesRuns the collector directly on the OS network stack. Best for small deployments. macOS .dmg · Windows .msi
Docker bridge (-p 514:514/udp)⚠️ NoSource NAT’d to the docker gateway. Use host networking instead on Linux.
Docker Desktop (macOS / Windows)⚠️ NoThe container runs in a VM; all inbound is NAT’d. Host networking does NOT help here — it joins the VM’s network, not your machine.

On Linux, run the collector with host networking so its sockets see the true sender:

Terminal window
docker run -d --name gridnms-collector --restart unless-stopped \
--network host \
-e GRIDNMS_TUNNEL_URL="https://<your-control-plane>/api/tunnel/ws" \
-e GRIDNMS_STATE_DIR=/var/lib/gridnms \
-v gridnms-collector-state:/var/lib/gridnms \
gridnms/collector:latest-<arch>

A collector may only initiate outbound connections to:

  1. IPs/CIDRs within its explicitly assigned networks (assigned in Admin → Collectors),
  2. the control plane (tunnel server) — always allowed, and
  3. configured external storage endpoints (metric/log sinks).

The network assignment — not device assignment — is the permission boundary. Assigning a device to a collector is a routing convenience; the assigned networks decide what a collector is allowed to reach.